podmínka v while cyklu?
10 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Zdravím, takhle testuju hodnotu cookie, ale očekávané reakce se dočkám pouze, pokud cookie odpovídá údaji z db. V opačném případě se zobrazí jen prázdná obrazovka. Nenapadá někoho proč to? $sql = mysql_db_query("svi","SELECT * FROM autori WHERE login = '$_COOKIE[TestCookie]'"); while($data = mysql_fetch_assoc($sql)){ if (($data['login']) == ($_COOKIE['TestCookie'])) echo 'jj'; else echo 'neee'; }
-
Řekl bych, že je to proto, že SQL dotaz vrátí prázdný objekt (nic nenajde v db) a pak podmínka ve while (mysql_fetch_assoc) bude false a přeskočí obě echa. Tedy obrazovka zůstane prázdná.
-
Díky za reakci. Pokud ale nic nenajde, tak přece nesplní tu podmínku a pro všechny další případy má vypsat to neee. Zkusil jsem bezvýsledně: $sql = mysql_db_query("svi","SELECT * FROM autori WHERE login = '$_COOKIE[TestCookie]'"); while($data = mysql_fetch_assoc($sql)){ if (($data['login']) == ($_COOKIE['TestCookie'])) echo 'jj'; elseif (empty($data['login'])) echo 'neee'; } echo '<hr>'.$_COOKIE['TestCookie'];
-
Pokud nic nenajde, tak se hlavně neprovedou příkazy, které jsou navázány na while. Tudíž už na tu podmínku if vůbec nedojde. http://mirrors.inway.cz/manual/cs/control-structures.while.php "Někdy, když je výraz ve while ohodnocen jako FALSE již při vstupu do cyklu, vnořený kód se neprovede vůbec."
-
to by potom mělo fungovat tohle, ne? $sql = mysql_db_query("svi","SELECT * FROM autori WHERE login = '$_COOKIE[TestCookie]'"); if (empty($sql)) echo 'neee'; else{ while($data = mysql_fetch_assoc($sql)){ if (($data['login']) == ($_COOKIE['TestCookie'])) echo 'jj'; } }
-
Proč to nezkusíš?
-
já to zkusil a nešlo to...
-
Víš, "nešlo to" je naprosto prádná fráze. Nedává jakoukoli informaci, které by se dalo chytit a tak ti asi nikdo nepomůže. Je třeba napsat, co to dělalo, co to nedělalo apod. Jinak myslím, že na proměnnou $sql (typu resource) nemůžeš aplikovat funkci emtpy. Zkus to přes mysql_num_rows: if (mysql_num_rows($sql) == 0) echo 'neee';
-
nooo, díky, nenapadlo mě, že to s empty nepůjde.
-
A co takhle $sql = mysql_db_query("svi","SELECT * FROM autori WHERE login = '". $_COOKIE["TestCookie"] ."'");