Beste mensen,

Ik ben gaan zoeken maar ik kan geen tut vinden en nu ga ik me toch op een nieuw gebied begeven kwa php en html. Ik heb een select menu gemaakt en daarin kan je dus de zoek functie instellen. Maar elke keer als ik op zoeken heb geklikt zijn alle select vakjes weer standaard 0. De waarde springt steeds terug naar de eerste waarde uit het rijtje.

Hoe kan ik er voor zorgen dat de waarde hetzelfde blijft als de laatste invoer?

Dit is de code van het zoek menutje:

    <div id="smallcolumn1">  

<?
$soort1 = $_POST['zoeksoort'];
$groep1 = $_POST['zoekgroep'];
$vak1 = $_POST['zoekvak'];
?>

    <b>Zoek in de database:</b>
    <form method="POST" action="programmas.php">
    
    <select type="text" name="zoeksoort">
  <option value="0">Leeg</option>
  <option value="1">Applicatie</option>
  <option value="2">Digibordtool</option>
	</select><br>
        <select type="text" name="zoekgroep">
  <option value="0">Leeg</option>
  <option value="12">groep 1 en 2</option>
  <option value="34">groep 3 en 4</option>
  <option value="56">groep 5 en 6</option>
  <option value="78">groep 7 en 8</option>
  <option value="9">Alle groepen</option>
	</select><br>
            <select type="text" name="zoekvak">
  <option value="0">Leeg</option>
  <option value="rekenen">Rekenen</option>
  <option value="taal">Taal</option>
  <option value="extra">Extra</option>
  
	</select>
    <br>
<center><input class="myButton" type="submit" name="submit" value="Zoeken"></center>
</form>
</div>


Het stukje:

<?
$soort1 = $_POST['zoeksoort'];
$groep1 = $_POST['zoekgroep'];
$vak1 = $_POST['zoekvak'];
?>
laad de gegevens van de laatste zoekactie in en deze wil ik dus als standaard waarde instellen in het menu?
ik heb gelezen dat je iets met selected kan doen maar hoe kan ik dit koppelen aan de juiste?

Groetjes,
Dennis
Werk met GET requests? In het algemeen werkt zoekfunctionaliteit beter/aangenamer met GET dan met POST. Zo zou je bijvoorbeeld een zoekresultaat kunnen bookmarken. Ook kun je vrij voor- en achteruit navigeren, dat wordt met POST beide een stuk moeilijker, zo niet onmogelijk.

Oftewel, zorg dat al je zoekparameters doorgegeven worden in de URL (GET) in plaats van via form submits (POST).

EDIT: de volgende stap is het initialiseren van je formulier en je query met de (mogelijk eerder geselecteerde) waarden.

EDIT 2: en als je zoekopdrachten "permanent" wilt onthouden, dan zal je deze moeten opslaan / koppelen aan een gebruikersprofiel ofzo.
Iets als:

<option value="0" <?php echo ((isset($_POST['zoeksoort'])) and ($_POST['zoeksoort'] == "0")) ? 'selected' : '' ?>>Leeg</option>


En dan de veldnamen bij $_POST en de waarde aanpassen per groep en regel.
@Jan, dat is inderdaad dan het idee, maar POST werkt niet fijn voor dit soort (zoek)functionaliteit om bovengenoemde redenen.
Wat je ook zou kunnen doen is je forumlier via PHP laten genereren, of in ieder geval de "select" elementen.

<?php

$zoekgroep = [
12 => 'groep 1 & 2',
34 => 'groep 3 & 4',
56 => 'group 5 & 6'
];

foreach($zoekgroep as $val => $groep){
echo '<option value="'.$val.'"'.isset($_POST['zoekgroep']) ? 'selected' : ''.'>'.$groep.'</option>';
}

?>

Wat je ook nog zou kunnen doen is de waarde van de selectbox opslaan in een session zodat deze nog steeds hetzelfde is als je naar een andere pagina gaat en weer terug gaat.
@Johan K: ik mis bij jou de test op welke option value op selected moet worden gezet. Nu worden ze allemaal gezet.
Jan de Laet op 22/09/2015 17:10:17

@Johan K: ik mis bij jou de test op welke option value op selected moet worden gezet. Nu worden ze allemaal gezet.

Haha, dat zie ik nu pas ja maar dat is alleen een kwestie van de tenary operator aanpassen.

Reageren