Autor | Zpráva | ||
---|---|---|---|
Slower Profil * |
#1 · Zasláno: 29. 3. 2012, 18:13:20
Zdravím,
mám tu menší problém...a hlášky typu : Notice: Undefined variable: kniha_id in C:\www\doma\databaze.php on line 70 Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\www\doma\databaze.php on line 72 Warning: extract() expects parameter 1 to be array, null given in C:\www\doma\databaze.php on line 82 Notice: Undefined variable: kniha_cena in C:\www\doma\databaze.php on line 83 Notice: Undefined variable: kniha_name in C:\www\doma\databaze.php on line 83 tady je zdroják: function getknihaDetail() { $sql = "SELECT * FROM tbl_kniha WHERE kniha_id = $kniha_id "; $result = mysql_query($sql); // odesle dotaz a vrati vysledek $row = mysql_fetch_array($result); // nacte vysledek a ulozi do pameti return $row; // vrati vyslednou hodnotu } $product = getknihaDetail(); // do promene kniha pridame funkci extract($product); // extrahuje hodnotu promene echo $kniha_name . $kniha_cena; Když pridám podmínku WHERE do prikazu SELECT tak kod prestane fungovat a hodnoty promených se mi nezobrazi:( píše to, že nemám nadefinovanou promenu kniha_id ale ta preci je ne? viz. toto WHERE kniha_id = $kniha_id nebo se mýlím ? Prosím o radu Děkuji |
||
Someone Profil |
#2 · Zasláno: 29. 3. 2012, 18:16:39
WHERE kniha_id = '".$kniha_id."' |
||
Slower Profil * |
#3 · Zasláno: 29. 3. 2012, 18:25:55
Someone:
díky za pomoc odstranilo hlašku Warning: mysql_fetch_array() ........ ale porad to nejde Notice: Undefined variable: kniha_id Warning: extract() expects parameter 1 to be array, boolean given in C:\www\doma\databaze.php on line 82 Notice: Undefined variable: kniha_cena in C:\www\doma\databaze.php on line 83 |
||
Someone Profil |
Co takto:
function getknihaDetail() { $sql = "SELECT * FROM tbl_kniha WHERE kniha_id = '".$kniha_id."'"; $result = mysql_query($sql); $row = mysql_fetch_array($result); return $row['cena']; } echo $kniha_cena.getknihaDetail(); |
||
Slower Profil * |
#5 · Zasláno: 29. 3. 2012, 18:45:00
Když udelam to co jsi poslal, porad to hlasi upozorneni, ze neni nadefinovana promena kniha_id a kniha_cena
toto: Notice: Undefined variable: kniha_id.... |
||
Someone Profil |
#6 · Zasláno: 29. 3. 2012, 18:48:19
Tato chyba je způsobena někde jinde. Kde definuješ proměnnou $kniha_id
|
||
Slower Profil * |
#7 · Zasláno: 29. 3. 2012, 18:54:18
ja ji prave nikde nedefinuji...ja jsem myslel, že když udelam toto
$sql = "SELECT * FROM tbl_kniha WHERE kniha_id = $kniha_id "; |
||
Someone Profil |
To je nesmysl, tímto:
WHERE kniha_id = '$kniha_id' . Hledáš řádek v tabulce, kde se sloupce kniha_id = hodnotě proměnné $kniha_id
|
||
Slower Profil * |
#9 · Zasláno: 29. 3. 2012, 19:39:14 · Upravil/a: Slower
Ok
Tak jak je pak možné, že tohle funguje function getknihaDetail() { $sql = "SELECT * FROM tbl_kniha"; $result = mysql_query($sql); $row = mysql_fetch_array($result); return $row; } $product = getknihaDetail(); extract($product); echo $kniha_name . $kniha_id; a tohle NEFUNGUJE kdyz pridam podminku, že kniha_id bude knihaId chápeš ne? function getknihaDetail() { $sql = "SELECT * FROM tbl_kniha WHERE kniha_id = '".$kniha_id."' "; $result = mysql_query($sql); $row = mysql_fetch_array($result); return $row; } $product = getknihaDetail(); extract($product); echo $kniha_name . $knihaId; oprava toho druheho tam melo byt function getknihaDetail() { $sql = "SELECT * FROM tbl_kniha WHERE kniha_id = '".$knihaId."' "; $result = mysql_query($sql); $row = mysql_fetch_array($result); return $row; } $product = getknihaDetail(); extract($product); echo $kniha_name . $knihaId; |
||
panther Profil |
#10 · Zasláno: 29. 3. 2012, 19:59:05
Slower:
„Tak jak je pak možné, že tohle funguje“ protože tam nikde nepoužíváš (konkrétně v SQL dotazu) nedefinované proměnné. SQL tak předáváš všechny informace, které potřebuje a dokáže dotaz zpracovat. |
||
Slower Profil * |
#11 · Zasláno: 29. 3. 2012, 20:08:34
moc to nechápu (nepoužívám nedefinované proměnné)
takže musím v tom SQL dotazu napsat toto: SELECT kniha_name, kniha_id FROM tbl_kniha WHERE kniha_id = '".$knihaId."' "; ? |
||
Someone Profil |
PHP proměnná nemá nic společného se SQL dotazem, asi v tom máš zmatek.
Toto bude fungovat a bude to hledat knihu s ID 7 $kniha_id = 7; mysql_query("SELECT * FROM tbl_kniha WHERE kniha_id='".$kniha_id."'"); |
||
ahoj Profil * |
#13 · Zasláno: 29. 3. 2012, 20:11:06
Slower:
Co je v proměnné $knihaId? |
||
Someone Profil |
#14 · Zasláno: 29. 3. 2012, 20:11:50
|
||
panther Profil |
Slower:
„moc to nechápu (nepoužívám nedefinované proměnné)“ používáš. Kde se vezme podle tebe $knihaId ? Z nebe nespadne.
Správně je to takto: $kniha_id = 5; $query = "SELECT kniha_name FROM tbl_kniha WHERE kniha_id = " . (int)$kniha_id; Všimni si, že vybírám jen jeden sloupec, „kniha_id“ vybírat nemusím, to znám (podle něj vybírá daný řádek z DB) - konkrétně má hodnotu proměnné $kniha_id , což je v našem případě 5.
Pokud si pořád myslíš, že nepoužíváš nedefinované proměnné, vrať se někam k základům PHP a zkus je vštřebat ještě jednou a pořádně. Než jsem to napsal, přibylo pár příspěvků výše. Nechám to tak, jen: Someone: Pokud je proměnná číslo, je zbytečné porovnávat ji v SQL dotazu jako string. Čísla porovnávej jako čísla. |
||
Someone Profil |
#16 · Zasláno: 29. 3. 2012, 20:15:23
panther:
Vím, bohužel to mám špatně zažité. Pokusím se s tím něco udělat. |
||
Slower Profil * |
#17 · Zasláno: 29. 3. 2012, 20:25:37
Mám v tom zmatek
ja vím, že musím udělat toto $kniha_id = 5; ale na to přece mam tabulku v databazi se spoustu knih a id je generovano automaticky po přidani nějaké nové knihy... takže ja nemůžu vědět jaké id mám vložit do proměnné.... má to byt eshop, kdy zakaznik si prida knihu do kosiku a ja jsem potreboval idecko knihy prenest do kosiku.... tak díky všem za radu |
||
ahoj Profil * |
#18 · Zasláno: 29. 3. 2012, 20:31:11
Slower:
Proměnná $kniha_id uvnitř funkce nemá tušení, že někde mimo tu funkci existuje proměnná, která se jmenuje stejně. Jak se hodnoty dovnitř funkce předávají, to se dočteš v prvních pár řádcích tam, kde je o funkcích řeč. |
||
Časová prodleva: 11 let
|
0