28. oktober 2003 - 10:45Der er
5 kommentarer og 2 løsninger
En søgefunktion
Jeg har en database med nogle titler på sange...
Jeg har nu tænkt på at lave en søgefunktion hvor man simpelthen søger på sangtitlen i et felt, og så kommer den frem med hvad der passer til søgningen. Jeg havde selv tænkt på noget i sti med:
$q = mysql_query("SELECT * FROM tabel WHERE kommentar = '**' ORDER BY kommentar ASC") or die(mysql_error());
Der hvor der står '**' skal det man skriver i søgefeltet vel stå? Det skal laves med Wildcards (*), så hvis man bare skriver fugl, skal alle dem emd fugl komme - også selvom det er først eller sidst i titlen.
Tror ikke det er så svært - skal bare lige sættes rigtigt op...
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Husk nu sikkerheden, med mysql_escape_string() Og for at lade folk bruge de almindeligt kendte wildcards "*" og "?", kan man bruge str_replace med et par arrays:
$soeg_raw=$_POST['input']; // Vi smider lige brugerens indput i en seperat variabel $wildcards_human=array('*','?'); // Et array med "mennesklige" wildcards $wildcards_mysql=array('%','_'); // Et tilsvarende array med MySQL's wildcards $soeg_wildcards=str_replace($wildcards_human,$wildcards_mysql,$soeg_raw); // Erstat wildcards $soeg_mysql=mysql_escape_string($soeg_wildcards); // Escape'r søgesætningen, for sikkerhed $resultat=mysql_query('SELECT * FROM tabel WHERE kommentat LIKE \''.$soeg_mysql.'\' ORDER BY kommentar ASC') or die('Noget gik galt: '.mysql_error());
Det kan så -om man vil- koges ned til følgende lille klods:
$resultat=mysql_query('SELECT * FROM tabel WHERE kommentar LIKE \'%'.mysql_escape_string(str_replace(array('*','?'),array('%','_'),$_POST['input'])).'%\' ORDER BY kommentar ASC') or die('Noget gik galt: '.mysql_error());
I får 20 hver, da jeg kunne burge begge de ting I sagde.
Tak for hjælpen... Men det har så startet noget nyt jeg ikke kan få til at virke, men den tager jeg i et nyt spørgsmål :)
Synes godt om
Ny brugerNybegynder
Din løsning...
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.