| 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: 14 let
|
|||
0
).