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>
Je mist een puntkomma ná je echo-aanroep. Consequent.
En een echo hoeft niet met haakjes.
Ik heb onderstaand voorbeeld geprobeerd, maar ik kom nog steeds hetzelfde probleem tegen. Mis ik hier iets?


<?php echo $contact->error_value('aanhef'); ?>
Eddy Erkelens op 28/08/2012 11:17:53

Je mist een puntkomma ná je echo-aanroep. Consequent.
En een echo hoeft niet met haakjes.


Dat niet alleen, waarom staan daar () omheen? Tevens moet een array volgens mij met [] en niet met ().

Het zou dan zo moeten komen lijkt me.

<?php echo $contact->error_value['aanhef']; ?>

[size=xsmall]Toevoeging op 28/08/2012 11:22:41:[/size]

Sebastian V op 28/08/2012 11:21:50

Ik heb onderstaand voorbeeld geprobeerd, maar ik kom nog steeds hetzelfde probleem tegen. Mis ik hier iets?


<?php echo $contact->error_value('aanhef'); ?>


Ja bij een array gebruik je [] en niet ().
Bedankt Chris, de velden zijn nu weer zichtbaar!
@Eddy: bij 1 regel php code hoeft er geen puntkomma achter.

@Sebastian: verander regel 5 eens in:

<?php echo '<pre>'; print_r($contact); echo '</pre>'; ?>


Wat zie je?
Sebastian V op 28/08/2012 11:23:49

Bedankt Chris, de velden zijn nu weer zichtbaar!


Mag ik ook vragen waarom je hem de class="error" geeft, maar vervolgens inline css gebruikt?

<span class="error" style="display:none; margin-left:40px;">

Dik is je error class, en cursief is je inline css. Je kunt die ook gewoon toevoegen aan je error class in je css. Dan pakt hij alles in 1x mee en wordt het:

<span class="error">


[size=xsmall]Toevoeging op 28/08/2012 11:29:17:[/size]

John Berg op 28/08/2012 11:25:53

@Eddy: bij 1 regel php code hoeft er geen puntkomma achter.

@Sebastian: verander regel 5 eens in:

<?php echo '<pre>'; print_r($contact); echo '</pre>'; ?>


Wat zie je?

Het probleem is opgelost, bij de array gebruikte hij () ipv [].

@Chris: Dat was om de class te overrulen in het begin, ik heb het nu toegevoegd aan de class.

Ik merk alleen dat mijn foutmeldingen niet zichtbaar worden naast de input velden zodra ik sommige velden niet invul.. Doe ik iets fout in mijn PHP script?


<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 */
											
													/* Aanhef Validation */
													if(!$aanhef || mb_strlen($aanhef = trim($aanhef)) == 0)
														$this->setError('aanhef', 'Selecteer uw aanhef');
											
													/* Contactpersoon Validation */
													if(!$contactpersoon || mb_strlen($contactpersoon = trim($contactpersoon)) == 0)
														$this->setError('contactpersoon', 'Vul uw contactpersoon in');
													else if(mb_strlen(trim($contactpersoon)) > 120)
														$this->setError('contactpersoon', 'Te lang! 120 karakters max.');
											
													/* Bedrijfsnaam Validation */
														if(!$bedrijfsnaam || mb_strlen($bedrijfsnaam = trim($bedrijfsnaam)) == 0)
														$this->setError('bedrijfsnaam', 'Vul uw bedrijfsnaam in');
													else if(mb_strlen(trim($bedrijfsnaam)) > 120)
														$this->setError('bedrijfsnaam', 'Te lang! 120 karakters max.');
											
														/* Telefoon Validation */
														if(!$telefoon || mb_strlen($telefoon = trim($telefoon)) == 0)
														$this->setError('telefoon', 'Vul uw telefoonnummer in');
													else if(mb_strlen(trim($telefoon)) > 120)
														$this->setError('telefoon', 'Te lang! 120 karakters max.');
											
														/* Vraag 1 Validation */
														if(!$vraag1_antwoorden || mb_strlen($vraag1_antwoorden = trim($vraag1_antwoorden)) == 0)
														$this->setError('vraag1_antwoorden', 'Selecteer een antwoord a.u.b.');
											
														/* Vraag 2 Validation */
														if(!$vraag2_antwoorden || mb_strlen($vraag2_antwoorden = trim($vraag2_antwoorden)) == 0)
														$this->setError('vraag2_antwoorden', 'Selecteer een antwoord a.u.b.');
											
														/* Email Validation */
													if(!$email || mb_strlen($email = trim($email)) == 0)
														$this->setError('email','Vul uw e-mail in');
													else{
														if(!is_email($email))
															$this->setError('email', 'Vul een correct email adres in');
														else if(mb_strlen($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);*/
													}
												}
											
												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" style="display:none; margin-left:40px;">
															<?php echo $telefoon->error_value['telefoon']; ?>
                                                        </span>
                                                    </td>
                                                </tr>
                                            </table>
                                        </div>



.error{
    color:#e4670f;
	display:none; 
	margin-left:40px;
}
Sebastian V op 28/08/2012 11:35:01

Ik merk alleen dat mijn foutmeldingen niet zichtbaar worden

display:none;


Lijkt mij logisch.
Hee Santhe, ik heb overal "display:none" verwijderd, maar er verschijnt nog steeds geen foutmelding..
Je vult bij elke statement dit in.

trim($bedrijfsnaam)) == 0)

Dit houdt in dat hij een integer verwacht.

Echter zijn alle values die jij invult strings, vervang de 0 een door ''. Dus 2x een enkele quote ' of 2x een dubbelen quote " allebei mag.
Dan wordt het zo

trim($bedrijfsnaam)) == '')


Dit houdt in dat als het een lege string is, hij iets gaat doen ipv wanneer hij 0 is wat in dit geval nooit zal voorkomen.

Reageren