Autor | Zpráva | ||
---|---|---|---|
glararan Profil * |
#1 · Zasláno: 5. 11. 2011, 22:08:53
Zdravim, mám kod:
function accountlevel() { include("./configs/main.php"); mysql_select_db($db['realm'], $con) or die(mysql_error()); $query = mysql_query("SELECT * FROM account WHERE username = '".$_SESSION['username']."'"); while($row = mysql_fetch_array($query)) { $accid = $row['id']; } $query2 = mysql_query("SELECT * FROM account_access WHERE id = '".$accid."'"); $rows = mysql_num_rows($query2); while($row2 = mysql_fetch_array($query2)) { if($rows > 0) { echo $row2['gmlevel']; } else { echo "0"; } } } Co to má dělat? Pokuď nic neselectne má vypsat 0, pokuď ano, vypíše proměnu $row['gmlevel'], která funguje při vypsání, ovšem, když smažu z tabulky data pro daný účet. Nic se nevypíše žádná nula, problém je někde v podmínce a já nemůžu příjít jakej. Když požádám bez podmínky o vypsání $rows tak to vypíše 0 pokuď tam není záznam. |
||
Alphard Profil |
#2 · Zasláno: 5. 11. 2011, 22:14:47
Znáte vůbec základy? Ten kód vypadá jako bezmyšlenkovitě slepený.
K vyhodnocování té podmínky v daném případě vůbec nedojde, protože cyklus while nemá nad čím iterovat (db nic nevrátí). |
||
Tori Profil |
#3 · Zasláno: 5. 11. 2011, 22:18:02
glararan:
„problém je někde v podmínce a já nemůžu příjít jakej“ Když nejsou žádné odpovídající záznamy, mysql_fetch_* vrátí false, takže kód uvnitř while se vůbec neprovede. Jinak nechcete to udělat jedním dotazem? mysql_query("SELECT account_access.* FROM account INNER JOIN account_access ON account.accid = account_access.id WHERE account.username = '" . $_SESSION['username'] . "'"); |
||
glararan Profil * |
#4 · Zasláno: 5. 11. 2011, 22:22:07
Aha, takže můžete mi to prosím opravit? Já vážně na PHP moc nejsem.
|
||
glararan Profil * |
#5 · Zasláno: 5. 11. 2011, 22:27:32
Dobrý, už jsem si to opravil..místo array jsem dal assoc
|
||
hexageek Profil |
tohle tu uz probiha v jinym vlakne
no chybu mate ve zpracovani vystupu z funkce mysql_num_rows() , pokud totiz dany select nevrati zadne hodnoty tak mysql_num_rows rozhodne nevraci 0 . Pokud je chyba nebo nejsou zadne zaznamy vraci false . je lepsi proto pouzivat nasledujici konstrukce if (!mysql_num_rows($result)) { echo "tu nic neni\n"; } else { while ($row = mysql_fetch_assoc($result)) { //tu JSOU DATA } } hodne programatoru to odflakne if (@mysql_num_rows($result)>0) {} ... pokud vymazatee data vase hodnota $rows nikdy nebude obsahovat 0 ale jen false; Moderátor Alphard: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
Časová prodleva: 12 let
|
0