Hulp met SQL - tussen 2 gegevens
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)
1
2
3
4
5
6
7
8
9
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>
<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)
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
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";
}
{
$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)
1
2
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
Kijk eens naar BETWEEN
Ha dat werkt, super bedankt!
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
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)
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
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'];
}
}
}
?>
{
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)..
Het is niet echt mijn manier, maar okee.
Wederom bedankt :)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
?>
$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
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)
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
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
{
{
$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
Code (php)
1
2
3
4
5
6
7
8
9
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;
}
?>
$sQuery = "SELECT * FROM leden";
$sResult = mysql_query($sQuery);
if($sResult) {
// doe ermee wat je wilt.
} else {
echo mysql_error().' in query: '.$sQuery;
}
?>
Dat zou hetzelfde weergeven want er zit maar 1 query op de pagina.
Weet iemand wat ik fout doe?
Regel 20 t/m 29 verwijderen uit bovenstaand script van 17.08.2008 15:04 .
Of regel 1 - 18
Of een voorbeeld geven hoe het wel lukt?
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.