Hallo,

Ik ben bezig met een site voor mn werkgever te maken.
Op de site kunnen belegde broodjes besteld worden.
Ik heb een checkbox gemaakt in het formulier, die wanneer aan gevinkt ervoor zorgt dat er 2 velden bij komen voor adres en plaats.
Nu wil ik dat de wanneer de checkbox aan gevinkt is gecontroleerd wordt of adres en plaats ingevuld zijn.
Ik heb tot nu toe dit:

<?php

$afzender = htmlspecialchars($_POST['email']);

if (isset($_POST['submit']))
{
$naam = htmlspecialchars($_POST['naam']);
$bedrijf = htmlspecialchars($_POST['bedrijf']);
$tel = htmlspecialchars($_POST['telefoon']);
$email = htmlspecialchars($_POST['email']);
$bezorgen = htmlspecialchars($_POST['bezorgen']);
$adres = htmlspecialchars($_POST['adres']);
$plaats = htmlspecialchars($_POST['plaats']);

{
// telefoon controle
if(!is_numeric($tel) || strlen($tel) < 5)
$tel_fout = 1;
// e-mail controle
if (function_exists('filter_var') && !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
$email_fout = 1;
}

{
if(isset($_POST['submit']))
{
if(empty($naam))
echo '<p>Uw naam is niet ingevuld.<br/> <br/> <a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p></p>';
elseif(empty($bedrijf))
echo '<p>Uw bedrijf is niet ingevuld.<br/> <br/> <a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p></p>';
elseif(!empty($email_fout))
echo '<p>Uw e-mailadres is niet juist.<br/> <br/> <a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p></p>';
elseif(!empty($tel_fout))
echo '<p>Uw telefoon nummer is niet juist.<br/> <br/> <a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p></p>';
}
}


if($bezorgen == 'ja')
{
if(empty($adres))
echo '<p>U heeft aangegeven dat Uw bestelling bezorgd moet worden.<br/>Vult U alstublieft het adres in.<br/><br/><a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p>';
elseif(empty($plaats))
echo '<p>U heeft aangegeven dat Uw bestelling bezorgd moet worden.<br/>Vult U alstublieft de plaats in.<br/><br/><a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p>';
}

else
{

$headers = "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "MIME-Version: 1.0\r\n";

$headers .= "From: $naam <$afzender>\r\n"; // de afzender van de mail

$bericht =

'bestelling Belegdebroodjes.
<br/>
<br/>
<table width="500" border="0">
<tr>
<td width="116">Naam:</td>
<td width="374">'.$_POST['naam'].'</td>
</tr>
<tr>
<td>Bedrijf:</td>
<td>'.$_POST['bedrijf'].'</td>
</tr>
<tr>
<td>Telfoon nummer:</td>
<td>'.$_POST['telefoon'].'</td>
</tr>
<tr>
<td>E-mail adres:</td>
<td>'.$_POST['email'].'</td>
</tr>
<tr>
<td>Datum:</td>
<td>'.$_POST['dag'].'-'.$_POST['maand'].'-'.$_POST['jaar'].'</td>
</tr>
<tr>
<td>Bezorgen:</td>
<td>'.$_POST['bezorgen'].'</td>
</tr>
<tr>
<td>Adres:</td>
<td>'.$_POST['adres'].'</td>
</tr>
<tr>
<td>Plaats</td>
<td>'.$_POST['plaats'].'</td>
</tr>
</table>
<br/>
<br/>
<table width="791" border="1">
<tr>
<td width="180" valign="bottom">Broodje:</td>
<td width="70" align="center" valign="bottom">Klein:<br />
Hard / <br />
Zacht</td>
<td width="70" align="center" valign="bottom">Groot:<br />
Petit pain,<br />
etc.</td>
<td width="471" valign="bottom">Opmerking:</td>
</tr>
<tr>
<td><label for="brie">Brie</label></td>
<td>'.$_POST['brie'].'</td>
<td>'.$_POST['brie1'].'</td>
<td>'.$_POST['brie2'].'</td>
</tr>
<tr>
<td><label for="ei">Ei</label></td>
<td>'.$_POST['ei'].'</td>
<td>'.$_POST['ei1'].'</td>
<td>'.$_POST['ei2'].'</td>
</tr>
<tr>
<td>Filet American</td>
<td>'.$_POST['filet'].'</td>
<td>'.$_POST['filet1'].'</td>
<td>'.$_POST['filet2'].'</td>
</tr>
<tr>
<td>Gezond</td>
<td>'.$_POST['gezond'].'</td>
<td>'.$_POST['gezond1'].'</td>
<td>'.$_POST['gezond2'].'</td>
</tr>
<tr>
<td>Ham / Kaas</td>
<td>'.$_POST['hk'].'</td>
<td>'.$_POST['hk1'].'</td>
<td>'.$_POST['hk2'].'</td>
</tr>
<tr>
<td>Hawaï</td>
<td>'.$_POST['hw'].'</td>
<td>'.$_POST['hw1'].'</td>
<td>'.$_POST['hw2'].'</td>
</tr>
<tr>
<td>Jong Belegen Kaas</td>
<td>'.$_POST['jk'].'</td>
<td>'.$_POST['jk1'].'</td>
<td>'.$_POST['jk2'].'</td>
</tr>
<tr>
<td>Oude Kaas</td>
<td>'.$_POST['ok'].'</td>
<td>'.$_POST['ok1'].'</td>
<td>'.$_POST['ok2'].'</td>
</tr>
<tr>
<td>Rundvleessalade</td>
<td>'.$_POST['rv'].'</td>
<td>'.$_POST['rv1'].'</td>
<td>'.$_POST['rv2'].'</td>
</tr>
<tr>
<td>Amerikaanse kipsalade</td>
<td>'.$_POST['ak'].'</td>
<td>'.$_POST['ak1'].'</td>
<td>'.$_POST['ak2'].'</td>
</tr>
<tr>
<td>Alpenspitz Roomkaas</td>
<td>'.$_POST['rk'].'</td>
<td>'.$_POST['rk1'].'</td>
<td>'.$_POST['rk2'].'</td>
</tr>
<tr>
<td>Kip Roomkaas</td>
<td>'.$_POST['kr'].'</td>
<td>'.$_POST['kr1'].'</td>
<td>'.$_POST['kr2'].'</td>
</tr>
<tr>
<td>Rosbief</td>
<td>'.$_POST['ros'].'</td>
<td>'.$_POST['ros1'].'</td>
<td>'.$_POST['ros2'].'</td>
</tr>
<tr>
<td>Italiaansebol</td>
<td>'.$_POST['ita'].'</td>
<td>'.$_POST['ita1'].'</td>
<td>'.$_POST['ita2'].'</td>
</tr>
<tr>
<td>Tonijnsalade</td>
<td>'.$_POST['ts'].'</td>
<td>'.$_POST['ts1'].'</td>
<td>'.$_POST['ts2'].'</td>
</tr>
<tr>
<td>Warme Beenham</td>
<td>'.$_POST['wb'].'</td>
<td>'.$_POST['wb1'].'</td>
<td>'.$_POST['wb2'].'</td>
</tr>
<tr>
<td colspan="4">&nbsp;</td>
</tr>
<tr>
<td colspan="4">Extra Bestellingen:</td>
</tr>
<tr>
<td colspan="4">'.$_POST['extra'].'&nbsp;</td>
</tr>
</table>
<br/>
<br/>
IPAdres: '.$_SERVER['REMOTE_ADDR'];


@mail('[email protected]', 'Bestelling belegdebroodjes', $bericht, $headers) or die('Vanwege een fout kan dit bericht niet verstuurd worden.<br/> <br/> <a href="javascript:javascript:history.go(-1)">terug</a></p>');
echo 'Uw bestelling is verstuurd. <br/> U ontvangt een bevestigings mails als Uw bestelling in goede orde is ontvangen.';
}
} else {
?>
"Ik heb een checkbox gemaakt in het formulier, die wanneer aan gevinkt ervoor zorgt dat er 2 velden bij komen voor adres en plaats." Je hebt helemaal geen checkbox in onderstaande code staan.

- Wat heb je geprobeerd
- Wat lukt er niet etc

We zijn hier geen afhaalchinees waar wij code voor je gaan schrijven, we helpen je alleen maar.

edit; ik denk dat je naar de isset() op zoek bent.
sorry,

Zodra ik de checkbox aan vink op de site en adres en plaats invul wordt het formulier niet verstuurd.
Maar zodra ik hem aan vink en ze niet invul krijg ik wel de foutmelding dat ik ze moet invullen.

Ik heb een aantal dingen geprobeerd en veel op google gezocht.
Ik heb nu dus staan:

<?php
if($bezorgen == 'ja')
{
if(empty($adres))
echo '<p>U heeft aangegeven dat Uw bestelling bezorgd moet worden.<br/>Vult U alstublieft het adres in.<br/><br/><a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p>';
elseif(empty($plaats))
echo '<p>U heeft aangegeven dat Uw bestelling bezorgd moet worden.<br/>Vult U alstublieft de plaats in.<br/><br/><a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p>';
}
?>

ik heb ook gehad:

<?php
if(isset($bezorgen))
{
if (empty($adres))
echo '<p>U heeft aangegeven dat Uw bestelling bezorgd moet worden.<br/>Vult U alstublieft het adres in.<br/> <br/> <a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p>';
elseif (empty($plaats))
echo '<p>U heeft aangegeven dat Uw bestelling bezorgd moet worden.<br/>Vult U alstublieft de plaats in.<br/> <br/> <a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p>';
}
?>
vervang isset($bezorgen) eens door isset($_POST['bezorgen']) .. want je $bezorgen is sowieso geisset boven in het script.

edit; en wat is de value="" van je 'bezorgen' checkbox?
value is ja
Heb hem vervangen voor isset($_POST['bezorgen'])
Het formulier wordt nog niet verstuurd.

Ik heb al veel "gespeeld" met de { }

De ene keer verstuurd hij het form alleen als ik juist wel de plaats en adres ingevuld heb.
En dan verstuurt hij hem weer niet als als ik plaats en adres niet ingevuld heb. Maar krijg ook geen foutmelding.

Op deze manier verstuurd hij hem niet als de checkbox uitgeschakeld is:

<?php

$afzender = htmlspecialchars($_POST['email']);

if (isset($_POST['submit']))
{
$naam = htmlspecialchars($_POST['naam']);
$bedrijf = htmlspecialchars($_POST['bedrijf']);
$tel = htmlspecialchars($_POST['telefoon']);
$email = htmlspecialchars($_POST['email']);
$bezorgen = htmlspecialchars($_POST['bezorgen']);
$adres = htmlspecialchars($_POST['adres']);
$plaats = htmlspecialchars($_POST['plaats']);

{
// telefoon controle
if(!is_numeric($tel) || strlen($tel) < 5)
$tel_fout = 1;
// e-mail controle
if (function_exists('filter_var') && !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
$email_fout = 1;
}


if(empty($naam))
echo '<p>Uw naam is niet ingevuld.<br/> <br/> <a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p></p>';
elseif(empty($bedrijf))
echo '<p>Uw bedrijf is niet ingevuld.<br/> <br/> <a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p></p>';
elseif(!empty($email_fout))
echo '<p>Uw e-mailadres is niet juist.<br/> <br/> <a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p></p>';
elseif(!empty($tel_fout))
echo '<p>Uw telefoon nummer is niet juist.<br/> <br/> <a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p></p>';


if(isset($_POST['bezorgen']))

if(empty($adres))
echo '<p>U heeft aangegeven dat Uw bestelling bezorgd moet worden.<br/>Vult U alstublieft het adres in.<br/><br/><a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p>';
elseif(empty($plaats))
echo '<p>U heeft aangegeven dat Uw bestelling bezorgd moet worden.<br/>Vult U alstublieft de plaats in.<br/><br/><a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p>';


else
{
?>

Bij deze het zelfde:

<?php

$afzender = htmlspecialchars($_POST['email']);

if (isset($_POST['submit']))
{
$naam = htmlspecialchars($_POST['naam']);
$bedrijf = htmlspecialchars($_POST['bedrijf']);
$tel = htmlspecialchars($_POST['telefoon']);
$email = htmlspecialchars($_POST['email']);
$bezorgen = htmlspecialchars($_POST['bezorgen']);
$adres = htmlspecialchars($_POST['adres']);
$plaats = htmlspecialchars($_POST['plaats']);

{
// telefoon controle
if(!is_numeric($tel) || strlen($tel) < 5)
$tel_fout = 1;
// e-mail controle
if (function_exists('filter_var') && !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
$email_fout = 1;
}

if(empty($naam))
echo '<p>Uw naam is niet ingevuld.<br/> <br/> <a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p></p>';
elseif(empty($bedrijf))
echo '<p>Uw bedrijf is niet ingevuld.<br/> <br/> <a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p></p>';
elseif(!empty($email_fout))
echo '<p>Uw e-mailadres is niet juist.<br/> <br/> <a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p></p>';
elseif(!empty($tel_fout))
echo '<p>Uw telefoon nummer is niet juist.<br/> <br/> <a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p></p>';


if(isset($_POST['bezorgen']))
{
if(empty($adres))
echo '<p>U heeft aangegeven dat Uw bestelling bezorgd moet worden.<br/>Vult U alstublieft het adres in.<br/><br/><a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p>';
elseif(empty($plaats))
echo '<p>U heeft aangegeven dat Uw bestelling bezorgd moet worden.<br/>Vult U alstublieft de plaats in.<br/><br/><a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p>';
}

else
{
?>
Controleren of een formulier verzonden is:
if($_SERVER['REQUEST_METHOD'] == "POST")

Je gaat er van uit dat alle velden gevuld zijn --> je kopieert ze naar nieuwe variabelen. Waar controleer je of ze gevuld zijn? En waarom al die variabelen kopiëren?

Zet
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
?>

eens boven aan je code.

"Ik heb al veel "gespeeld" met de { }" --> niet spelen, maar logisch opbouwen.

Overigens vind ik je elseif controle niet klantvriendelijk. Controleer alles en geef in 1x de foutmelding(en) terug, zodat de klant in 1x alles kan veranderen.

Debuggen: controleer in je script wat er gebeurt. Plaats desnoods op sommige plekken een echo 'test'; om te kijken of hij een bepaalde lus wel/niet ingaat.

Variabelen buiten quotes (in $headers). Twijfel of je headers wel volledig (/juist) zijn.
Waarom @ voor de mailfunctie?

Wat betreft je vinkje bij bezorgen --> kijk eens hoe een checkbox wordt doorgegeven.
Menno Bliek op 20/03/2012 22:15:06

<?php
if(isset($_POST['bezorgen']))
if(empty($adres))
echo '<p>U heeft aangegeven dat Uw bestelling bezorgd moet worden.<br/>Vult U alstublieft het adres in.<br/><br/><a
?>


Gaat inderdaad niet werken --> je doet verder helemaal niets met de controle op de isset. Staat er alleen als code in....
Ligt het nu aan mij of mis je echt een tal aan {} brackets bij je if en else if statements? volgens php.net moeten er toch echt elke statement zijn {} hebben.

Zo dus.

<?php
if(empty($naam)){
            echo '<p>Uw naam is niet ingevuld.<br/> <br/> <a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p></p>';
        }elseif(empty($bedrijf)){
            echo '<p>Uw bedrijf is niet ingevuld.<br/> <br/> <a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p></p>';
        }elseif(!empty($email_fout)){
            echo '<p>Uw e-mailadres is niet juist.<br/> <br/> <a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p></p>';
        }elseif(!empty($tel_fout)){
            echo '<p>Uw telefoon nummer is niet juist.<br/> <br/> <a href="javascript:javascript:history.go(-1)">klik hier om te veranderen</a></p></p>';
}
?>

Ook bij je telefooncheck gebruik je geen {} in je statements.

Reageren