11. juni 2003 - 22:28Der er
19 kommentarer og 1 løsning
optimalt SQL kald for søge funktion
jeg har følgende plain HTML form:
<form method="post" action="<?=$_SERVER[PHP_SELF];?>"> CD nr. <input type="text" name="cd_nr" maxlength="4" size="4"><br> Nr. på CD. <input type="text" name="nr_nr" maxlength="2" size="2"><br> Kunstner. <input type="text" name="artist"><br> Titel. <input type="text" name="titel"><br> <input type="submit" name="submit" value="søg"> </form>
hvad jeg mangler er et optimalt SQL kald hvori jeg kan lave en kombineret søgning, der skal kunne indtastes i samtlige felter eller kun et felt, min database struktur er som følger:
CREATE TABLE `numre` ( `id` int(10) NOT NULL auto_increment, `cd_nr` int(10) NOT NULL default '0', `nr_nr` int(10) NOT NULL default '0', `artist` longtext NOT NULL, `titel` longtext NOT NULL, PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=1 ;
Dvs. du ønsker et script der udfra de udfyldte felter i formularen dynamisk genererer en SQL-query som udfra de valgte felter finder matches i db'en uanset hvilke felter der er udfyldte?
well problemet ligger så i at hvis der kun bliver skrevet i et felt skal min query hede noget i stil med SELECT * FROM mintabel WHERE cd_nr='$_POST[cd_nr]'
men skriver jeg i 2 felter skal jeg jo have sat et AND ind i min SQL sætning.. hvilket vil give et HAV af if sætninger da jeg teoretisk skal lave en sætning til hver eneste kombination
if ($_POST[cd_nr] != "") { $cd = "cd_nr LIKE '%$_POST[cd_nr]%'"; } else { $cd = ""; } if ($_POST[nr_nr] != "") { $nr = "nr_nr LIKE '%$_POST[nr_nr]%'"; } else { $nr = ""; } if ($_POST[artist] != "") { $artist = "artist LIKE '%$_POST[artist]%'"; } else { $artist = ""; } if ($_POST[titel] != "") { $titel = "titel LIKE '%$_POST[titel]%'"; } else { $titel = ""; }
så kan jeg bare lave en SELECT * FROM mintabel WHERE $cd $nr $artist $titel
problemet ligger nu i at få testet om der er mere end et felt udfylt, er der det skal de 2 variabler separeres af et AND, hvis kun et felt er udfyldt skal der jo ikke bruges noget AND,
ok - jeg vil også stikke til køjs nu - har stirret mig blind på et problem med et templatesystem... :-/
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.