在输入字段旁边显示表单验证

时间:2012-08-20 12:21:41

标签: php mysql database forms validation

我正在尝试在输入字段旁边显示PHP范围错误,但是在第一行操作范围错误后,其他输入字段将消失..

如何让其他输入字段再次可见,以便错误消息显示在它们旁边?

<body ontouchmove="BlockMove(event);">
    <div class="container">

        <div class="st-container">
            <input type="radio" name="radio-set" checked="checked" id="st-control-1" class="menu"/>
            <a href="#st-panel-1">Start</a>
            <input type="radio" name="radio-set" id="st-control-2" class="menu"/>
            <a href="#st-panel-2">Vraag 1</a>
            <input type="radio" name="radio-set" id="st-control-3" class="menu"/>
            <a href="#st-panel-3">Vraag 2</a>
            <input type="radio" name="radio-set" id="st-control-4" class="menu"/>
            <a href="#st-panel-4">De uitdaging</a>

            <div class="st-scroll">

                <section class="st-panel" id="st-panel-1">
                    <div class="st-deco"></div>
                    <div id="position">
                        <div id="contact">
                            <div id="bevestiging">
                                <div id="midden">
                                    <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" 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>
                                            <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" style="display:none; margin-left:40px;">
                                                        <?php echo($contact->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($contact->error_value('telefoon')) ?>
                                                    </span>
                                                </td>
                                            </tr>
                                        </table>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>

                </section>
            </div><!-- // st-scroll -->
            <div class="st-scroll">

                <section class="st-panel" id="st-panel-2">
                    <div class="st-deco"></div>
                        <h2>Toelichting:<br />Neem plaats op de eerste tegel en wek energie op. Zodra de vraag op het scherm verschijnt, kiest u één van de vier volgende antwoorden.</h2>
                            <div class="sizer">
                                <label class="label_radio" for="vraag1_A"><input name="vraag1_antwoorden" id="vraag1_A" value="A. Dat is helaas fout, het goede antwoord is: C) 1 Ohm" type="radio" />A) Geen eis</label>
                                <label class="label_radio" for="vraag1_B"><input name="vraag1_antwoorden" id="vraag1_B" value="B. Dat is helaas fout, het goede antwoord is: C) 1 Ohm" type="radio" />B) 0,1 Ohm</label>
                                <label class="label_radio" for="vraag1_C"><input name="vraag1_antwoorden" id="vraag1_C" value="C. Gefeliciteerd dat is het goede antwoord." type="radio" />C) 1 Ohm</label>
                                <label class="label_radio" for="vraag1_D"><input name="vraag1_antwoorden" id="vraag1_D" value="D. Dat is helaas fout, het goede antwoord is: C) 1 Ohm" type="radio" />D) 10 Ohm</label>
                            </div>
                            <span id="vraag1_antwoorden" class="foutmelding_quiz" style="display:none;">
                                <?php echo($contact->error_value('vraag1_antwoorden')) ?>
                            </span>
                </section>
            </div><!-- // st-scroll -->
            <div class="st-scroll">

                <section class="st-panel" id="st-panel-3">
                    <div class="st-deco"></div>
                        <h2>Toelichting:<br />Neem plaats op de tweede tegel en wek energie op. Zodra de vraag op het scherm verschijnt, kiest u één van de vier volgende antwoorden.</h2>
                            <div class="sizer">
                                <label class="label_radio" for="vraag2_A"><input name="vraag2_antwoorden" id="vraag2_A" value="A. Gefeliciteerd dat is het goede antwoord." type="radio" />A) 10 Ohm</label>
                                <label class="label_radio" for="vraag2_B"><input name="vraag2_antwoorden" id="vraag2_B" value="B. Dat is helaas fout, het goede antwoord is: A) 10 Ohm" type="radio" />B) 1 Ohm</label>
                                <label class="label_radio" for="vraag2_C"><input name="vraag2_antwoorden" id="vraag2_C" value="C. Dat is helaas fout, het goede antwoord is: A) 10 Ohm" type="radio" />C) 0,1 Ohm</label>
                                <label class="label_radio" for="vraag2_D"><input name="vraag2_antwoorden" id="vraag2_D" value="D. Dat is helaas fout, het goede antwoord is: A) 10 Ohm" type="radio" />D) Geen eis</label>
                            </div>
                            <span id="vraag2_antwoorden" class="foutmelding_quiz" style="display:none;">
                                <?php echo($contact->error_value('vraag2_antwoorden')) ?>
                            </span>
                </section>
            </div><!-- // st-scroll -->
            <div class="st-scroll">

                <section class="st-panel" id="st-panel-4">
                    <div class="st-deco"></div>
                        <h2>Toelichting:<br />Neem plaats op de derde tegel en zorg ervoor dat u genoeg energie opwekt om de balk tot 100% te laten komen.</h2>
                    <p>
                        <br /><br /><input type="submit" class="verzenden_image" value="" /><input type="hidden" id="newcontact" name="newcontact" value="1"></input></form>                         
                    </p>
                </section>
            </div><!-- // st-scroll -->

        </div><!-- // st-container -->
    </div>
    <!-- The JavaScript -->
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
    <script>
        function setupLabel() {
            if ($('.label_check input').length) {
                $('.label_check').each(function(){ 
                    $(this).removeClass('c_on');
                });
                $('.label_check input:checked').each(function(){ 
                    $(this).parent('label').addClass('c_on');
                });                
            };
            if ($('.label_radio input').length) {
                $('.label_radio').each(function(){ 
                    $(this).removeClass('r_on');
                });
                $('.label_radio input:checked').each(function(){ 
                    $(this).parent('label').addClass('r_on');
                });
            };
        };
        $(document).ready(function(){
            $('body').addClass('has-js');
            $('.label_check, .label_radio').click(function(){
                setupLabel();
            });
            setupLabel(); 
        });
</script>
</body>

1 个答案:

答案 0 :(得分:0)

版本1(省略AJAX)

嗯,就添加新项目而言,几乎已经完成了它:

<form id="ContactForm" action="php/contact.php" method="post">

然后,应在服务器端验证和呈现结果阶段进行进一步调整:

/* Errors exist */
if($this->countErrors() > 0){
    $json = array(
        'result' => -1, 
        'errors' => array(
                        array('name' => 'contactpersoon'    ,'value' => $this->error_value('contactpersoon')),
                        array('name' => 'bedrijfsnaam'  ,'value' => $this->error_value('bedrijfsnaam')),
                        array('name' => 'email'     ,'value' => $this->error_value('email')),                               
                        array('name' => 'telefoon'  ,'value' => $this->error_value('telefoon')),
                        array('name' => 'vraag1_antwoorden' ,'value' => $this->error_value('vraag1_antwoorden')),
                        array('name' => 'vraag2_antwoorden' ,'value' => $this->error_value('vraag2_antwoorden')),
                    )
        );

    // The code below is an example and was not tested
    // you have to do similar thing for "insert into db" section

    echo("<ol>");
    echo("Please correct the followin errors:")
    foreach ($json['errors'] as $item) {
        echo("<li>".$item['value']."</li>");
    }
    echo("</ol>");
}
/* No errors, insert in db*/
else{
    if(($ret = $this->db->dbNewMessage($contactpersoon, $bedrijfsnaam, $email, $telefoon, $vraag1_antwoorden, $vraag2_antwoorden)) > 0){
        $json = array('result'      => 1); 
        if(SEND_EMAIL)
            $this->sendEmail($contactpersoon,$bedrijfsnaam,$email,$telefoon,$vraag1_antwoorden,$vraag2_antwoorden);

        //the code below is an example, it includes result.php file
        include('result.php');

    }   
    else
        $json = array('result'      => -2); /* something went wrong in database insertion  */
    $encoded = json_encode($json);
    echo $encoded;
    unset($encoded);
}

提示:

  1. 这里不需要JSON。
  2. 如果你想保持简单,只需回显带有错误或插入数据的HTML,其中$ encoded = json_encode($ json)变量被赋值(两种情况,if和else)。
  3. 确保HTML表单操作指向contact.php文件。
  4. 然后,不需要result.php。
  5. 主要不利之处在于,如果未在服务器端验证时检查,则重新加载页面将不断添加新的联系信息。
  6. 版本2(向用户显示错误)

    此案例将要求您重新设计表单的流程,这是我们想要实现的目标:
    1.表格会呈现给您的用户(form.php) 2.用户填写表格(form.php) 3.表格正在提交(form.php,数据正在发送到form.php) 4A。表格有效,将数据插入数据库并显示结果页面(form.php,然后结果为php),或者
    4B。表格无效,给用户带来错误(form.php,提交会将用户带回第3点)。

    因此: 您发布的表单代码必须进行调整: 1.首先,将您当前的php / contact.php文件的内容放在它上面。 2.然后,必须调整包含表单输入字段的每个表行以显示所产生的错误 3. if-else块必须调整为具有标题(“Location:”);生成重定向到结果页面。

    所以,它会在以下的某个地方。

    form.php(代码未经过测试,但应该没有语义错误,您应该将您的html和元数据定义放在'?&gt;'之后和''之前):

    <?php
    require_once("db.php");                 /* Database Class */
    require_once('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 */
                    '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(){
    
            $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 */
    
            /* 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.');
            }
    
            /* Errors exist */
            /*if($this->countErrors() > 0){
                $json = array(
                    'result' => -1, 
                    'errors' => array(
                                    array('name' => 'contactpersoon'    ,'value' => $this->error_value('contactpersoon')),
                                    array('name' => 'bedrijfsnaam'  ,'value' => $this->error_value('bedrijfsnaam')),
                                    array('name' => 'email'     ,'value' => $this->error_value('email')),                               
                                    array('name' => 'telefoon'  ,'value' => $this->error_value('telefoon')),
                                    array('name' => 'vraag1_antwoorden' ,'value' => $this->error_value('vraag1_antwoorden')),
                                    array('name' => 'vraag2_antwoorden' ,'value' => $this->error_value('vraag2_antwoorden')),
                                )
                    );
            }
            /* No errors, insert in db
            else*/
            if($this->countErrors() == 0) {
                if(($ret = $this->db->dbNewMessage($contactpersoon, $bedrijfsnaam, $email, $telefoon, $vraag1_antwoorden, $vraag2_antwoorden)) > 0){
                    //$json = array('result'         => 1);
                    if(SEND_EMAIL)
                        $this->sendEmail($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($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\">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 = 'EMAIL';
                // Een geldig emailadres voor errors
                $error_emailadres = 'EMAIL';
                // 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>
    <form id="ContactForm" action="php/contact.php" method="post">
    <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;">
                <!-- You have to repeat that for every input field below. -->
                <?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;"></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" style="display:none; margin-left:40px;"></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;"></span></td>
    </tr>
    <tr>
    <td class="left_td">Question 1</td><td><div class="sizer"><label class="label_radio" for="vraag1_A"><input name="vraag1_antwoorden" id="vraag1_A" value="A" type="radio" />A) 10 Ohm</label><label class="label_radio" for="vraag1_B"><input name="vraag1_antwoorden" id="vraag1_B" value="B" type="radio" />B) 1 Ohm</label><label class="label_radio" for="vraag1_C"><input name="vraag1_antwoorden" id="vraag1_C" value="C" type="radio" />C) 0,1 Ohm</label><label class="label_radio" for="vraag1_D"><input name="vraag1_antwoorden" id="vraag1_D" value="D" type="radio" />D) Geen eis</label></div><span id="vraag1_antwoorden" class="foutmelding_quiz" style="display:none;"></span></td>
    </tr>
    <tr>
    <td class="left_td">Question 2</td><td><div class="sizer"><label class="label_radio" for="vraag2_A"><input name="vraag2_antwoorden" id="vraag2_A" value="A" type="radio" />A) 10 Ohm</label><label class="label_radio" for="vraag2_B"><input name="vraag2_antwoorden" id="vraag2_B" value="B" type="radio" />B) 1 Ohm</label><label class="label_radio" for="vraag2_C"><input name="vraag2_antwoorden" id="vraag2_C" value="C" type="radio" />C) 0,1 Ohm</label><label class="label_radio" for="vraag2_D"><input name="vraag2_antwoorden" id="vraag2_D" value="D" type="radio" />D) Geen eis</label></div><span id="vraag2_antwoorden" class="foutmelding_quiz" style="display:none;"></span></td>
    </tr>
    <tr>
    <td class="left_td"></td><td><input type="button" class="button_verzenden black" id="send" value="VERSTUUR" /><input type="hidden" id="newcontact" name="newcontact" value="1"></input></form>
    </td>
    </tr>
    </table>