waarde onthouden in select

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dennis  van DUin

Dennis van DUin

29/12/2015 19:01:05
Quote Anchor link
Beste forumleden,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>


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


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

PHP hulp

24/12/2024 06:54:02
 
Bo Ter Ham

Bo Ter Ham

29/12/2015 19:32:09
Quote Anchor link
Er zijn twee dingen fout aan je code
- 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)
PHP script in nieuw venster Selecteer het PHP script
1
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>
 
Dennis  van DUin

Dennis van DUin

29/12/2015 19:48:55
Quote Anchor link
Bedankt alles is nu gelukt!
 
Eddy E

Eddy E

29/12/2015 21:55:04
Quote Anchor link
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
...
 
Bo Ter Ham

Bo Ter Ham

30/12/2015 12:47:08
Quote Anchor link
Eddy E op 29/12/2015 21:55:04:
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$a
= true;
$b = false;

$c = $a and $b;
$d = $a && $b;
var_dump($c); //true
var_dump($d); //false
?>

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.
 
Eddy E

Eddy E

30/12/2015 20:50:18
Quote Anchor link
Gek inderdaad.
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
 



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.