Avatar billede blach Nybegynder
11. september 2005 - 20:29 Der er 11 kommentarer og
2 løsninger

Søge på alle

Jeg har en søge-formular, hvor man via nogle drop-downs vælger nogle kriterier. Foroven i hver dropdown (kriterie) er det selvfølgelig muligt at vælge "alle".

Mit spørgsmål er så, om det kan lade sig gøre at søge på "alle" i sin sql-streng? f.eks. som nedenstående, for så kan jeg bare sætte min dropdown option for alle til "*" eller "All".

$query = mysql_query("SELECT * FROM tabel WHERE felt1 = '$dropdown' ORDER BY id DESC") or die(mysql_error());

Ellers skal man jo lave en masse if sætninger og en masse sql-strengs.... :-(

if(dropdown = "alle") {

  if(dropdown2 = "alle") {
Avatar billede erikjacobsen Ekspert
11. september 2005 - 20:34 #1
If-sætninger kommer du nok ikke uden om. Skitse:

$sql="SELECT * FROM tabel where 1=1  ";

if (dropdown != "alle") {
  $sql=$sql." AND  ... ";
}

//osv.
Avatar billede Slettet bruger
11. september 2005 - 20:44 #2
eller:

$dropdown = (isset($_POST['dropdown'])) ? " WHERE felt1='"'. $_POST['dropdown'] ."'" : '';

$query = mysql_query("SELECT * FROM tabel". $dropdown ." ORDER BY id DESC") or die(mysql_error());
Avatar billede blach Nybegynder
11. september 2005 - 21:39 #3
Hmm, det forstår jeg ikke helt..

Kan I lave noget kode ud fra denne søge-bar?

<form method="post" action="'.$php_self.'">
Køn: <SELECT name="koen" style="width:100px" class="but2"><option value="alle">Alle</option>"><option value="dreng">dreng</option><option value="dreng">pige</option></SELECT>
Spring: <SELECT name="spring" style="width:100px" class="but2"><option value="alle">Alle</option>"><option value="10">10</option><option value="20">20</option></SELECT>
<BUTTON NAME="submit" TYPE="soeg" CLASS="button2">Søg</BUTTON>
</form>

og så skal den søge i en sql:
$query = mysql_query("SELECT * FROM tabel WHERE felt1 = '$dreng' AND felt2 = '$spring' ORDER BY id DESC") or die(mysql_error());


Det den SQL steng er jo fin, HVIS der er valgt noget.. men hvad så hvis alle er valgt?
Avatar billede blach Nybegynder
11. september 2005 - 23:12 #4
Kan I følge mig? Hvordan gør jeg dette nemmest når jeg har 8 dropdowns hvor man kan vælge alle? Der må være en mulighed for at søge på alle... eller indsætte en if() { else {} som tjekker om man søger på alle..?

<form method="post" action="'.$php_self.'">
Køn: <SELECT name="koen" style="width:100px" class="but2"><option value="alle">Alle</option>"><option value="dreng">dreng</option><option value="dreng">pige</option></SELECT>
Spring: <SELECT name="spring" style="width:100px" class="but2"><option value="alle">Alle</option>"><option value="10">10</option><option value="20">20</option></SELECT>
<BUTTON NAME="submit" TYPE="soeg" CLASS="button2">Søg</BUTTON>
</form>

if($soeg) {
$query = mysql_query("SELECT * FROM tabel WHERE felt1 = '$dreng' AND felt2 = '$spring' ORDER BY id DESC") or die(mysql_error());
}
Avatar billede erikjacobsen Ekspert
11. september 2005 - 23:19 #5
Derfor foreslår jeg dig også at du bygger sql-sætningen op efter hvad der er valgt. Er der valgt "alle", skal der ikke stå noget i where-delen for det pågældende felt. Se 20:34:15
Avatar billede fixxxer Nybegynder
12. september 2005 - 02:05 #6
Jeg har brugt et array med stor succes..

$felter = array();
$felter[] = ($_POST['koen'])?"felt1 = '".$_POST['koen']."'";
$felter[] = ($_POST['spring'])?"felt2 = '".$_POST['spring']."'";
$felter = (sizeof($felter[]))?"WHERE ".implode(' AND ', $felter):"";

/* vi kan nu ubesværet gøre sådan her */

mysql_query("SELECT * FROM tabel ".$felter." ORDER BY id DESC");

/* hvis der er nogen felter der skal kontrolleres på så bliver WHERE-clausen tilføjet og med de felter der skal opfyldes i udtrykket */
Avatar billede blach Nybegynder
12. september 2005 - 16:08 #7
erikjacobsen --> det ser jo egentlig meget reelt ud, prøver jeg lige ;-)
Avatar billede blach Nybegynder
13. september 2005 - 20:16 #8
Okay, nu har jeg prøver både med erikjacobsen & wicez.. Kan ikke helt få det til at stemme koden nedenfor..

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING

$query = mysql_query("SELECT * FROM tabel ORDER BY id DESC") or die(mysql_error());

Kan I ikke lave et eksempel med denne kode?
Avatar billede blach Nybegynder
13. september 2005 - 21:04 #9
Okay, tror jeg har den nu.. efter erikjacobsen måde... :)
Avatar billede blach Nybegynder
16. september 2005 - 16:46 #10
Jeg siger tak for hjælpen til alle, kan I ikke ligge et svar?
Avatar billede Slettet bruger
16. september 2005 - 18:42 #11
Jeg prøver lykken =]
Avatar billede erikjacobsen Ekspert
16. september 2005 - 19:50 #12
Ingen point til mig, tak.
Avatar billede Slettet bruger
27. september 2005 - 23:21 #13
Mange tak for point.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester