PHP keresés
Heló!
Kaptam egy php kódot egy másik oldalon, de valami hiba merült fel, ezen a területen nem brilirozok tehát valaki ha segítene jó lenne.
■ Kaptam egy php kódot egy másik oldalon, de valami hiba merült fel, ezen a területen nem brilirozok tehát valaki ha segítene jó lenne.
$keres=array();
if(isset($_POST['nem'])){
$keres[]="nem='".mysql_real_escape_string($_POST['nem'])."'";
}
if(isset($_POST['kor'])){
$keres[]="kor='".mysql_real_escape_string($_POST['kor'])."'";
}
if(isset($_POST['hol'])){
$keres[]="hol='".mysql_real_escape_string($_POST['hol'])."'";
}
$keres=explode('AND', $keres);
if($keres){
$keres= 'WHERE ' . $keres;
}
$result=mysql_query("SELECT * FROM user $keres") or die (mysql_error());
explode
AND
körül akkor is szükség lesz szóközökre.Lehet
Húúú
$keres[]=' WHERE ' ....
).Egyébként ne nagyon irkálj olyat, hogy "valami hiba van benne", hanem vedd a fáradságot és másold ide a hibaüzit! Plusz a forráskódot, és jelöld meg, hogy a hibaüzi x. sora a COLORER-ben melyiknek felel meg.
Köszi a hozzászólást
Form?
Itt viszont ezt látom:
isset($_POST['megye']
. Ez azt jelenti, hogy van(nak) "megye" nevű űrlapmező(k) a $_POST tömbben, nem azt, hogy ezeknek az értékei (HTML-ben: Value) nem üres string. De a php kódból azt gondolom, hogy a "megye" az input tömb, ezért a feldolgozáskor azt kell ellenőrizd, hogy$_POST['megye'][$m]<>''
. Tehát nem isset(...)."nem='xx' OR nem='yy' AND megye=''"
. Ezt (sql-t), amíg tesztelsz, kiírathatnád magadnak! Tehát (de ehhez meg a tábla ismerete lenne hasznos) csakis azokat a rekordokat kapod vissza, amelyekben a megye mező értéke üres string (és nem NULL, stb.). Ha nincs ilyen rekord, akkor semmit. Emiatt üres (megye)csoport esetén olyan megyefeltételt kell megadni, ami minden rekordra igaz, pl.: "megye <> NULL". De ez csak akkor biztos megoldás, ha a táblának ez az oszlopa rendelkezik is ezzel a (NOT NULL) kritériummal.Figyelni kellene az
and
elsőbbsége magasabb mint azor
é. Tehát ha ebből a karakterláncból:Részletek a MySQL dokumentáció Operator Precedence lapján.
Érdekes
zárójelek
Jogos
A Jan. 15. (V), 21.06
A tömből készültek (csak
Nem figyelsz!
if($nem[0]!="")
, de igazából itt kéne a count v. isset, nem korábban.A vizsgálattal nem volna
Nem értem
" OR "
. És előtte-utána semmi (legalábbis ami a $nem-et illeti). Ez miért lenne jó?De - a magam részéről - inkább szívesen látnám a formot, adattáblát, és egy feladatspecifikációt. Úgy tűnik, Freddy88 nem a legjobb oldalról közelít, vagy valahogy egész másképp gondolkodik, mint én. Valószínű én elejétől fogva másképp csinálnám.
Ezek szerint megint nem
Ezek közül az első kettő később kiesik, az utolsó kettő pedig helyesen lesz kezelve:
Valóban,
Így műxik, a második (u. olyan) count feltételt hagytad ki az előző magyarázatból.
Itt már tényleg nagyon másképp csinálnám. Ez egy csomó if, tömb, for; én valószínűleg tömböt egyáltalán nem csinálnék, hanem elejétől fogva u. azt az SQL string-ecskét írkálnám tovább. Csak saccra: kb. fele-annyi if, for és 0 tömb, 0 implode. Jár a szám, de most nincs rá türelmem, bocs.