Autor Zpráva
glararan
Profil *
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
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
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 *
Aha, takže můžete mi to prosím opravit? Já vážně na PHP moc nejsem.
glararan
Profil *
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 ).

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