ugrás a tartalomhoz

Keresőmező készítése PHP-MYSQL

VJanika · 2008. Ápr. 13. (V), 21.16
Sziasztok

A saját lapunkra készítettem egy keresőmezőt valahogy így.
.
.
.
<form method=post>
<td width='200' align=left><input type=text name='keresendo' value='$keresendo' size=60><br>
</form>
.
.
<table .............>";
include"sql.php";
$res = mysql_query("SELECT * FROM termek WHERE keresoszavak LIKE '%$keresendo%' AND allapot='' ORDER BY tip");
if (mysql_num_rows($res) != 0) {
for($i=0; $i<mysql_num_rows($res); $i++) {
......

Szóval az a gondom ha egy szót írok a keresőmezőbe ( pl. lapát ) akkor listázza a lapátokat és minden OK.

De ha az írom be, hogy műgyag lapát akkor nincs a keresésnek eredménye, kivéve ha úgy szerepel a mezőbe, hogy műanyag lapát. Viszont nem ártana ha közte van még egy szó pl. piros akkor a műanyag lapátra a műanyag piros lapátot is megtalálja.

Előre is köszi a segítséget.
 
1

Kereses szavakra

Ronyn · 2008. Ápr. 14. (H), 00.33
Akkor nem ártana ha szétbontanád a keresett kifejezést szavakra.
És vagy a keresett kifejezés szavai közzé teszel egy "%" jelet,vagyis "WHERE keresoszavak LIKE '%$keresendo[0]%$keresendo[1]%...',vagy,-ami célszerübb

$lkey="";
$key=explode(" ",$keresendo);
foreach($key as $word){
$lkey.="(keresoszavak LIKE '%$word%') OR";}
$lkey=substr($lkey,0,-2);
//és a lekérdezés...
...WHERE ($lkey)...";
Igy bármely szóra keres,ha viszont az "OR"-t "AND"-ra cseréled,akkor csak az ad találatot ,amelyikben mindegyik szó szerepel...
Vagy valami ilyesmi...
4

Próba

VJanika · 2008. Ápr. 14. (H), 17.56
Köszi!

Kipróbálom és jelzem.
5

Or And

castiel · 2013. Május. 1. (Sze), 15.57
Hali!

Én ha az OR-t AND-re cserélem, akkor nem működik. Viszont nekem az kéne, hogy csak azt a találatot hozza ki, amelyikben mindegyik szó szerepel. Tudnátok ebben segíteni?

Előre is köszönöm!
6

Kód?

Pepita · 2013. Május. 1. (Sze), 23.28
Kódszínezővel idézd a nem működő kódodat (azt a pár sort, amit innen vettél és alakítottál), valamint a hibaüzenetet vagy azt, hogy mi az a "nem működik"! Akkor tudunk érdemben segíteni.

Tipp1: nem foreach ciklusban csináltad.
Tipp2: a végéről nem jól törölted a felesleges AND-et.

SZERK: Figyelj Janoszen intelmeire is! Biztonság terén olvass frissebb cikkeket is!
7

Köszönöm

castiel · 2013. Május. 2. (Cs), 12.58
Rendben legközelebb így csinálom.
Köszönöm a segítséget, a Tipp2-es ötleted volt a nyerő. :-)
8

Szívesen

Pepita · 2013. Május. 2. (Cs), 19.11
Akkor most veszek egy lottót is, hátha az is bejön. :)
2

Escape, escape, escape

janoszen · 2008. Ápr. 14. (H), 08.43
OFF: Bakter, minden ilyen témánál elmondom, hogy a felhasználói bemenetet escape-lni kell! Tessék megtanulni, mert egyszer csak huss, eltűnik az összes adat egy rossz indulatú konkurens miatt. mysql_real_escape_string().

ON: Egyébként szóköz mentén szétbontod a szavakat és mint Ronyn javasolta, szétbontandóak a kereső kifejezések. Sajnos a Te esetedben, ha csak az van fölvíve hogy lapát, és műanyag lapátra keres AND-del, akkor ez sem fog segíteni. OR-ral meg nem igazán a megszokott működést adja a kereső. Javaslom, hogy ismerkedj meg a cimkézés intézményével, illetve keress rá az ajax autocomplete kifejezésre a Google-ban, hogy egyszerűsítsd a felhasználó dolgát.
3

Hát akkor olvasok :)

VJanika · 2008. Ápr. 14. (H), 17.50
Hát igen van még mit tanulni kipróbálom a Ronin által ajánlott módszert és aztán olvasok.... Már az is nagy segítség ha tudom mit és hol keresek :))
Köszönöm