list items als boolean waarde

Status
Niet open voor verdere reacties.

stevebravo

Gebruiker
Lid geworden
16 jan 2010
Berichten
156
Ik gebruik een list voor de opties Selecteer, ja, en nee (vraag of iemand een rijbewijs heeft)
de html regel ziet er als volgt uit...
PHP:
<label for="rijbewijs"><span>Rijbewijs</span>
   <select name="rijbewijs" id="rijbewijs">
   <option selected="Selecteer">Selecteer</option>
   <option <?php if ($rijbewijs == 0){ print "selected=\"ja\" "; }?> value="<?php print 0;?>">ja</option>
   <option <?php if ($rijbewijs == 1){ print "selected=\"nee\" "; }?> value="<?php print 1; ?>">nee</option>
   </select>
</label>

Ik gebruik een eenvoudige if isset post functie om de data te verwerken.

PHP:
if (isset($_POST["verder"]))
{
$rijbewijs = $_POST['rijbewijs'];
...
$sql .=	"rijbewijs=' $rijbewijs ', ";
...

}
Nu zit ik met een klein probleempje.. $rijbewijs is altijd gelijk aan "0", en daarom springt hij altijd op ja, in plaats van op Selecteer.. hoe kan ik dit het beste aanpassen?

dus.. op het moment dat iemand op verder klikt, dan moet deze op Selecteer blijven staan en een error geven met het bericht dat hij dit gegeven nog moet invullen, tenzij hij/zij dus ja/nee heeft ingevoerd.. dan gaat hij/zij wel verder.

bedankt
 
Dat is niet hoe selected werkt... het is altijd:

HTML:
<option selected="selected" value="bla">Blaat</option>

Je kunt niks opgeven na de selected, je moet het selected attribuut gewoon maar 1x outputten, op de regel die je geselecteerd wil hebben.
 
Dat is niet hoe selected werkt... het is altijd:

HTML:
<option selected="selected" value="bla">Blaat</option>

Je kunt niks opgeven na de selected, je moet het selected attribuut gewoon maar 1x outputten, op de regel die je geselecteerd wil hebben.

ok, dus ik verander alles in selected.. maar ik zit nog steeds met hetzelfde probleem..
 
Als ik je vraag zo bekijk, is het een kwestie van de php code uit je html halen:

HTML:
<label for="rijbewijs"><span>Rijbewijs</span>
   <select name="rijbewijs" id="rijbewijs">
   <option selected="Selecteer">Selecteer</option>
   <option value="0">ja</option>
   <option value="1">nee</option>
   </select>
</label>
 
Als ik je vraag zo bekijk, is het een kwestie van de php code uit je html halen:

HTML:
<label for="rijbewijs"><span>Rijbewijs</span>
   <select name="rijbewijs" id="rijbewijs">
   <option selected="Selecteer">Selecteer</option>
   <option value="0">ja</option>
   <option value="1">nee</option>
   </select>
</label>

dit is het niet, want dan krijg ik gezeur met mijn session..
als iemand terug bladert naar de pagina met rijbewijs, dan komt rijbewijs dus weer automatisch op Selecteer te staan, maar dat moet niet, hij moet dan bijvoorbeeld op "ja" blijven staan..
 
Het spijt me zeer, maar ik snap je vraag gewoon niet, aangezien je nu weer iets anders verteld in je reactie... Kun je een uitgebreid voorbeeld geven, en het liefst een linkje?
 
Ok, ik zal een nieuwe poging wagen :D

PHP:
if (isset($_POST["verder"]))
{
if ( !is_numeric($_POST['rijbewijs'])  ) {
		$errors = array_merge($errors, array('Je bent vergeten aan te geven of je een rijbewijs hebt.'));
$rijbewijs = $_POST['rijbewijs'];
if (empty($errors))
{
$sql = "UPDATE table SET rijbewijs=' $rijbewijs ', ";
$sql .= "WHERE table_id=".$_SESSION['id']
$resultaat = odbc_exec($connectie, $sql) or die (print "result error ".odbc_error);
if ($resultaat)
{
        header('Location: pagina.php');
}
}

}
$sql = 'SELECT rijbewijs FROM personalia WHERE personalia_id = ' . $_SESSION['id'];
$result = odbc_exec($connectie, $sql);
if ($result & empty($errors))
{
	while($r = odbc_fetch_array($result)) {
             $rijbewijs = $r['rijbewijs'];
}

html
body 
form
.. blabla
<label for="rijbewijs"><span>Rijbewijs</span>
   <select name="rijbewijs" id="rijbewijs">
   <option selected="selected">Selecteer</option>
   <option <?php if ($rijbewijs == 0){ print "selected=\"selected\" "; }?> value="<?php print 0; ?>">ja</option>
   <option <?php if ($rijbewijs == 1){ print "selected=\"selected\" "; }?> value="<?php print 1; ?>">nee</option>
   </select>
</label>

dus een nieuwe gebruiker die op de site komt moet in de checkbox "Selecteer zien staan"
hoe vaak hij ook op de knop "verder" klikt, hij blijft een foutmelding krijgen dat hij een waarde moet selecteren..

Ik kan een if isset post verder doen in de option, maar dan doet deze dat maar 1 keer, en floept hij daarna op ja, omdat dat gelijk staat aan de boolean waarde 0!

dus ik wil dat hij op selecteer blijft staan wanneer de persoon niks heeft ingevoerd..
bedankt
 
Aaah, je hebt het over het verschil tussen boleans en integers?

0 = false
1 = true

bij een gewone if structuur met 2x = (== dus), zal php niet letten of je false of 0 hebt gebruikt... Voor een vergelijking waarbij de EXACTE inhoud wordt vergeleken, heb je 3 = tekens nodig (=== dus):

PHP:
$blabla = false;
if($blabla === 0) {
echo 'dit wordt niet weergeven';
}
 
Aaah, je hebt het over het verschil tussen boleans en integers?

0 = false
1 = true

bij een gewone if structuur met 2x = (== dus), zal php niet letten of je false of 0 hebt gebruikt... Voor een vergelijking waarbij de EXACTE inhoud wordt vergeleken, heb je 3 = tekens nodig (=== dus):

PHP:
$blabla = false;
if($blabla === 0) {
echo 'dit wordt niet weergeven';
}

ok bedankt.. maar hoe ga ik er nu voor zorgen dat wanneer ik "ja" selecteer.. en ik druk vervolgens op de "verder" knop, en ik krijg een foutmelding omdat een ander input element een error geeft (bijvoorbeeld een tekstbox voor naam)
hoe kan ik ervoor zorgen dat deze op ja blijft staan? en niet terug floept naar Selecteer?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan