waarde onthouden in select
NU het kerstvakantie is probeer ik mijn zoekmachine op mijn website te verbeteren. Ik weet dat er nog veel dingen te verbeteren zijn op de website maar voor deze vraag kom ik bij jullie.
IK heb een pagina: http://dennisvanduin.altervista.org/programmas.php
waar mijn gemaakte tools en applicaties op weergegeven worden. Nu probeer ik mijn zoekmachine te verbeteren door automatisch te zoeken na het ingeven van een optie. Ik heb dus de zoek machine veranderd en er wat bij gezet. Het formulier voor zoeken is nu:
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
<form>
<select name='zoeksoort' onchange='this.form.submit()'>
<option value="0" <?php echo ((isset($_POST['zoeksoort'])) and ($_POST['zoeksoort'] == "0")) ? 'selected' : '' ?>>Leeg</option>
<option value="1" <?php echo ((isset($_POST['zoeksoort'])) and ($_POST['zoeksoort'] == "1")) ? 'selected' : '' ?>>Applicaties</option>
<option value="2" <?php echo ((isset($_POST['zoeksoort'])) and ($_POST['zoeksoort'] == "2")) ? 'selected' : '' ?>>Tools</option>
</select>
<br>
<select name='zoekgroep' onchange='this.form.submit()'>
<option value="0" <?php echo ((isset($_POST['zoekgroep'])) and ($_POST['zoekgroep'] == "0")) ? 'selected' : '' ?>>Leeg</option>
<option value="12" <?php echo ((isset($_POST['zoekgroep'])) and ($_POST['zoekgroep'] == "12")) ? 'selected' : '' ?>>groep 1 en 2</option>
<option value="9" <?php echo ((isset($_POST['zoekgroep'])) and ($_POST['zoekgroep'] == "9")) ? 'selected' : '' ?>>Alle groepen</option>
</select>
<noscript><input type="submit" value="Submit"></noscript>
</form>
<select name='zoeksoort' onchange='this.form.submit()'>
<option value="0" <?php echo ((isset($_POST['zoeksoort'])) and ($_POST['zoeksoort'] == "0")) ? 'selected' : '' ?>>Leeg</option>
<option value="1" <?php echo ((isset($_POST['zoeksoort'])) and ($_POST['zoeksoort'] == "1")) ? 'selected' : '' ?>>Applicaties</option>
<option value="2" <?php echo ((isset($_POST['zoeksoort'])) and ($_POST['zoeksoort'] == "2")) ? 'selected' : '' ?>>Tools</option>
</select>
<br>
<select name='zoekgroep' onchange='this.form.submit()'>
<option value="0" <?php echo ((isset($_POST['zoekgroep'])) and ($_POST['zoekgroep'] == "0")) ? 'selected' : '' ?>>Leeg</option>
<option value="12" <?php echo ((isset($_POST['zoekgroep'])) and ($_POST['zoekgroep'] == "12")) ? 'selected' : '' ?>>groep 1 en 2</option>
<option value="9" <?php echo ((isset($_POST['zoekgroep'])) and ($_POST['zoekgroep'] == "9")) ? 'selected' : '' ?>>Alle groepen</option>
</select>
<noscript><input type="submit" value="Submit"></noscript>
</form>
Maar het probleem is nu dat hij niet meer onthoud wat je had ingegeven. Als ik bij de zoeksoort invul dat ik een applicaties zoek dan moet hij normaal 1 zijn. Deze 1 komt in mijn URL te staan maar in het zoekbalkje staat nu weer leeg. En hier moet hij eigenlijk onthouden dat ik een 1 heb ingevuld en dit ook weer weergeven. Voordat ik het formulier automatisch liet opsturen werkte het wel. Toen was mijn code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<form method="POST" action="programmas.php">
<select type="text" name="zoeksoort">
<option value="0" >Leeg</option>
<option value="1" selected>Applicaties</option>
<option value="2" >Tools</option>
</select><br>
<select type="text" name="zoekgroep">
<option value="0" >Leeg</option>
<option value="12" selected>groep 1 en 2</option>
<option value="9" >Alle groepen</option>
</select><br>
<select type="text" name="zoekvak">
<option value="0" selected>Leeg</option>
<option value="rekenen" >Rekenen</option>
<option value="extra" >Extra</option>
</select>
<br>
<center><input class="myButton" type="submit" name="submit" value="Zoeken"></center>
</form>
<select type="text" name="zoeksoort">
<option value="0" >Leeg</option>
<option value="1" selected>Applicaties</option>
<option value="2" >Tools</option>
</select><br>
<select type="text" name="zoekgroep">
<option value="0" >Leeg</option>
<option value="12" selected>groep 1 en 2</option>
<option value="9" >Alle groepen</option>
</select><br>
<select type="text" name="zoekvak">
<option value="0" selected>Leeg</option>
<option value="rekenen" >Rekenen</option>
<option value="extra" >Extra</option>
</select>
<br>
<center><input class="myButton" type="submit" name="submit" value="Zoeken"></center>
</form>
Weet iemand hoe het kan dat hij het niet meer onthoudt?
Groetjes,
Dennis
Gewijzigd op 29/12/2015 19:01:52 door Dennis van DUin
- In het eerste voorbeeld specificeer je in de <form> geen method. De method is standaard GET, dus de waarden uit het formulier komen in de URL te staan. Maar dan moet je ze ook met GET opvragen!
- Verder is de and operator in PHP &&.
Zoiets zou dus moeten werken:
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
<form>
<select name='zoeksoort' onchange='this.form.submit()'>
<option value="0" <?php echo ((isset($_GET['zoeksoort'])) && ($_GET['zoeksoort'] == "0")) ? 'selected' : '' ?>>Leeg</option>
<option value="1" <?php echo ((isset($_GET['zoeksoort'])) && ($_GET['zoeksoort'] == "1")) ? 'selected' : '' ?>>Applicaties</option>
<option value="2" <?php echo ((isset($_GET['zoeksoort'])) && ($_GET['zoeksoort'] == "2")) ? 'selected' : '' ?>>Tools</option>
</select>
<br>
<select name='zoekgroep' onchange='this.form.submit()'>
<option value="0" <?php echo ((isset($_GET['zoekgroep'])) && ($_GET['zoekgroep'] == "0")) ? 'selected' : '' ?>>Leeg</option>
<option value="12" <?php echo ((isset($_GET['zoekgroep'])) && ($_GET['zoekgroep'] == "12")) ? 'selected' : '' ?>>groep 1 en 2</option>
<option value="9" <?php echo ((isset($_GET['zoekgroep'])) && ($_GET['zoekgroep'] == "9")) ? 'selected' : '' ?>>Alle groepen</option>
</select>
<noscript><input type="submit" value="Submit"></noscript>
</form>
<select name='zoeksoort' onchange='this.form.submit()'>
<option value="0" <?php echo ((isset($_GET['zoeksoort'])) && ($_GET['zoeksoort'] == "0")) ? 'selected' : '' ?>>Leeg</option>
<option value="1" <?php echo ((isset($_GET['zoeksoort'])) && ($_GET['zoeksoort'] == "1")) ? 'selected' : '' ?>>Applicaties</option>
<option value="2" <?php echo ((isset($_GET['zoeksoort'])) && ($_GET['zoeksoort'] == "2")) ? 'selected' : '' ?>>Tools</option>
</select>
<br>
<select name='zoekgroep' onchange='this.form.submit()'>
<option value="0" <?php echo ((isset($_GET['zoekgroep'])) && ($_GET['zoekgroep'] == "0")) ? 'selected' : '' ?>>Leeg</option>
<option value="12" <?php echo ((isset($_GET['zoekgroep'])) && ($_GET['zoekgroep'] == "12")) ? 'selected' : '' ?>>groep 1 en 2</option>
<option value="9" <?php echo ((isset($_GET['zoekgroep'])) && ($_GET['zoekgroep'] == "9")) ? 'selected' : '' ?>>Alle groepen</option>
</select>
<noscript><input type="submit" value="Submit"></noscript>
</form>
Bedankt alles is nu gelukt!
Bo Ter Ham op 29/12/2015 19:32:09:
- Verder is de and operator in PHP &&.
Beide kunnen!
Zie http://codepad.org/dIecwmeC
Dus $a == 1 AND $b == 2 doet exact hetzelfde als $a == 1 && $b == 2
...
Eddy E op 29/12/2015 21:55:04:
Beide kunnen!
Zie http://codepad.org/dIecwmeC
Dus $a == 1 AND $b == 2 doet exact hetzelfde als $a == 1 && $b == 2
...
Bo Ter Ham op 29/12/2015 19:32:09:
- Verder is de and operator in PHP &&.
Beide kunnen!
Zie http://codepad.org/dIecwmeC
Dus $a == 1 AND $b == 2 doet exact hetzelfde als $a == 1 && $b == 2
...
Beide kunnen inderdaad, maar ze doen niet hetzelfde!
Code (php)
In het bovenstaande geval levert true and false gewoon true op, terwijl je dat eigenlijk niet verwacht. Het lijkt mij dus beter om standaard && te gebruiken.
Wat speurwerk: http://php.net/manual/en/language.operators.precedence.php
Het heeft dus te maken met onze Meneer Van Dale Wacht Op Antwoord (Machtsverheffen, vermenigvuldigen, worteltrekken, optellen, aftrekken).
1 + 2 * 3 = 7
Het =-teken is trouwens wel vanaf rechts:
$a = 1;
$b = 2;
$c = 3;
$c = $b = $a;
echo $c; // 1
Terug naar && en AND: daarin komt && eerder dan AND.
Dus er wordt eerder naar && gekeken dan naar AND.
Maar dat is niet belangrijk!
Belangrijk is dat de = eerder dan AND komt!
Dus bij $c = $a and $b; wordt $c eerst $a gemaakt en dan wordt er gekeken naar $b (maar niets mee gedaan.
Bij $c = $a && $b; wordt eerst gekeken of $a en $b hetzelfde zijn, zo ja: dan wordt $c true. Zo nee, dan wordt $c false.
Maar goed om te weten en om vanaf nu dus gewoon && te doen.
Gewijzigd op 30/12/2015 20:56:16 door Eddy E