Goedemorgen,

Alle input velden van mijn formulier verdwijnen die na de eerste ECHO foutmelding staan. Hoe kan ik dit verhelpen zodat alle velden weer zichtbaar worden?


<tr class="rij_aanhef">
<td class="left_td">Aanhef<font size="-2" style="vertical-align:top;">*</font></td>
<td><label class="label_aanhef" for="aanhef_1"><input name="aanhef" id="aanhef_1" value="Dhr." type="radio" /> Dhr.</label><label class="label_aanhef" for="aanhef_2"><input name="aanhef" id="aanhef_2" value="Mevr." type="radio" /> Mevr.</label>
<span class="error" style="display:none; margin-left:40px;">
<?php echo($contact->error_value('aanhef')) ?>
</span>
</td>
</tr>
<tr class="rij_contactpersoon">
<td class="left_td">Contactpersoon</td>
<td>
<input id="contactpersoon" name="contactpersoon" class="inplaceError" maxlength="120" type="text" class="error" autocomplete="off" onFocus="window.scrollTo(0, 0);"/>
<span class="error" style="display:none; margin-left:40px;">
<?php echo($contact->error_value('contactpersoon')) ?>
</span>
</td>
</tr>
<tr class="rij_bedrijf">
<td class="left_td">Bedrijfsnaam</td>
<td>
<input id="bedrijfsnaam" name="bedrijfsnaam" class="inplaceError" maxlength="120" type="text" autocomplete="off" onFocus="window.scrollTo(0, 0);"/>
<span class="error" style="display:none; margin-left:40px;">
<?php echo($contact->error_value('bedrijfsnaam')) ?>
</span>
</td>
</tr>
Mannen ik ga ff een broodje pakken en dit alles doornemen, ik kom hierop terug na de lunch. Bedankt zover!
Wat krijg je met dit?


<?php
if(isset($aanhef) || $aanhef  == '') {
   $this->errors('aanhef' => 'Vul uw aanhef in' );
}
?>
Sinds wanneer is dat correcte array syntax Chris?
Erwin H op 28/08/2012 12:49:08

Sinds wanneer is dat correcte array syntax Chris?


Sinds het begin van php? $errors is bovenaan het script toch al als een array gedeclareerd?

Dan zou dat toch moeten werken? Of moet daar dan toch nog array voor staan?

dus zo $this->errors = array ('aanhef' => 'Vul uw aanhef in');
Als je een element in een array wilt toevoegen (of wijzigen):
$this->errors['aanhef'] = 'Vul uw aanhef in';

Als je de complete array opnieuw wilt declareren:
$this->errors = array ('aanhef' => 'Vul uw aanhef in');

Bij de laatste verdwijnt dus alles wat je al had in de array.
@Erwin: Ik heb de syntax toegevoegd, alleen nu werkt mijn validatie niet meer. Zodra ik op submit klik, dan checkt het formulier niet de inputs.


<div id="formulierruimte">
                                        <?php
											require_once("php/db.php");                 /* Database Class */
											require_once('php/utils/is_email.php');     /* Email Validation Script */
											
											/* Handle Ajax Request */
											if(isset($_POST['newcontact'])){
												$contact = new Contact();
												//We'll refer to that later on, to display errors.
												//unset($contact);
											}
											else{
												//header('Location: result.php');
											}
											
											/* Class Contact */
											class Contact{
											
												private $db;                        /* the database obj */
											
												//private $errors         = array();  /* holds error messages */
												//we have to init $errors array, as otherwise form will produce errors on missing array entry
												private $errors = array(            /* holds error messages */
															'aanhef' => '',
															'bedrijfsnaam' => '',
															'email' => '',
															'telefoon' => '',
															'vraag1_antwoorden' => '',
															'vraag2_antwoorden' => ''
														);
											
											
												private $num_errors;                /* number of errors in submitted form */
											
												public function __construct(){
													$this->db = new DB();
													if(isset($_POST['newcontact']))
														$this->processNewMessage();
													/* We don't need this anymore
													 * 
													else
														header('Location: result.php');*/
												}
											
												public function processNewMessage(){
											
													$aanhef				= $_POST['aanhef'];			
													$contactpersoon		= $_POST['contactpersoon'];		
													$bedrijfsnaam		= $_POST['bedrijfsnaam'];
													$telefoon			= $_POST['telefoon'];
													$email				= $_POST['email'];
													$vraag1_antwoorden	= $_POST['vraag1_antwoorden'];
													$vraag2_antwoorden	= $_POST['vraag2_antwoorden'];
											
											
													/* Server Side Data Validation */
													if(isset($aanhef) || $aanhef == ''){
														$this->errors['aanhef'] = 'Vul uw aanhef in';
														}
												   
													if(!$contactpersoon || mb_strlen($contactpersoon = trim($contactpersoon)) == '') {
														$this->errors['contactpersoon'] = 'Vul uw contactpersoon in';
														} else if (mb_strlen(trim($contactpersoon)) > 120) {
                                                        $this->errors('contactpersoon', 'Te lang! 120 karakters max.'); }
											
													if(!$bedrijfsnaam || mb_strlen($bedrijfsnaam = trim($bedrijfsnaam)) == '') {
														$this->errors['bedrijfsnaam'] = 'Vul uw bedrijfsnaam in';
														} else if (mb_strlen(trim($bedrijfsnaam)) > 120) {
                                                        $this->errors('bedrijfsnaam', 'Te lang! 120 karakters max.'); }
														
													if(!$telefoon || mb_strlen($telefoon = trim($telefoon)) == '') {
														$this->errors['telefoon'] = 'Vul uw telefoon in';
														} else if (mb_strlen(trim($telefoon)) > 120) {
                                                        $this->errors('telefoon', 'Te lang! 120 karakters max.'); }
											
													if(!$vraag1_antwoorden || mb_strlen($vraag1_antwoorden = trim($vraag1_antwoorden)) == '') {
                                                        $this->errors['vraag1_antwoorden'] = 'Selecteer een antwoord a.u.b.'; } 
													
													if(!$vraag2_antwoorden || mb_strlen($vraag2_antwoorden = trim($vraag2_antwoorden)) == '') {
                                                        $this->errors['vraag2_antwoorden'] = 'Selecteer een antwoord a.u.b.'; } 
														
													if(!$email || mb_strlen($email = trim($email)) == '') {
														$this->errors['email'] = 'Vul uw e-mail in';
														} else if (mb_strlen(trim($email)) > 120) {
                                                        $this->errors('email', 'Te lang! 120 karakters max.'); }						
											
													/* No errors, insert in db
													else*/
													if($this->countErrors() == 0) {
														if(($ret = $this->db->dbNewMessage($aanhef, $contactpersoon, $bedrijfsnaam, $email, $telefoon, $vraag1_antwoorden, $vraag2_antwoorden)) > 0){
															//$json = array('result'         => 1);
															if(SEND_EMAIL)
																$this->sendEmail($aanhef,$contactpersoon,$bedrijfsnaam,$email,$telefoon,$vraag1_antwoorden,$vraag2_antwoorden);
											
															//This is for relocating to successful result page
															header('Location: result.php');
														} else {   
															// else
															//    $json = array('result'      => -2); /* something went wrong in database insertion  */
											
															//This will need special treatment. You have to prepare an errorpage
															//for database-related issues.
															header("Location: database-error.html");
														}
											
														/*$encoded = json_encode($json);
														echo $encoded;
														unset($encoded);*/
													}
												}
											
												public function sendEmail($aanhef,$contactpersoon,$bedrijfsnaam,$email,$telefoon,$vraag1_antwoorden,$vraag2_antwoorden){
												/* Just format the email text the way you want ... */
												$message_body   = "<div style=\"font-size:12px; font-weight:normal;\">Hallo,<br><br>"
																			."Het volgende bedrijf heeft zich zojuist aangemeld:</div><br>"
																			."<table cellpadding=\"1\" cellspacing=\"1\" width=\"550px\"><tr><td style=\"font-size:12px; color:#000000\">Bedrijfsnaam:</td><td style=\"font-size:12px; color:#000000\">".$bedrijfsnaam."</td></tr><tr><td style=\"font-size:12px; color:#000000\">Aanhef:</td><td style=\"font-size:12px; color:#000000\">".$aanhef."</td></tr><tr><td style=\"font-size:12px; color:#000000\">Contactpersoon:</td><td style=\"font-size:12px; color:#000000\">".$contactpersoon."</td></tr><tr><td style=\"font-size:12px; color:#000000\">Telefoonnummer:</td><td style=\"font-size:12px; color:#000000\">".$telefoon."</td></tr><tr><td style=\"font-size:12px; color:#000000\">E-mail:</td><td style=\"font-size:12px; color:#000000\">".$email."</td></tr><tr><td style=\"font-size:12px; color:#000000\">Antwoord vraag 1:</td><td style=\"font-size:12px; color:#000000\">".$vraag1_antwoorden."</td></tr><tr><td style=\"font-size:12px; color:#000000\">Antwoord vraag 2:</td><td style=\"font-size:12px; color:#000000\">".$vraag2_antwoorden."</td></tr></table><br>";
												
													// Geef GELDIGE adressen op
													// Een korte benaming voor jouw website
													$website_naam = 'Aanmelding';
													// Jouw eigen geldige emailadres
													$eigen_emailadres = 'MAIL';
													// Een geldig emailadres voor errors
													$error_emailadres = 'MAIL';
													// De naam van de verzender
													$naam_verzender = ''.$bedrijfsnaam.'';
													// Het geldige emailadres van de afzender
													$email_verzender = ''.$email.'';
													// Een geldig emailadres of helemaal leeg laten
													$bcc_emailadres = '';
													// HTML mail? True/False
													$html = true;
													
													// De headers samenstellen
													$headers	 = 'From: ' . $website_naam . ' <' . $eigen_emailadres . '>' . PHP_EOL;
													$headers	.= 'Reply-To: ' . $naam_verzender . ' <' . $email_verzender . '>' . PHP_EOL;
													$headers	.= 'Return-Path: Mail-Error <' . $error_emailadres . '>' . PHP_EOL;
													$headers	.= ($bcc_emailadres != '') ? 'Bcc: ' . $bcc_emailadres . PHP_EOL : '';
													$headers	.= 'X-Mailer: PHP/' . phpversion() . PHP_EOL;
													$headers	.= 'X-Priority: Normal' . PHP_EOL;
													$headers	.= ($html) ? 'MIME-Version: 1.0' . PHP_EOL : '';
													$headers	.= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . PHP_EOL : '';
										
												
													mail(EMAIL_TO,MESSAGE_SUBJECT,$message_body,$headers);
											
												}
											
												public function setError($field, $errmsg){
													$this->errors[$field]   = $errmsg;
													$this->num_errors       = count($this->errors);
												}
											
												public function error_value($field){
													if(array_key_exists($field,$this->errors))
														return $this->errors[$field];
													else
														return '';
												}
											
												public function countErrors(){
													return $this->num_errors;
												}
											};
											?>
                                            <table width="675px" cellpadding="0" cellspacing="0">
                                                <form id="ContactForm" action="quiz.php" method="post">
                                                <tr>
                                                    <td class="left_td">&nbsp;</td><td><font size="-2">* Gelieve alle velden in te vullen.</font></td>
                                                </tr>
                                                <tr class="rij_aanhef">
                                                    <td class="left_td">Aanhef<font size="-2" style="vertical-align:top;">*</font></td>
                                                    <td>
                                                        <label class="label_aanhef" for="aanhef_1"><input name="aanhef" id="aanhef_1" value="Dhr." type="radio" /> Dhr.</label><label class="label_aanhef" for="aanhef_2"><input name="aanhef" id="aanhef_2" value="Mevr." type="radio" /> Mevr.</label>
                                                        <span class="error">
															<?php echo $aanhef->error_value['aanhef']; ?>
														</span>
                                                    </td>
                                                </tr>
                                                <tr class="rij_contactpersoon">
                                                    <td class="left_td">Contactpersoon</td>
                                                    <td>
                                                        <input id="contactpersoon" name="contactpersoon" class="inplaceError" maxlength="120" type="text" class="error" autocomplete="off" onFocus="window.scrollTo(0, 0);"/>
                                                        <span class="error">
															<?php echo $contactpersoon->error_value['contactpersoon']; ?>
                                                        </span>
                                                    </td>
                                                </tr>
                                                <tr class="rij_bedrijf">
                                                    <td class="left_td">Bedrijfsnaam</td>
                                                    <td>
                                                        <input id="bedrijfsnaam" name="bedrijfsnaam" class="inplaceError" maxlength="120" type="text" autocomplete="off" onFocus="window.scrollTo(0, 0);"/>
                                                        <span class="error">
															<?php echo $bedrijfsnaam->error_value['bedrijfsnaam']; ?>
                                                        </span>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td class="left_td">E-mail</td>
                                                    <td>
                                                        <input id="email" name="email" class="inplaceError" maxlength="120" type="text" autocomplete="off" onFocus="window.scrollTo(0, 0);"/>
                                                        <span class="error">
															<?php echo $email->error_value['email']; ?>
                                                        </span>
                                                    </td>
                                                </tr>
                                                <tr>
                                                    <td class="left_td">Telefoonnummer</td>
                                                    <td><input id="telefoon" name="telefoon" class="inplaceError" maxlength="120" type="text" autocomplete="off" onFocus="window.scrollTo(0, 0);"/>
                                                        <span class="error">
															<?php echo $telefoon->error_value['telefoon']; ?>
                                                        </span>
                                                    </td>
                                                </tr>
                                            </table>
                                        </div>
Erwin H op 28/08/2012 13:15:12

Als je een element in een array wilt toevoegen (of wijzigen):
$this->errors['aanhef'] = 'Vul uw aanhef in';

Als je de complete array opnieuw wilt declareren:
$this->errors = array ('aanhef' => 'Vul uw aanhef in');

Bij de laatste verdwijnt dus alles wat je al had in de array.


Aaah ok, thnx voor de helderheid. Dit is duidelijke taal, dus dan zou hij die syntax moeten gebruiken.


[size=xsmall]Toevoeging op 28/08/2012 13:23:00:[/size]

@Sebastian,

Doe het eens zo.


<?php

if(!isset($contactpersoon)) {
   $this->errors['contactpersoon'] = 'Vul uw contactpersoon in';
} else if (isset($contactoersoon) || mb_strlen(trim($contactpersoon)) > 120) {
           $this->errors['contactpersoon'] = 'Te lang! 120 karakters max.'; }
?>

@Chris: Als ik dat doe, dan krijg ik: Parse error: syntax error, unexpected ')' in C:\domains\projecten.nl\wwwroot\iPad\quiz.php on line 135

Line 135 = $this->errors['contactpersoon'] = 'Te lang! 120 karakters max.'); }
Sebastian V op 28/08/2012 13:25:47

@Chris: Als ik dat doe, dan krijg ik: Parse error: syntax error, unexpected ')' in C:\domains\projecten.nl\wwwroot\iPad\quiz.php on line 135


Welke regel is dat in mijn script, let wel ik heb hem nog geen minuut geleden gewijzigd ;) Probeer het nu nog eens met het bovenstaande.
Hierzo lag de fout: 'Te lang! 120 karakters max.'); }

Reageren