Autor Zpráva
vitekt
Profil *
Zdravím chtěl bych se jen zeptat jeslti tato chybová hláška, která se objeví pouze když v array $data nenalezne $obsah. Warning: in_array() expects parameter 2 to be array, boolean given in ./plugin/vloz_komentar.php on line 19. Vše jinak funguje správně. Doufám, že to někdo pochopíte. Díky

if (in_array($obsah, $data)) 
Str4wberry
Profil
Zkus si tu chybovou hlášku přečíst, případně přeložit.
vitekt
Profil *
No to mě moc nepomáhá
Taps
Profil
vitekt:
2. parametr ve funkci in_array musí být pole
vitekt
Profil *
No a copak když beru data z databáze


$q = mysql_query("SELECT * FROM komentare where autor = '$autor' AND obsah = '$obsah'") or die(mysql_error());
  $data=mysql_fetch_array($q);


tak by to mělo být pole ne? Ale není to teda tím, že když tam nejesou žádný data, tak to potom není polo a v tom je celej problém?
Taps
Profil
vitekt:
$q = mysql_query("SELECT * FROM komentare where autor = '$autor' AND obsah = '$obsah'") or die(mysql_error());
 while( $data=mysql_fetch_array($q){
$pole[]=$data['autor'];
}
if(is_array($pole)){
if (in_array($obsah, $pole)) {
....
}
}
Bertram
Profil
vitekt:
Ahoj, když tam žádný záznam není, fce vrací false, a také to vypadá na špatný návrh databáze.
vitekt
Profil *
BertramNo né normálně tam záznamy jsou, ale pak když tam dám podmínku where tak to tam nemusí najít žádný záznam, nebo přesně o tom mluvíš? :D
Bertram
Profil
vitekt:
Jestli dobře chápu, že v $obsah bude text komentáře, tak ti bude dotaz vracet shodné komentáře, které stejný autor odeslal vícekrát.
S tím špatný návrh databáze jsem se asi trochu unáhlil, ale ty podmínky mě praštily do očí a myslel jsem si, že máš více tabulek v jedné.
vitekt
Profil *
Bertram:
jj chápeš to správně, právě nejsem nějak moc zdatnej v php a tohle je jediný řešení co mě napadlo
Bertram
Profil
vitekt:
Jestli chceš takto ošetřovat vícenásobné odesílání formuláře, tak nemusíš ani používat funkci in_array() ale pouze if() popř, !if(), nebo v db unikátní klíč přes dva sloupečky.

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