PeddaMedlem sedan juni 20004 880 inlägg
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");
Gislaved.netMedlem sedan juni 20001 274 inlägg
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?
PeddaMedlem sedan juni 20004 880 inlägg
Det är så jag testade men fick det inte att funka.
Tänkte att det kanske fanns något enklare sätt.
Gislaved.netMedlem sedan juni 20001 274 inlägg
<?
// 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);
?>
PeddaMedlem sedan juni 20004 880 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");
PeddaMedlem sedan juni 20004 880 inlägg
Ah, du gjorde ett försök du med medans jag postade mitt inlägg.
Tack iaf. :)
Gislaved.netMedlem sedan juni 20001 274 inlägg
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.
PeddaMedlem sedan juni 20004 880 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.