Autor Zpráva
Slower
Profil *
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
WHERE kniha_id = '".$kniha_id."'
Slower
Profil *
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 *
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
Tato chyba je způsobena někde jinde. Kde definuješ proměnnou $kniha_id
Slower
Profil *
ja ji prave nikde nedefinuji...ja jsem myslel, že když udelam toto
$sql    = "SELECT * 
               FROM tbl_kniha
               WHERE kniha_id = $kniha_id
                 ";
tak se do $kniha_id pridelí id číslo které je v té tabulce v databazi
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 *
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
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 *
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 *
Slower:
Co je v proměnné $knihaId?
Someone
Profil
ahoj:
Nic, viz:
[#7]
Slower:
ja ji prave nikde nedefinuji.
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
panther:
Vím, bohužel to mám špatně zažité. Pokusím se s tím něco udělat.
Slower
Profil *
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 *
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č.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: