Hoe maak ik een vervolg invulveld?

Status
Niet open voor verdere reacties.

wentwillemsen

Gebruiker
Lid geworden
6 dec 2008
Berichten
5
In een formulier wordt een veld ingevuld aan de hand van een selectielijst met NAME="lijst".
Afhankelijk van het geselecteerde getal 1, 2 of 3 wil ik een aantal vervolg invulvelden krijgen.
Nog afgezien van de vervolgvelden . . . .

. . . . . waarom werkt dit niet:
PHP:
<?php
$aantal=$_POST['lijst'];
if ($aantal== 3){
echo 'Ik fiets niet genoeg';
}else{
echo 'ik fiets ' . $aantal . ' kilometer per dag' ;
}
?>
En dit wel:
PHP:
<?php
$aantal=2;
if ($aantal== 3){
echo 'Ik fiets niet genoeg';
}else{
echo 'ik fiets ' . $aantal . ' kilometer per dag' ;
}
?>
Op de één of andere manier snapt het script $_POST['lijst'] niet.

Wie helpt mij???
 
Laatst bewerkt door een moderator:
Kun je de bijbehorende HTML-code eens laten zien?

Om je een paar uur leeswerk te besparen heb ik de code een beetje gestript, het formulier iets korter gemaakt en de nodige style's verwijderd.
Het gaat om de selectie die bijna onderaan staat. Als er 2 of 3 geselecteerd wordt, moeten er vervolgvelden komen waar de namen van de 2e en 3e persoon ingevuld moeten worden. Als er 1 geselecteerd wordt moet er uiteraard niets gebeuren.
Hier is de code:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test</title>
<style type="text/css">
<!--
body {
	background-image: url();
	background-color: #f4e2ba;
	margin-left: 0px;
	margin-right: 0px;
	margin-top: 0px;
}
-->
</style>
<script type="text/javascript">
<!--
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
//-->
</script>
</head>

<body onload="MM_preloadImages('Untitled-1-2_r10_c6_f2.jpg','Untitled-1-2_r11_c2_f2.jpg')">
<table width="978" height="984" border="0" align="center">
  <tr>
    <td height="784" colspan="2" align="left"><?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{ 
    $date = date('d:m:Y'); 
    $time = date('H:i');
    $to = 'maakt@niet.uit'; 
	$onderwerp = "RESERVEREN";
	
    if(!empty($_POST['achternaam']) && !empty($_POST['adres']) && !empty($_POST['postcode']) && !empty($_POST['woonplaats']) && !empty($_POST['lijst']))
    { 
        if( !eregi("[A-Za-z0-9_-]+([.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([.]{1}[A-Za-z0-9-]+)+", $_POST['email']) )
        {
            unset($_POST['email']);
        }
        $headers = "From: ".( empty($_POST['email']) ? "contact@".$_SERVER['SERVER_NAME'] : $_POST['email'] )."\r\n" .
            "Reply-To: ".( empty($_POST['email']) ? "contact@".$_SERVER['SERVER_NAME'] : $_POST['email'] )."\r\n" .
            "X-Mailer: PHP/" . phpversion();
        mail(
            $to,
            $onderwerp,
            "Adres: ".$_POST['adres']."\n          ".$_POST['postcode']."  ".$_POST['woonplaats']."\nAantal personen: ".$_POST['lijst']."\nVerzonden op: ".$date." om ".$time."\n\n",
            $headers
        ); 
		echo 'Uw bericht is succesvol verstuurd, klik op "Terug". <input type="BUTTON" value="Terug" onclick="history.back()" />'; 
    }
    else
    { 
        echo 'Een of meerdere velden zijn niet of niet goed ingevuld, klik op "Terug". <input type="BUTTON" value="Terug" onclick="history.back()" />'; 
    } 
}
else
{ 
?>
      <form action="<?=$_SERVER['PHP_SELF'];?>" method="post" name="form1" id="form1">
          <table width="542" height="240" border="0" align="center" cellpadding="0" cellspacing="0">
            <tr>
              <td width="127" height="37" align="right" valign="middle">Achternaam:*</td>
              <td width="299"><input name="achternaam" type="text" size="45" /></td>
            </tr>
            <tr>
              <td height="37" align="right" valign="middle">Adres:*</td>
              <td><input name="adres" type="text" size="45" /></td>
            </tr>
            <tr>
              <td height="37" align="right" valign="middle">Postcode:*</td>
              <td><input name="postcode" type="text" size="30" /></td>
            </tr>
            <tr>
              <td height="37" align="right" valign="middle">Woonplaats:*</td>
              <td><input name="woonplaats" type="text" size="45" /></td>
            </tr>
            <tr>
              <td height="37" align="right" valign="middle" >Aantal personen:*</td>
              <td><select name="lijst" id="lijst">
                <option>1</option>
                <option>2</option>
                <option selected="selected">3</option>
              </select>
              </td>
            <tr>
              <td align="right" valign="top"></td>
              <td>
                <p>
                  <input type="submit" name="submit" value="Versturen" />
                  <input type="reset" name="Reset" value="Wissen" />
                </p>              
              </td>
            </tr>
        </table>
      </form>
    <?php
} 
?></td>
  </tr>
</table>
</body>
</html>
Mod-edit: Graag PHP-tags om je code zetten, leest wat prettiger ;)
 
Laatst bewerkt door een moderator:
Verander
HTML:
<td><select name="lijst" id="lijst">
                <option>1</option>
                <option>2</option>
                <option selected="selected">3</option>
              </select>

eens in
HTML:
<td><select name="lijst" id="lijst">
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3" selected="selected">3</option>
              </select>

Dit lost het probleem op dat $_POST['lijst'] leeg is.

Om velden toe te voegen kan je ze het beste al toevoegen (lijst staat immers standaard op '3'):

HTML:
<input type="text" name="naam2">
<input type="text" name="naam3">

Dan kan je een onChange aan 'lijst' toevoegen:
HTML:
<select name="lijst" id="lijst" onChange="toonVelden()">

Die functie definieer je dan in de head:
HTML:
<script type="text/javascript">
function toonVelden()
{
   if (document.form1.lijst.selectedIndex == 0)
   {
      document.form1.naam2.style.display = "none";
      document.form1.naam3.style.display = "none";
   }
    if (document.form1.lijst.selectedIndex == 1)
   {
      document.form1.naam2.style.display = "block";
      document.form1.naam3.style.display = "none";
   }
    if (document.form1.lijst.selectedIndex == 2)
   {
      document.form1.naam2.style.display = "block";
      document.form1.naam3.style.display = "block";
   }
}
</script>
 
Laatst bewerkt:
Verander
HTML:
<td><select name="lijst" id="lijst">
                <option>1</option>
                <option>2</option>
                <option selected="selected">3</option>
              </select>

eens in
HTML:
<td><select name="lijst" id="lijst">
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3" selected="selected">3</option>
              </select>

Ik heb het veranderd, maar de uitwerking is nog steeds hetzelfde.
$_POST['lijst'] is nog steeds leeg.
Ik heb het volgende stukje ter controle toegevoegd onder </select> en boven <td>

PHP:
             <?php
    $aantal= $_POST['lijst'];
    $test = 20;
    if ($aantal== 3){
     echo 'Prettig weekend!';
    }else{
    echo 'ik kom met ' . $aantal . '.. personen, waarvan '.$_POST['lijst'].'.. met fiets en '.$test.'.. zonder.' ;
}
   ?>

Het resultaat is: ik kom met .. personen, waarvan .. met fiets en 20..zonder.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan