Autor Zpráva
Milan1236000
Profil
Zdravím,
mám následující dotaz do databáze:
<?php
...
$vysledek_interpret = $vysledek->query("
SELECT  `x`.Interpret, `x`.Url
FROM    `y` JOIN `x` ON `y`.Interpret_ID=`x`.Id
WHERE   `y`.Url=\"$getURL\"
");
$zaznam_interpret = $vysledek_interpret->fetch_object();
... ?>
...
Interpret: <?php if($zaznam_interpret->Interpret_ID>0) printf("<a href=\"/interpreti.php?interpret=%s\">%s</a>", $zaznam_interpret->Url, $zaznam_interpret->Interpret); ?>
V tabulce y může být u některé položky v sloupci Interpret_ID hodnota NULL, jinak jsou tam čísla, proto jsem chtěl udělat podmínku, kde by se položka na web vypsala, jen kdyby hodnota byla větší než 0 (=NULL?), ale zdá se, že tohle nefunguje. Jak se to dá jinak vyřešit?
Díky.
Alphard
Profil
Null neznamená 0, značí neznámou hodnotu, která by se do PHP měla přenést jako prázdný řetězec. Avšak po přetypování na číslo by tam opradu měla být nula a ta podmínka by fungovat měla.
Doporučuji pomocí var_dump vypsat, co ta proměnná skutečně obsahuje.
Kajman
Profil
V dotaze sloupec Interpret_ID nevypisujete.
Milan1236000
Profil
Alphard:
Zkusil jsem tedy:
Interpret: <?php $i=var_dump($zaznam_interpret->Interpret_ID); if ($i=="null") echo "chybí"; else echo "je"; ?>
To mi ale taky nefunguje, navíc se na stránku barevně vypíše hodnota null a chyba Notice: Undefined property: stdClass::$Interpret_ID in....

Kajman:
Jak tedy mám jinak dostat hodnotu ze sloupce Interpret_ID místo $zaznam_interpret->Interpret_ID?
Díky.
tiso
Profil
Milan1236000: „Jak tedy mám jinak dostat hodnotu ze sloupce Interpret_ID
Najskôr ju musíš vybrať z databázy:
SELECT  `x`.Interpret, `x`.Url, `y`.Interpret_ID...
Milan1236000
Profil
tiso:
Díky, už jsem to tam přidal, nyní se na stránku vypisuje např. string '15' (length=2) a daný interpret. Pokud interpret není, na stránku se i přes podmínku snaží interpret vypsat a objeví se Notice: Trying to get property of non-object in....

Předělal jsem to proto trochu do podoby:
Interpret: <?php $i=$zaznam_interpret->Interpret_ID; if (is_null($i)) echo "chybí"; else echo "je"; ?>
Nyní už se to zobrazuje správně, ale zase jen u interpretů, kteří existují.
Kajman
Profil
Pokud ten dotaz má vrátit i řádky bez možného spojení s tabulkou x, použijte vnější spojení, tedy v tomto případě použijte y LEFT JOIN x.
Milan1236000
Profil
Kajman:
Tak bohužel ani LEFT nepomohlo, pořád se zobrazuje Notice: Trying to get property of non-object in....
Kajman
Profil
Kontrolujte si, zda db vrátila nějaký řádek. Např.
if(zaznam_interpret = $vysledek_interpret->fetch_object())
{ echo 'v zaznam_interpret je objekt a muzu s prvnim radkem pracovat' }
Milan1236000
Profil
Kajman:
Nakopíroval jsem na stránku kod:
if($zaznam_interpret = $vysledek_interpret->fetch_object()) echo 'v zaznam_interpret je objekt a muzu s prvnim radkem pracovat ';
Zobrazí se to opět jen v případě, kdy interpret existuje.
___
Tohle se zobrazovalo jen u pár stránek, chybu jsem měl v databázi. V URL jsem měl neplatný znak, proto to nešlo. Vše už jde.
Ještě jednou díky moc.

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: