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>
Wat doet hij als je dit doet?


<?php
if(isset($aanhef) || $aanhef == ''){
   $this->setError['aanhef' => 'Vul uw aanhef in'];
}
?>
@Erwin: Dat is idd mijn oude opzet
1) En waar declareer je setError dan als een array in je object?
2) Gebruik je php 5.4?
@Chris: Hee Chris, ik krijg nu 2 syntax errors op beide regels code.
Sebastian V op 28/08/2012 12:24:52

@Chris: Hee Chris, ik krijg nu 2 syntax errors op beide regels code.


Post even de error's
@Erwin: Bovenaan declareer ik deze.


<?php
											require_once("php/db.php");                 /* Database Class */
											require_once('php/utils/is_email.php');     /* Email Validation Script */
											
											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(!$aanhef || mb_strlen($aanhef = trim($aanhef)) == '') {
														$this->setError('aanhef', 'Vul uw aanhef in' );
														}
												   
													if(!$contactpersoon || mb_strlen($contactpersoon = trim($contactpersoon)) == '') {
                                                        $this->setError('contactpersoon', 'Vul uw contactpersoon in');
														} else if (mb_strlen(trim($contactpersoon)) > 120) {
                                                        $this->setError('contactpersoon', 'Te lang! 120 karakters max.'); }
											
													if(!$bedrijfsnaam || mb_strlen($bedrijfsnaam = trim($bedrijfsnaam)) == '') {
                                                        $this->setError('bedrijfsnaam', 'Vul uw bedrijfsnaam in');
														} else if (mb_strlen(trim($bedrijfsnaam)) > 120) {
                                                        $this->setError('bedrijfsnaam', 'Te lang! 120 karakters max.'); }
														
													if(!$telefoon || mb_strlen($telefoon = trim($telefoon)) == '') {
                                                        $this->setError('telefoon', 'Vul uw telefoon in');
														} else if (mb_strlen(trim($telefoon)) > 120) {
                                                        $this->setError('telefoon', 'Te lang! 120 karakters max.'); }
											
													if(!$vraag1_antwoorden || mb_strlen($vraag1_antwoorden = trim($vraag1_antwoorden)) == '') {
                                                        $this->setError('vraag1_antwoorden', 'Selecteer een antwoord a.u.b.'); } 
													
													if(!$vraag2_antwoorden || mb_strlen($vraag2_antwoorden = trim($vraag2_antwoorden)) == '') {
                                                        $this->setError('vraag2_antwoorden', 'Selecteer een antwoord a.u.b.'); } 
														
													if(!$email || mb_strlen($email = trim($email)) == '') {
                                                        $this->setError('email', 'Vul uw email in'); 
														} else if (mb_strlen(trim($email)) > 120) {
                                                        $this->setError('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);*/
													}
												}
Ik zie nergens private $setError = array(); staan, of ben ik gek?

En twee, gebruik je php 5.4. De syntax die Chris geeft is namelijk pas bruikbaar vanaf 5.4 en niet veel mensen/hosters draaien dat al.
Dan is het toch niet $this->setError maar $this->errors ?
@Chris: Parse error: syntax error, unexpected T_DOUBLE_ARROW, expecting ']' in C:\domains\projecten\wwwroot\iPad\quiz.php on line 130
dat zeg ik, je gebruikt dus geen 5.4, de syntax is dus incorrect.

Gebruik $this->errors['aanhef'] = 'Vul uw aanhef in';

Reageren