db bevragen a.d.h.v. een <select>
Ben een beginnend php'er en had een vraagje.
Ben voor een eigen site bezig met een verjaardag kalender. Mensen kunnen een maand kiezen met de html optie <select></select> waarvan ze de verjaardagen willen zien. Het is dus de bedoeling dat ze als ze bijvoorbeeld 'maart' kiezen, alle verjaardag in maart uit de database gehaald worden.
Hoe kan ik de informatie uit de <select> halen is nu mijn vraag, zodat de informatie naar de database kan? m.a.w. hoe kan ik te weten komen welke maand de gebruiker heeft gekozen en zo de database bevragen. Heb al wel ervaring met een formulier maken, maar daar drukt de gebruiker op 'submit', wat hier niet het geval is.
<select name="maand">
<option value="01">Januari</option>
....
</select>
dan kun je de maand ophalen met
$_POST['maand'];
gebruik je de GET methode dan kun je deze ophalen met
$_GET['maand'];
En dan zou de sql query bijvoorbeeld zijn:
SELECT maand, naam, geboortejaar FROM verjaardagen WHERE maand=$_POST
Gewijzigd op 19/04/2005 22:49:00 door G. de Graaf
$sql = "SELECT maand, naam, geboortejaar FROM verjaardagen WHERE maand = '" . $_POST['maand']. "'";
<form method="post">
<select class="formtext" name="maand" id="maand">
<option selected value=""></option>
<option value="januari">januari</option>
<option value="februari">februari</option>
<option value="maart">maart</option>
<option value="april">april</option>
<option value="mei">mei</option>
<option value="juni">juni</option>
<option value="juli">juli</option>
<option value="augustus">augustus</option>
<option value="september">september</option>
<option value="oktober">oktober</option>
<option value="november">november</option>
<option value="december">december</option>
</select><input type="submit" value="Laat zien!" name="submit"></form>
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
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
<?php
$sql = "SELECT dag, maand, naam, geboortejaar FROM verjaardagen WHERE maand = '" . $_POST['maand']. "'";
//--via de functie mysql_query() kan de sql code die in $sql staat uitgevoerd worden
$res = mysql_query($sql);
//--Kijk via de functie mysql_num_rows() of er 1 of meer rijen zijn. Is dat niet zo dan is de tabel leeg
if (mysql_num_rows($res) >= 1)
{
//--met de functie mysql_fetch_array worden alle resultaten in een array
//--gezet en kunnen deze worden aangeroepen
//--loop door de resultaten
while ($row = mysql_fetch_array($res))
{
echo "<b>$row[dag]</b> ";
echo "<b>$row[maand]</b> ";
echo "$row[naam] ";
echo "($row[geboortejaar])<br><br>";
}
}
//--als er geen resultaten zijn:
else
{
echo "Er zijn geen verjaardagen.";
}?>
$sql = "SELECT dag, maand, naam, geboortejaar FROM verjaardagen WHERE maand = '" . $_POST['maand']. "'";
//--via de functie mysql_query() kan de sql code die in $sql staat uitgevoerd worden
$res = mysql_query($sql);
//--Kijk via de functie mysql_num_rows() of er 1 of meer rijen zijn. Is dat niet zo dan is de tabel leeg
if (mysql_num_rows($res) >= 1)
{
//--met de functie mysql_fetch_array worden alle resultaten in een array
//--gezet en kunnen deze worden aangeroepen
//--loop door de resultaten
while ($row = mysql_fetch_array($res))
{
echo "<b>$row[dag]</b> ";
echo "<b>$row[maand]</b> ";
echo "$row[naam] ";
echo "($row[geboortejaar])<br><br>";
}
}
//--als er geen resultaten zijn:
else
{
echo "Er zijn geen verjaardagen.";
}?>
Standaard staat er nu geen maand geselecteerd en krijg ik dus de volgende melding: Notice: Undefined index: maand in e:\program files\easyphp1-7\www\verjaardagkalender.php on line 172. Hoe kan ik zorgen dat ik deze melding niet krijg.
Ook moet de gebruiker nu op een submit button klikken, ik heb liever dat als de optie geselecteerd wordt, de resultaten gelijk getoond worden. Is dit mogelijk?
Gewijzigd op 20/04/2005 00:21:00 door G. de Graaf
als je nou eerst dit voor je hele sql gedeelte zet:
if (isset($_POST['maand']))
{
sql dingen
} else {
echo "select een maand";
}
dan krijg je ook geen wazige foutmeldingen als je nog nix heb gesubmit. zet zowieso boven de maanden een veld 'maand' die aan begin geselect is, zonder verdere value.
Moet daar geen action bij?
<form action="" method="post">
Ok het script werkt! Er zit geen 'action' bij SanThe, is dat nodig dan?
action="pagina.php" verstuurt je gegevens naar die bep pagina. Of t verplicht is weet ik niet moet je ff op htmlhandleiding.nl kijken.
doe het zelf soms ook zo voort gemak, als je maar binnen deze pagina blijft
Ik heb trouwens nog ff gezocht naar zo'n onchange-scriptje maar niet kunnen vinden hier, maar dat zal wel aan mijn zoektermen liggen....Iemand eentje bij de hand?
Gewijzigd op 20/04/2005 14:54:00 door G. de Graaf
moet lukken :)
tnx allemaal!!!!