probleem met foutafhandeling (formulier)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Hoi geen

hoi geen

06/11/2012 00:14:41
Quote Anchor link
beste mensen, ik heb een vraagje.

ik heb hier een stuk php code uit me script alleen werkt het niet goed.
als ik een naam invoer die nog niet in de database bestaat, als ik dan op verzenden druk krijg ik een wit scherm. ik kom er zelf niet uit.

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
43
44
45
46
47
48
49
50
51
52
53
<?php
    $error
= array();
    
    if (empty($naam))
    {

        $error[] = 'Er is geen naam ingevoerd!';
    }

    elseif (controlle_dubbelle_info('tijdelijk',$naam, 'naam') == 1)
    {

        $error[] =  'Oeps de gebruikersnaam bestaat al.';
    }

    elseif (strlen($naam) > 50)
    {

        $error[] = 'de gebruikersnaam mag maar 50 tekens lang zijn!';
    }


    if (empty($email))
    {

        $error[] = 'Er is geen e-mail adres ingevoerd!';
    }

    elseif (!check_mail($email))
    {

        $error[] = 'Het ingevoerde e-mail adres is niet gedlig!';
    }

    
    elseif (controlle_dubbelle_info('tijdelijk', $email, 'email'))
    {

        $error[] = 'Oeps het ingevoerde e-mail adres is al ingebruik';
    }

    
    if (empty($wachtwoord1))
    {

        $error[] = "Er is geen wachtwoord ingevuld!";
    }

    elseif ($wachtwoord1 =! $wachtwoord2)
    {

        $error[] = 'De wachtworderen komen niet overeen';
    }


    if ($error ==  '')
    {

        echo ' <span style="color: #FF0000; ">De volgende fouten zijn opgetreden:</span><ul>';
        foreach($error as $fout)
        {

            echo ' <li>'. $fout .'</li>';
        }

        echo '</ul> ';
    }

    else
    {
        echo 'yes gelukt '.$naam.'';
    }

?>
 
PHP hulp

PHP hulp

21/11/2024 19:33:17
 
Ozzie PHP

Ozzie PHP

06/11/2012 00:32:48
Quote Anchor link
verander regel 40:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if ($error ==  '')
?>


eens in

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if (!empty($error))
?>
Gewijzigd op 06/11/2012 00:33:26 door Ozzie PHP
 
Wouter J

Wouter J

06/11/2012 08:24:21
Quote Anchor link
Beter is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
if (count($error) > 0) {
}

?>
 
Ozzie PHP

Ozzie PHP

06/11/2012 09:16:55
Quote Anchor link
Empty doet hetzelfde hoor Wouter.
 
Hoi geen

hoi geen

06/11/2012 10:12:29
Quote Anchor link
Beste Wouter en Ozzie.

ik heb beide geprobeerd maar het probleem blijft zich voordoen. Ik dacht het zal vast wel een stom foutje zijn maar als je er na een uur nog niet hebt gevonden dacht ik post het hier maar!
Gewijzigd op 06/11/2012 10:13:06 door hoi geen
 
G P

G P

06/11/2012 10:31:30
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if (count(array_keys($error, true)) == 0){
    // GEEN FOUTEN
} else {
    // FOUTEN
}
?>
 
Hoi geen

hoi geen

06/11/2012 11:28:33
Quote Anchor link
sorry ik heb het veranderd maar het probleem blijft aanwezig! ik zal het vanmiddag even uploaden dan kunnen jullie ook zien wat ik bedoel!
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
43
44
45
46
47
48
49
50
51
52
53
54
<?

 $error
= array();
    
    if (empty($naam))
    {

        $error[] = 'Er is geen naam ingevoerd!';
    }

    elseif (controlle_dubbelle_info('tijdelijk',$naam, 'naam') == 1)
    {

        $error[] =  'Oeps de gebruikersnaam bestaat al.';
    }

    elseif (strlen($naam) > 50)
    {

        $error[] = 'de gebruikersnaam mag maar 50 tekens lang zijn!';
    }


    if (empty($email))
    {

        $error[] = 'Er is geen e-mail adres ingevoerd!';
    }

    elseif (!check_mail($email))
    {

        $error[] = 'Het ingevoerde e-mail adres is niet gedlig!';
    }

    
    elseif (controlle_dubbelle_info('tijdelijk', $email, 'email'))
    {

        $error[] = 'Oeps het ingevoerde e-mail adres is al ingebruik';
    }

    
    if (empty($wachtwoord1))
    {

        $error[] = "Er is geen wachtwoord ingevuld!";
    }

    elseif ($wachtwoord1 =! $wachtwoord2)
    {

        $error[] = 'De wachtworderen komen niet overeen';
    }


    if (count(array_keys($error, true)) == 0)
    {

        echo ' <span style="color: #FF0000; ">De volgende fouten zijn opgetreden:</span><ul>';
        foreach($error as $fout)
        {

            echo ' <li>'. $fout .'</li>';
        }

        echo '</ul> ';
    }

    else
    {
        echo 'yes gelukt '.$naam.'';
    }

    ?>


Toevoeging op 06/11/2012 11:28:42:

sorry ik heb het veranderd maar het probleem blijft aanwezig! ik zal het vanmiddag even uploaden dan kunnen jullie ook zien wat ik bedoel!
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
43
44
45
46
47
48
49
50
51
52
53
54
<?

 $error
= array();
    
    if (empty($naam))
    {

        $error[] = 'Er is geen naam ingevoerd!';
    }

    elseif (controlle_dubbelle_info('tijdelijk',$naam, 'naam') == 1)
    {

        $error[] =  'Oeps de gebruikersnaam bestaat al.';
    }

    elseif (strlen($naam) > 50)
    {

        $error[] = 'de gebruikersnaam mag maar 50 tekens lang zijn!';
    }


    if (empty($email))
    {

        $error[] = 'Er is geen e-mail adres ingevoerd!';
    }

    elseif (!check_mail($email))
    {

        $error[] = 'Het ingevoerde e-mail adres is niet gedlig!';
    }

    
    elseif (controlle_dubbelle_info('tijdelijk', $email, 'email'))
    {

        $error[] = 'Oeps het ingevoerde e-mail adres is al ingebruik';
    }

    
    if (empty($wachtwoord1))
    {

        $error[] = "Er is geen wachtwoord ingevuld!";
    }

    elseif ($wachtwoord1 =! $wachtwoord2)
    {

        $error[] = 'De wachtworderen komen niet overeen';
    }


    if (count(array_keys($error, true)) == 0)
    {

        echo ' <span style="color: #FF0000; ">De volgende fouten zijn opgetreden:</span><ul>';
        foreach($error as $fout)
        {

            echo ' <li>'. $fout .'</li>';
        }

        echo '</ul> ';
    }

    else
    {
        echo 'yes gelukt '.$naam.'';
    }

    ?>
 
Wouter J

Wouter J

06/11/2012 11:31:40
Quote Anchor link
Ozzie PHP op 06/11/2012 09:16:55:
Empty doet hetzelfde hoor Wouter.

Ja, daarom zei ik ook 'beter' en niet 'je moet dit doen'. :) Het is beter om je condities zo specifiek mogelijk te maken. Ook ga je nu niet in de war raken wat $error nou is, je weet nu sowieso dat het een array is (ook zo'n programming style kwestie waar we eens een topic voor moeten maken...)
Gewijzigd op 06/11/2012 11:32:07 door Wouter J
 
Joakim Broden

Joakim Broden

06/11/2012 11:32:40
Quote Anchor link
Je hebt nu: errors == 0 -> toon error. dat klopt dus niet want het moet errors > 0 -> toon error ;-) Tip
 
Ozzie PHP

Ozzie PHP

06/11/2012 11:33:53
Quote Anchor link
Wouter, ik denk dat empty juist beter is, omdat deze funcie ervoor gemaakt is. In jouw geval moet je eerst de array gaan tellen, en vervolgens controleren of de count groter is dan 0. Dit lijkt me slechter voor je performance.

Toevoeging op 06/11/2012 11:34:55:

Offtopic:

Wouter J op 06/11/2012 11:31:40:
(ook zo'n programming style kwestie waar we eens een topic voor moeten maken...)

Nu je het zegt ja :)
 
- Mark -

- Mark -

06/11/2012 11:58:04
Quote Anchor link
Kun je de functie controlle_dubbelle_info() eens laten zien? Er staat hier niets in dat een wit scherm kan veroorzaken voor zover ik weet.

Offtopic:

Ik ga zelf ook voor empty() wanneer ik moet controleren of een array leeg is over het algemeen.
Gewijzigd op 06/11/2012 11:59:37 door - Mark -
 
Ivo Breeden

Ivo Breeden

06/11/2012 13:37:33
Quote Anchor link
En wat gebeurt er als je een foute naam, email en/of wachtwoord submit? Worden de fouten dan wel netjes afgedrukt?
 
Q S

Q S

06/11/2012 14:05:18
Quote Anchor link
Waarom wordt de functie bij controle op naam vergeleken met 1 en bij email niet?

regel 9
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
elseif (controlle_dubbelle_info('tijdelijk',$naam, 'naam') == 1)
?>


regel 27
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
elseif (controlle_dubbelle_info('tijdelijk', $email, 'email'))
?>
 
Hoi geen

hoi geen

06/11/2012 16:29:13
Quote Anchor link
dat is een goeie, ook veranderd maar helpt nog steeds niet, ik zoek nog een gratis host om het script online te zetten om te latenzien wat ik bedoel.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?
function controlle_dubbelle_info($tabel, $wat_selecteren, $wat_database_beschrijving)
{

    $sql = "SELECT * FROM ".$tabel." WHERE ".$wat_database_beschrijving."='".$wat_selecteren."'";
    $check = mysql_query($sql) or die (mysql_error());
    $count = mysql_num_rows($check) or die (mysql_error());
    return $count;
}

?>


dit gebruik ik om te controleren of iets la bestaat in de datebase!


Toevoeging op 06/11/2012 16:30:16:

Ivo Breeden op 06/11/2012 13:37:33:
En wat gebeurt er als je een foute naam, email en/of wachtwoord submit? Worden de fouten dan wel netjes afgedrukt?


ja dan wel maar als je een bestaande naam invoer, dan krijg ik alleen een wit scherm en word er helemaal niks getoond!

Toevoeging op 06/11/2012 23:17:20:

ik heb hier een voorbeeld

http://lepie.byethost33.com/

als je leon in voert ( die is aangemaakt in de database dan krijg je een error maar zodra je een andere naam invult en de rest leeg laat krijg je een wit scherm, terwijl als je leon in voert je wel alle errors krijgt. ik snap het niet.

hier de codes

config.php
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
<?php

/**
 * @author Leon Pieter Kuipers
 * @copyright 2012
 * @version 1.0
 */



//config file


$host       = '';
$naam       = '';
$naam_db    = '';
$wachtwoord = '';

$mysql_verbinding = mysql_connect($host, $naam, $wachtwoord) or die (mysql_error());

mysql_select_db($naam_db, $mysql_verbinding) or die (mysql_error());

$db_aanmaken = mysql_query('
CREATE TABLE IF NOT EXISTS `tijdelijk` (
  `id` int(11) NOT NULL,
  `naam` varchar(50) NOT NULL,
  `wachtwoord` varchar(50) NOT NULL,
  `key` text NOT NULL,
  `email` varchar(75) NOT NULL,
  `controller` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
'
);

?>


index.php
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
error_reporting(E_ALL);

/**
 * @author Leon Pieter Kuipers
 * @copyright 2012
 * @version 1.0
 */

 
 include "function.php";
 include "config.php";
 if (isset($_POST['submit']))
{

    
    $naam           = controlle($_POST['naam']);
    $email          = controlle($_POST['e-mail']);
    $wachtwoord1    = controlle($_POST['wachtwoord1']);
    $wachtwoord2    = controlle($_POST['wachtwoord2']);

    $error = array();
    
    if (empty($naam))
    {

        $error[] = 'Er is geen naam ingevoerd!';
    }

    elseif (controlle_dubbelle_info('tijdelijk',$naam, 'naam') == 1)
    {

        $error[] =  'Oeps de gebruikersnaam bestaat al.';
    }

    elseif (strlen($naam) > 50)
    {

        $error[] = 'de gebruikersnaam mag maar 50 tekens lang zijn!';
    }


    if (empty($email))
    {

        $error[] = 'Er is geen e-mail adres ingevoerd!';
    }

    elseif (!check_mail($email))
    {

        $error[] = 'Het ingevoerde e-mail adres is niet gedlig!';
    }

    
    elseif (controlle_dubbelle_info('tijdelijk', $email, 'email') ==1)
    {

        $error[] = 'Oeps het ingevoerde e-mail adres is al ingebruik';
    }

    
    if (empty($wachtwoord1))
    {

        $error[] = "Er is geen wachtwoord ingevuld!";
    }

    elseif ($wachtwoord1 =! $wachtwoord2)
    {

        $error[] = 'De wachtworderen komen niet overeen';
    }


    if (count(array_keys($error, true)) > 0)
    {

        echo ' <span style="color: #FF0000; ">De volgende fouten zijn opgetreden:</span><ul>';
        foreach($error as $fout)
        {

            echo ' <li>'. $fout .'</li>';
        }

        echo '</ul> ';
    }

    else
    {
        echo 'yes gelukt '.$naam.'';
    }

    
    
    
    
    /** $sql = "INSERT INTO tijdeijk (id, naam, onderwerp, bericht, datum, tijd) VALUES
    ( '', '".$naam."', '".$onderwerp."', '".$bericht."', '".$datum."', '".$tijd."')";
    mysql_query($sql);
    header("Location: index.php");**/

}


?>

<html>
<head>
<title>Gastenboek</title>
</head>
</html>
<center>
<hr />
<h1>Gastenboek!</h1>
<hr />
</center>
<form action="" method="post">
<table>
<tr>
<td>Naam:</td>
<td><input type="text" name="naam" value="" size="95"/></td>
</tr>
<tr>
<td>e-mail</td>
<td><input type="text" name="e-mail" value="" size="95" /></td>
</tr>
<tr>
<td>wachtwoord</td>
<td><input type="text" name="wachtwoord1" value="" size="95" /></td>
</tr>
<tr>
<td>wachtwoord herhaling</td>
<td><input type="text" name="wachtwoord2" value="" size="95" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="verstuur!" name="submit" /> <input type="reset" name="reset" value="leegmaken!" /></td>
</tr>
</table>
</form>


</body>
</html>

en hier function.php

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
<?php

/**
 * @author Leon Pieter Kuipers
 * @copyright 2012
 */


function controlle ($i)
{

    $i = mysql_real_escape_string($i);
    $i = trim($i);
    $i = strip_tags($i);
    $i = stripcslashes($i);
    $i = htmlentities($i);
    $i = nl2br($i);
    return $i;
}

function
controlle_dubbelle_info($tabel, $wat_selecteren, $wat_database_beschrijving)
{

    $sql = "SELECT * FROM ".$tabel." WHERE ".$wat_database_beschrijving."='".$wat_selecteren."'";
    $check = mysql_query($sql) or die (mysql_error());
    $count = mysql_num_rows($check) or die (mysql_error());
    return $count;
}


function
check_mail($adres)
{
  
    return preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i",$adres);  
}
  
?>



kan iemand mijn helpen word er gek van
 
Q S

Q S

07/11/2012 14:25:43
Quote Anchor link
Ik weet niet of het al gelukt is, maar mijn gevoel zegt dat je functie controlle_dubbele_info niet helemaal goed gaat.

Haal die or die is weg bij de $count

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
function controlle_dubbelle_info($tabel, $wat_selecteren, $wat_database_beschrijving)
{

    $sql = "SELECT * FROM ".$tabel." WHERE ".$wat_database_beschrijving."='".$wat_selecteren."'";
    $check = mysql_query($sql) or die (mysql_error());
    $count = mysql_num_rows($check);
    return $count;
}

?>
 
Hoi geen

hoi geen

07/11/2012 16:48:03
Quote Anchor link
hartelijk dank, het werkt nu.
maar waarom kan er eigenlijk geen
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? or die (mysql_error()); ?>

staan achter mysql_num_rows
 
N K

N K

07/11/2012 16:54:53
Quote Anchor link
function controlle_dubbelle_info

lol
 
Obelix Idefix

Obelix Idefix

07/11/2012 17:54:36
Quote Anchor link
In welke situatie zou mysql_num_rows moeten 'sterven'? Er is uitkomst (omdat de query is gelukt) dus myslq_num_rows is daarom gelijk aan 0 of groter.
Gewijzigd op 07/11/2012 17:54:49 door Obelix Idefix
 
Hoi geen

hoi geen

07/11/2012 18:02:59
Quote Anchor link
ik heb altijd gedacht dat ik met alle mysql commando's or die mysql error er achter kon zetten
 
Obelix Idefix

Obelix Idefix

07/11/2012 18:15:15
Quote Anchor link
or die is sowieso geen goede foutafhandeling. Ga jij dood als je een keer iets niet kunt uitvoeren?
 
Eddy E

Eddy E

07/11/2012 18:23:25
Quote Anchor link
N K op 07/11/2012 16:54:53:
function controlle_dubbelle_info

lol


Vond ik ook.
Je weet in elk geval waar deze funnctie naar zoekkt :D
 

Pagina: 1 2 volgende »



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.