Omzetten AJAX functies naar normaal formulier

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Erwin H

Erwin H

21/08/2012 11:48:40
Quote Anchor link
Allereerst, wat ben je van plan te doen als de gegevens niet kloppen? Als je dan het formulier nog een keer wil tonen inclusief de foutmeldingen dan moet je dus wel linken naar 'contact.php' anders wordt dat een lastig verhaal.

Pas als je weet of alle gegevens kloppen bepaal je naar welke pagina je doorgaat (met fouten: echo html naar het scherm, zonder fouten: redirect naar result.php).

In bovenstaand code zal je dus bijna alles moeten veranderen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
/* Errors exist */
        if($this->countErrors() > 0){
            //toon hier het formulier met foutmeldingen
        }
        /* 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);
            }
    
            //doe hier iets anders
            //redirect naar result.php
            //of toon fouten van het mail versturen.

                
        }
    }

?>
 
PHP hulp

PHP hulp

25/04/2024 03:26:08
 
Sebas V

Sebas V

21/08/2012 12:17:55
Quote Anchor link
Mijn plan is als volgt:

Gegevens kloppen niet > Toon formulier met foutmeldingen naast desbetreffende velden
Gegevens kloppen > email versturen, toevoegen database en tonen van result.php met daar de ingevoerde gegevens.

Het versturen van een mail en toevoegen in de database werkt. Ik probeer nu de redirect te realiseren naar result.php, maar de pagina blijft hangen op een wit scherm van contact.php?

Voor het tonen van het formulier zit ik nog te Googelen hoe ik dit correct kan programmeren.

ik heb de volgende aanpassing gedaan in bovenstaande code
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/* Errors exist */
        if($this->countErrors() > 0){
            //toon hier het formulier met foutmeldingen
        }
        /* 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);
            }    
            //doe hier iets anders
            //redirect naar result.php
            else
                header('Location: ../result.php');
            //of toon fouten van het mail versturen.
                
        }
    }
Gewijzigd op 21/08/2012 12:19:01 door Sebas V
 
Erwin H

Erwin H

21/08/2012 12:41:38
Quote Anchor link
Volgens mij moet die redirect niet in de else. Daar kom je alleen als de insert in de database niet is gelukt en volgens mij wil je dan iets anders doen. Ofwel de redirect moet binnen het if statement van je database insert functie (na de mail versturen), ofwel buiten die if..else (maar dan nog wel binnen de else van de /* No errors */)
 
Sebas V

Sebas V

21/08/2012 13:42:22
Quote Anchor link
De redirect functie werkt, top.

Ik ben nu bezig de validatie in orde te maken, maar ik loop vast.
De pagina gaat steeds automatisch door zonder te stoppen voor validatie.

Hoe vermeld ik in correct PHP dat binnen de if($this->countErrors() > 0) de check wordt gedaan?


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/* 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){
            //toon hier het formulier met foutmeldingen
                
            
        }




Toevoeging op 21/08/2012 14:21:15:

Hee Erwin,

ik ben tot een oplossing gekomen met onderstaande code, wat vind je hiervan?


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/* 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);
                    header('Location: ../result.php');
        
            }  
            else
                $json = array('result'      => -2); /* something went wrong in database insertion  */
            $encoded = json_encode($json);
            echo $encoded;
            unset($encoded);
        }

        
    }
Gewijzigd op 21/08/2012 13:46:52 door Sebas V
 

Pagina: « vorige 1 2



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.