Selectie uit een lijst

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan Rie

Jan Rie

10/11/2014 21:48:17
Quote Anchor link
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:
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
<!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.
- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 10/11/2014 21:58:18 door - Ariën -
 
PHP hulp

PHP hulp

16/11/2024 18:55:39
 
- Ariën  -
Beheerder

- Ariën -

10/11/2014 21:58:01
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?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/
Gewijzigd op 10/11/2014 21:59:42 door - Ariën -
 
Jan Rie

Jan Rie

11/11/2014 07:04:15
Quote Anchor link
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"
 
Peter K

Peter K

11/11/2014 07:30:42
Quote Anchor link
Wat heb je nu staan dan? Heb je wel een formulier toegevoegd aan je pagina inclusief alle juiste instellingen?
 
Randy vsf

Randy vsf

11/11/2014 09:31:19
Quote Anchor link
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
Gewijzigd op 11/11/2014 09:33:08 door Randy vsf
 
Jan Rie

Jan Rie

11/11/2014 22:21:44
Quote Anchor link
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.
 
Peter K

Peter K

12/11/2014 07:21:52
Quote Anchor link
Als je in de <option> selected toevoegd zal deze als default gekozen worden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?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:

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
<?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>";
    }
}


?>
 
Jan Rie

Jan Rie

12/11/2014 07:31:27
Quote Anchor link
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
 
Eddy E

Eddy E

12/11/2014 11:28:43
Quote Anchor link
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:

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
<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>


Toevoeging op 12/11/2014 11:33:14:

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.
Gewijzigd op 12/11/2014 11:32:31 door Eddy E
 



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.