16. juli 2005 - 22:27Der er
6 kommentarer og 1 løsning
Rod i SQL query sætning
Hvad gør jeg galt i denne sætning
$query = mysql_query("SELECT * FROM opskrifter WHERE ".$_POST['titel']." LIKE '%".$_POST['search']."%' and ".$_POST['kategori']." LIKE '%".$_POST['search']."%' and ".$_POST['ingredienser']." LIKE '%".$_POST['search']."%' and ".$_POST['kuverter']." LIKE '%".$_POST['search']."%' LIMIT 0, 50");
Felterne "titel" og "ingredienser" er tomme søgefelter, hvorimod felterne "kategori" og "kuverter" består af en lang liste af vælgemner brugeren kan vælge imellen.
tomme søge felter? syntaksen er "Where tabel-kolonne-navn Like et_og_andet" Hvis din $_POST[titel] og de andre såvel er tomme eller ikke matcher et navn på en kolonne i tabellen, så fejler den selvfølgelig
tomme søgefelter... jeg mener at man kan søge efter en bestemt titel ved at skrive navnet i et tomt tekstfelt... det er så det brugeren har skrevet som skal søges efter i DB
Kunne du prøve at give et eksempel på hvordan syntaksen skal skrives - er nemlig lidt i tvivl når man skal gøre brug af and og or
ok Hvis du har et felt i din tabel som hedder "tittel" så skal der ikke stå WHERE ".$_POST['titel']." LIKE '%".$_POST['search']."%' Men derimod WHERE titel LIKE '%".$_POST['search']."%' Fordi feltet i databasen hedder titel uanset hvad der søges på Så er spørgsmålet om du har een søgeboks som hedder "search" eller om du har en søgeboks til titel, kategori, ingredienser og kuverter? For afhængig af det skal du enten bruge --- $query = mysql_query("SELECT * FROM opskrifter WHERE titel LIKE '%".$_POST['search']."%' and kategori LIKE '%".$_POST['search']."%' and ingredienser LIKE '%".$_POST['search']."%' and kuverter LIKE '%".$_POST['search']."%' LIMIT 0, 50"); --- eller --- $query = mysql_query("SELECT * FROM opskrifter WHERE titel LIKE '%".$_POST['titel']."%' and kategori LIKE '%".$_POST['kategori']."%' and ingredienser LIKE '%".$_POST['ingredienser']."%' and kuverter LIKE '%".$_POST['kuverter']."%' LIMIT 0, 50");
brugen af and og or kommer and på hvad du ønsker der skal ske når der søges Hvis man søger på "GED" og du benytter and alle steder, ja så får du alle de poster hvor ordet "GED" findes i både titel, kategori, kuverter og ingredienser Hvorimod hvis du bruger or alle steder så får du alle de poster hvor "GED" findes i enten titel eller i kategori eller i kuverter eller i ingredienser Det normale er at man søger med or, for jeg forestiller mig at kuverter er et tal Så ret alle and til or :o) I øvrigt så har du et sted en mysql_query($query) Der er det altid en god ide at benytte den sådan her i stedet mysql_query($query) or die(mysql_error) hvis du ikke allerede gør det :o), for så får man en fejlmeddelelse om hvad der er galt hvis der altså er noget galt
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.