Ik ben net bezig met php en SQL en ik heb het volgende probleem waar ik niet uitkom. Waarschijnlijk heel eenvoudig. Een lijst met maanden, de geselecteerde maand moet worden opgeslagen in een variabele die wordt gebruikt in een select bij een sql statement.

De lijst heb ik, maar hoe krijg ik de waarde in een variabele voor later in de sql. Het script ziet er als volgt uit:

<!DOCTYPE html PUBLIC
<html>
 <body>
 <label for="Maand"> Maand : </label>
  <select id="cmbMaand" name="Keuze" >
  <option value="01">Januari</option>
  <option value="02">Februari</option>
  <option value="03">Maart</option>
  <option value="04">April</option>
  <option value="05">Mei</option>
  <option value="06">Juni</option>
  <option value="07">Juli</option>
  <option value="08">Augustus</option>
  <option value="09">September</option>
  <option value="10">Oktober</option>
  <option value="11">November</option>
  <option value="12">December</option>
  </select>

  <?php
   $maand = $_POST['Keuze'];
   echo $maand ;
  ?>
 </body>
</html>


De echo geeft geen waarde.
Nee, want $_POST bestaat nog niet. Je zult eerst toch echt je formulier moeten versturen met een submit-knop.
Daarna moet je kijken of het forumier is verstuurd via POST.

Dit werkt dus wel:

<?php
if($_SERVER['REQUEST_METHOD']=="POST") {
   	echo $_POST['Keuze']; // het is onnodig om een variabele te kopiëren naar een andere var
} else {
	echo "Er is niks verstuurd.";
}
  ?>

Als je de keuze direct wilt tonen, zonder je formulier te versturen, dan moet je kijken naar JavaScript, en bij voorkeur de jQuery-library:
http://learn.jquery.com/using-jquery-core/faq/how-do-i-get-the-text-value-of-a-selected-option/
Hartelijk dank, ik zal de volgende keer de code instructie gebruiken.

Ik snap wat je bedoelt maar ik heb het nog niet werkend, er blijft staan "er is niets verstuurd"
Wat heb je nu staan dan? Heb je wel een formulier toegevoegd aan je pagina inclusief alle juiste instellingen?
Jan Riegman op 11/11/2014 07:04:15

Hartelijk dank, ik zal de volgende keer de code instructie gebruiken.

Ik snap wat je bedoelt maar ik heb het nog niet werkend, er blijft staan "er is niets verstuurd"


Er staat "er is niets verstuurd" omdat er geen form tags omheen staan. ook mist er een submit button.
Als je die 2 dingen in orde maakt, werkt het script wel.
http://www.w3schools.com/html/html_forms.asp



Het werkt. De waarde is de waarde die ik geselecteerd heb. Super, bedankt voor de tips en code.

Nu komt het volgende, na de selectie gaat de lijst weer naar de eerste waarde, kan dat eenvoudig geregeld worden als ik juli kies dat juli blijft staan.
Als je in de <option> selected toevoegd zal deze als default gekozen worden:


<option value="1">Optie1</option>
<option value="2" selected>Optie2</option> // Deze is standaard


Met behulp van je post waarde kun je dus uitzoeken bij welke de tekst selected moet komen. Je kunt dit eventueel met een tussen variabele doen.

<?php

switch $_POST['Keuze']
{
case '01':
$selected_maandag = "selected"
break;
}

?>

Dit is een optie. Persoonlijk zou ik overwegen om heel je <select> dynamisch te maken.
D.m.v. een loop kun je de select opbouwen:

<?php

// Loop van 1 tot en met 12
for($index = 1; $index <= 12; $index++)
{
// Als de POST keuze hetzelfde is als het nummer in de loop dan deze selecteren
if($_POST['Keuze'] == $index)
{
$option_value .= "<option value=\"$index\" selected>Optie $index</option>";
// Anders is het gewoon een optie
} else {
$option_value .= "<option value=\"$index\">Optie $index</option>";
}
}

?>
Helemaal duidelijk, ik ga hiermee aan de slag. Nogmaals dank voor de tips. PHP is voor mij nieuw, het is net weer anders dan access en vba

Nadeel is zo dat je 2x nagenoeg dezelfde HTML moet typen.
Dat kan voorkomen worden door gebruik te maken van een array met de maanden:


<form action="" method="post">
 <label for="Keuze"> Maand : </label>
  <select id="cmbMaand" name="Keuze" >
   <?php
   // welke maanden (of keuzes) zijn er?
   $keuzes= array('januari', 'februari', 'maart');	

   foreach($keuzes as $keuze)
    {
    // is deze keuze vorige keer gekozen?
    $selected = '';
    if(isset($_POST['Keuze']) AND $_POST['Keuze'] == $keuze)
 	{ 
	$selected = 'selected'; 
	}

   // 1x de html weergeven, dynamisch vanuit de array
    echo '<option value="'.$keuze.'" '.$selected.'>'.$keuze.'</option>';
    }
   ?>
   </select>
   <input type="submit" value="Verstuur">
</form>


[size=xsmall]Toevoeging op 12/11/2014 11:33:14:[/size]

Let ook op: bij <label for=""> moet je de name van de 'name' van het input-element aanduiden.
Dat was in het eerste bericht niet zo.

Reageren