Autor Zpráva
hgf
Profil *
Lze nahradit
$vysledek_teplota = mysql_query('SELECT teplota FROM teploty');
$vysledek_poznamka = mysql_query('SELECT poznamka FROM teplota');
a
$poznamka = mysql_fetch_array($vysledek_poznamka)['poznamka'];
$teplota = str_replace('.', ',', mysql_fetch_array($vysledek_teplota)['teplota']);
něčím takovýmto
$vysledek = mysql_query('SELECT teplota, poznamka FROM teploty');

$poznamka = mysql_fetch_array($vysledek)['poznamka'];
$teplota = str_replace('.', ',', mysql_fetch_array($vysledek)['teplota']);
?
Jan Tvrdík
Profil
Ne, protože každé volání mysql_fetch_array vrátí jiný výsledek (jiný řádek). Musel bys to napsat třeba takto:

$vysledek = mysql_query('SELECT teplota, poznamka FROM teploty');
$radek = mysql_fetch_assoc($vysledek);
if ($radek) {
    $poznamka = $radek['poznamka'];    
    $teplota = str_replace('.', ',', $radek['teplota']);
}

Mimochodem mysql_* funkce jsou už zastaralé.
hgf
Profil *
Když mám
$vysledek_teplota = mysql_query('SELECT teplota FROM teploty'); // výběr 'teplota' z tabulky 'teplota'
$vysledek_poznamka = mysql_query('SELECT poznamka FROM teploty'); // výběr 'poznamka' z tabulky 'teplota'*/
$radku = mysql_num_rows($vysledek_teplota); // počet řádků výpisu

for($i = 1; $i < $radku + 1; $i++)
{
    $poznamka = mysql_fetch_array($vysledek_poznamka)['poznamka']; // uložení poznámky
    $teplota = str_replace('.', ',', mysql_fetch_array($vysledek_teplota)['teplota']); // uložení teploty a nahrazení '.' za ','
    echo('<div id="'.$poznamka.'">'.$teplota.' &deg;C</div>'); // výpis
}
jak tedy upravit výpis, abych nemusel 2x používat mysql_query? A co se používá místo mysql_*?
Jan Tvrdík
Profil
$vysledek = mysql_query('SELECT teplota, poznamka FROM teploty');
while ($radek = mysql_fetch_assoc($vysledek)) {
    $poznamka = $radek['poznamka'];    
    $teplota = str_replace('.', ',', $radek['teplota']);
    ...
}

A co se používá místo mysql_*?
Co takhle si přečíst ten odkázaný článek?
peta
Profil
Jan Tvrdík: PDO varianta mi prijde priserna na orientaci a neusporna. Mysqli v tom clanku vypada pouzitelne.
"pravděpodobně bude z PHP odstraněno" - proc by to nekdo delal v nejblizsich 10-20 letech? :)
Jan Tvrdík
Profil
peta:
PDO varianta mi prijde priserna na orientaci a neusporna
Co ti na následujícím kódu připadá příšerné na orientaci a neúsporné?
$vysledek = $pdo->query('SELECT teplota, poznamka FROM teploty');
while ($radek = $vysledek->fetch(PDO::FETCH_ASSOC)) {
    $poznamka = $radek['poznamka'];    
    $teplota = str_replace('.', ',', $radek['teplota']);
    ...
}
peta
Profil
$vysledek->fetch(PDO::FETCH_ASSOC)
lionel messi
Profil
peta:
proc by to nekdo delal v nejblizsich 10-20 letech?
A prečo by tak nerobil?
Tori
Profil
peta:
$vysledek->fetch(PDO::FETCH_ASSOC)
Neúsporné? Jako v porovnání s voláním mysql_fetch_array($result, MYSQL_ASSOC) nebo tím, že tahle funkce má ještě dvě další jako aliasy?
peta
Profil
Tori: Jj, presne, ty aliasy, mysql_fetch_assoc. Uplne nesnasim velka pismena v kodu. Navic, v mych zapises je pouzivam vyhradne pro globalni promenne. Kdyz bych mel na kazdem druhem radku PDO::FETCH_ASSOC, byl bych z toho nestastny. Proc tak nepodstatnou vec zvyraznovat velkymi pismeny! Kdo to vymyslel? Nechci znat, pryc ode mne.

lionel messi: Dyt vetsina php kodu pouziva php 4+ a 5.0. Takze zablokovanim by doslo k tomu, ze by lide hromadne instalovali starsi php, protoze prepsat na serveru 1000 programu fakt problem a vypnout 1000 zakaznikum stranky, to take neni cool.
lionel messi
Profil
peta:
Dyt vetsina php kodu pouziva php 4+…
Tomu veľmi neverím, nie je drvivá väčšina už na 5?
Jan Tvrdík
Profil
peta:
Ti jsi fakt chudák. Mimochodem ten kód bude fungovat i bez toho parametru, tedy stačí while ($radek = $vysledek->fetch()) {
Tori
Profil
peta:
Uplne nesnasim velka pismena v kodu. Navic, v mych zapises je pouzivam vyhradne pro globalni promenne.
Tož, nic nebrání tomu, includovat pokaždé supercool "PHP reset":
<?php
define('e_notice', E_NOTICE);
define('mysql_assoc', MYSQL_ASSOC);
// ... atd.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0