P Pedda Medlem sedan juni 2000 6 031 inlägg Trådstart 3 nov. 2004 12:49 #1 Håller på med en liten sökfunktion till en sida.
Men jag vill komplettera så den söker på alla ord som man skriver i sökfältet. Som det är nu så söker den ju bara på hela frasen.
Har testat lite med att köra explode på strängen men inte fått det att fungera.
Någon som har några ideer?
// De kolumner du vill söka i
$kolumn = array('foretag', 'gata', 'postnrgata', 'postnrbox', 'ort', 'lan', 'riktnr', 'telefon', 'riktnrfax', 'search');
// Konstruera WHERE-delen i SQL-frågan
$var = array();
foreach ($kolumn as $kol) {
$var[] = "$kol LIKE '%{$_GET['search']}%'";
}
$var = implode(' OR ', $var);
$data = mysql_query("SELECT * FROM foretag WHERE $var");
Om du kör en explode på $_GET["search"]; på mellanslag och kör en loop inom foreach-loopen borde det väl fungera? Hur har du gjort när du försökt?
P Pedda Medlem sedan juni 2000 6 031 inlägg Det är så jag testade men fick det inte att funka.
Tänkte att det kanske fanns något enklare sätt.
<?
// De kolumner du vill söka i
$kolumn = array('foretag', 'gata', 'postnrgata', 'postnrbox', 'ort', 'lan', 'riktnr', 'telefon', 'riktnrfax', 'search');
// Konstruera WHERE-delen i SQL-frågan
$var = array();
foreach ($kolumn as $kol) {
// $var[] = "$kol LIKE '%{$_GET['search']}%'";
$s = explode(" ", $_GET['search']);
foreach ($s as $sokord){
$var[] = "$kol LIKE '%$sokord%'";
}
}
$var = implode(' OR ', $var);
$query = "SELECT * FROM foretag WHERE $var";
mysql_query($query);
?>
P Pedda Medlem sedan juni 2000 6 031 inlägg Fick det att fungera nu.
Hade bara klantat mig lite.
Här är koden om någon är intresserad.
// De kolumner du vill söka i
$kolumn = array('foretag', 'gata', 'postnrgata', 'postnrbox', 'ort', 'lan', 'riktnr', 'telefon', 'riktnrfax', 'search');
// Konstruera WHERE-delen i SQL-frågan
$var = array();
$ord = explode(" ",$_GET['search']);
foreach ($kolumn as $kol) {
for($x=0; $x<count($ord); $x++) {
$split[] = "$kol LIKE '%$ord[$x]%'";
}
$var[] = "$kol LIKE '%{$_GET['search']}%'";
}
$var = implode(' OR ', $var);
$split = implode(' OR ', $split);
$data = mysql_query("SELECT * FROM foretag WHERE $var OR $split");
P Pedda Medlem sedan juni 2000 6 031 inlägg Ah, du gjorde ett försök du med medans jag postade mitt inlägg.
Tack iaf.
Pedda skrev:
Ah, du gjorde ett försök du med medans jag postade mitt inlägg.
Tack iaf.
Kul att det löste sig. Jag testade min version och den fungerar också. Det kändes lite mer logiskt med en foreach till eftersom du började med det.
P Pedda Medlem sedan juni 2000 6 031 inlägg Mysko, testade din kod och den funkar inte för mig.
r/ Jodå, funkade visst när jag ändrade $query till $data som jag använde i mitt exempel.
Får nog sluta programmera nu, har bara sovit totalt 8 timmar de senast 4 nätterna så jag är ganska seg i skallen.