Hulp met SQL - tussen 2 gegevens

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Dominic

Dominic

13/08/2008 20:04:00
Quote Anchor link
Hallo,
Gebruikers op mijn site kunnen dit opgeven bij zoeken:
geslacht, land, leeftijd.
Nu lukt het wel met selecteren op die eerste 2 maar op leeftijd niet echt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<select name="leeftijd">
        <option value="18">18-21</option>
        <option value="22">22-25</option>
        <option value="26">26-29</option>
        <option value="30">30-40</option>
        <option value="41">41-55</option>
        <option value="56">56-64</option>
        <option value="66">65+</option>
      </select>

Is voor leeftijd selecteren tussen welke leeftijden het zit.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
      if($_POST['leeftijd'] == "18")
      {
          $min = "18";
          $max = "21";
      }
      elseif($_POST['leeftijd'] == "22")
      {
          $min = "22";
          $max = "25";
      }
      elseif($_POST['leeftijd'] == "26")
      {
          $min = "26";
          $max = "29";
      }
      elseif($_POST['leeftijd'] == "30")
      {
          $min = "30";
          $max = "40";
      }
      elseif($_POST['leeftijd'] == "41")
      {
          $min = "41";
          $max = "55";
      }
      elseif($_POST['leeftijd'] == "56")
      {
          $min = "56";
          $max = "64";
      }
      elseif($_POST['leeftijd'] == "66")
      {
          $min = "65";
          $max = "10000000000000000000";
      }

Heb ik gemaakt voor de handigheid zodat die weet tussen welke leeftijden het moet zitten in SQL.
Dit is de query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
       $sLid = mysql_query("SELECT * FROM leden WHERE geslacht='".$_POST['geslacht']."' && land='".$_POST['land']."' && (leeftijd > '".$min."' < '".$max."')")or die(mysql_error());
  


Hoe kan ik in SQL checken of iemand tussen die 2 leeftijden zit? (of de leeftijd heeft van min, of max)

Groetjes
Dominic
Gewijzigd op 01/01/1970 01:00:00 door Dominic
 
PHP hulp

PHP hulp

04/12/2024 09:24:41
 
- SanThe -

- SanThe -

13/08/2008 20:19:00
Quote Anchor link
Ik hoop niet dat je met leeftijd ergens daadwerkelijk de leeftijd van bedoelt. Als dat zo is mag je steeds dat veld aanpassen als er iemand jarig is geweest.

Kijk eens naar BETWEEN
 
Dominic

Dominic

13/08/2008 20:33:00
Quote Anchor link
Ha dat werkt, super bedankt!
 
Maarten Slenter

Maarten Slenter

13/08/2008 20:35:00
Quote Anchor link
Wat daar uit komt is bijv. WHERE (leeftijd > 18 < 21)

Wat je daar ook simpelweg van kan maken is:

WHERE leeftijd > 18 AND leeftijd < 21

Dit ziet er uiteraard minder mooi uit, maar het werkt (bij mij) wel:D

Uiteraard kun je SanThe's methode ook gebruiken, zul je alleen even moeten googlen
 
Dominic

Dominic

13/08/2008 21:04:00
Quote Anchor link
Is me al gelukt.
De klant wil nu dat mensen kunnen kiezen uit Geen Voorkeur. (dit probleem heb ik alleen nog nooit gehad).

Dit is het scriptje:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
  if(isset($_POST['submit']))
  {
      if($_POST['leeftijd'] == "18")
      {
          $min = "18";
          $max = "21";
      }
      elseif($_POST['leeftijd'] == "22")
      {
          $min = "22";
          $max = "25";
      }
      elseif($_POST['leeftijd'] == "26")
      {
          $min = "26";
          $max = "29";
      }
      elseif($_POST['leeftijd'] == "30")
      {
          $min = "30";
          $max = "40";
      }
      elseif($_POST['leeftijd'] == "41")
      {
          $min = "41";
          $max = "55";
      }
      elseif($_POST['leeftijd'] == "56")
      {
          $min = "56";
          $max = "64";
      }
      elseif($_POST['leeftijd'] == "66")
      {
          $min = "65";
          $max = "10000000000000000000";
      }
      else
      {
          $min = "1";
          $max = "100000000";
      }

   if($_POST['geslacht'] == "geen")
   {
        $geslacht = "geslacht = 'man' OR geslacht = 'vrouw'";
   }
   else
   {
        $geslacht = "geslacht = '".$_POST['geslacht']."'";
   }
  
  
   if($_POST['land'] == "geen")
   {
        $land = "land = 'nl' OR land ='be'";
   }
   else
   {
        $land = "land = '".$_POST['land']."'";
   }

      
$sLid = mysql_query("SELECT * FROM leden WHERE ".$geslacht." AND ".$land." AND leeftijd BETWEEN '".$min."' AND  '".$max."'") or die(mysql_error());

  
        if(mysql_num_rows($sLid) == 0)
        {
            echo "Er zijn geen zoekresultaten voor jouw opgave.";
        }
        else
        {
             while($fLid = mysql_fetch_assoc($sLid))
             {
              echo $fLid['naam'];
             }
        }
  }
?>

<h1>Zoeken</h1>
<form method="post" action="">
<table>
<tr>
<th>Geslacht:</th>
<td><select name="geslacht">
<option disabled selected>Kies..</option>
<option value="geen">Geen Voorkeur</option>
<option value="man">Man</option>
<option value="vrouw">Vrouw</option>
</select></td>
</tr>
<tr>
<th>Land:</th>
<td><select name="land">
<option disabled selected>Kies..</option>
<option value="geen">Geen Voorkeur</option>
<option value="nl">Nederland</option>
<option value="be">Belgie</option>
</select></td>
</tr>
<tr>
<th>Leeftijd:</th>
<td><select name="leeftijd">
<option disabled selected>Kies..</option>
<option value="geen">Geen Voorkeur</option>
<option value="18">18-21</option>
<option value="22">22-25</option>
<option value="26">26-29</option>
<option value="30">30-40</option>
<option value="41">41-55</option>
<option value="56">56-64</option>
<option value="66">65+</option>
</select></td>
</tr>
<tr>
<td><input type="submit" name="submit" value="Zoek!" /></td>
</tr>
</table>

*Ik weet dat het beetje brak is met dat if($geslacht) maar ik probeer het ook makkelijker te maken*.

Dit werkt alleen niet, als ik op man selecteer selecteert ie de vrouwen er ook bij. Ook als ik nederland selecteer pakt ie de belgen er ook bij.
Dit is dus een beetje buggy.
Kunnen jullie een iets simpelere/betere manier geven (of hem verbeteren zodat ie werkt)..
 
- SanThe -

- SanThe -

13/08/2008 21:15:00
Quote Anchor link
Als je met OR en AND door elkaar werkt moeten er haken ( en ) omheen.
Het is niet echt mijn manier, maar okee.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if($_POST['geslacht'] == "geen")
   {

        $geslacht = "(geslacht = 'man' OR geslacht = 'vrouw')";
   }

   else
   {
        $geslacht = "geslacht = '".$_POST['geslacht']."'";
   }

?>
 
Dominic

Dominic

14/08/2008 08:23:00
Quote Anchor link
Wederom bedankt :)
 
Douwe

Douwe

14/08/2008 10:04:00
Quote Anchor link
Zo kan ook:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$geslacht
= "";
if($_POST['geslacht'] != "geen")
   {

        $geslacht = "geslacht = '".$_POST['geslacht']."' AND";
   }

$land = "";
if($_POST['land'] != "geen")
   {

        $land = "land = '".$_POST['land']."' AND";
   }

$sLid = mysql_query("SELECT * FROM leden WHERE ".$geslacht." ".$land." leeftijd BETWEEN '".$min."' AND  '".$max."'") or die(mysql_error());
//zooi
?>


Dan wordt er überhaupt geen WHERE-dinges uitgevoerd als deze eigenlijk niet nodig is.
Gewijzigd op 01/01/1970 01:00:00 door Douwe
 
Dominic

Dominic

17/08/2008 15:04:00
Quote Anchor link
Om weer even up te bumpen.
Het werkt beide niet..

Zodra ik geen voorkeur pakt hij niks.
Hij moet dan juist alles pakken welke waarde er ook is van land.

Als iemand geen voorkeur doet om alleen belgen te zien. (leeftijd/geslacht maakt niet uit) pakt ie niet.
Als ik leeftijd geen voorkeur doet, en geslacht op man dan pakt hij ook niet.

Wat doe ik fout:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
   if($_POST['geslacht'] == "geen")
   {
        $geslacht = "(geslacht = 'man' OR geslacht = 'vrouw') AND";
   }
   else
   {
        $geslacht = "geslacht = '".$_POST['geslacht']."' AND";
   }
  
  
   if($_POST['land'] == "geen")
   {
        $land = " (land = 'nl' OR land = 'be') AND";
   }
   else
   {
        $land = " land = '".$_POST['land']."' AND";
   }

$geslacht = "";
if($_POST['geslacht'] != "geen")
   {
        $geslacht = "geslacht = '".$_POST['geslacht']."' AND";
   }
$land = "";
if($_POST['land'] != "geen")
   {
        $land = "land = '".$_POST['land']."' AND";
   }
$sLid = mysql_query("SELECT * FROM leden WHERE ".$geslacht." ".$land." leeftijd BETWEEN '".$min."' AND  '".$max."'") or die(mysql_error());

  
        if(mysql_num_rows($sLid) == 0)
        {
            echo "Er zijn geen zoekresultaten voor jouw opgave.";
        }
        else
        {


mvg
 
Jesper Diovo

Jesper Diovo

17/08/2008 15:11:00
Quote Anchor link
Gebruik een juiste foutafhandeling:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$sQuery
= "SELECT * FROM leden";
$sResult = mysql_query($sQuery);
if($sResult) {
  // doe ermee wat je wilt.
} else {
  echo mysql_error().' in query: '.$sQuery;
}

?>
 
Dominic

Dominic

17/08/2008 15:37:00
Quote Anchor link
Dat zou hetzelfde weergeven want er zit maar 1 query op de pagina.
 
Dominic

Dominic

18/08/2008 12:15:00
Quote Anchor link
Weet iemand wat ik fout doe?
 
- SanThe -

- SanThe -

18/08/2008 12:29:00
Quote Anchor link
Regel 20 t/m 29 verwijderen uit bovenstaand script van 17.08.2008 15:04 .
 
Douwe

Douwe

18/08/2008 12:38:00
Quote Anchor link
Of regel 1 - 18
 
Dominic

Dominic

18/08/2008 19:59:00
Quote Anchor link
Nu even serieus, kan iemand helpen dat hij wel gewoon met geen Voorkeur werkt.
Of een voorbeeld geven hoe het wel lukt?
 
- SanThe -

- SanThe -

18/08/2008 20:06:00
Quote Anchor link
Ik ben serieus. En Douwe_M ook. Wat je nu hebt is dubbel en ergens op de helft maak je de $var nog weer leeg ook.
 
Dominic

Dominic

19/08/2008 19:54:00
Quote Anchor link
ohja ik zie het! Ik zal het even kijken of dat dan wel werkt.

edit: werkt helaas niet..
Gewijzigd op 01/01/1970 01:00:00 door Dominic
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.