Errors bij elkaar
Jeroen - 01/09/2004 12:13 (laatste wijziging 01/09/2004 12:13)
Onbekend
Heej,
Ik ben nu bezig met een aanmeldt pagina. Nu kan je http://www.realphotoshop.nl/jeroen/aanmelden.php zien dat hij maar 1 error per keer weergeeft. Dit is logsich want mijn code zit zo in elkaar dat hij maar 1 weergeeft.
Nu wil ik mijn code zo veranderen zodat hij alle fouten tegelijkertijd weergeeft! Hier volgt mij code:
<?php
session_start();
include"config.php";
include"functions.php";
if(empty($_SESSION['session_id'])) {
if(isSet($_POST['submit'])) {
// Paar controles
if(empty($_POST['nickname']))
{
echo'<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#F1F5F6" class="menu">
<tr>
<td bgcolor="7894AE"><p class="submenu">» Fout!</p>
</td>
</tr>
<tr>
<td class="content1">U heeft geen nickname ingevuld!</td>
</tr>
</table>';
} elseif(empty($_POST['naam'])) {
echo'<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#F1F5F6" class="menu">
<tr>
<td bgcolor="7894AE"><p class="submenu">» Fout!</p>
</td>
</tr>
<tr>
<td class="content1">U heeft geen naam ingevuld!</td>
</tr>
</table>';
} elseif(empty($_POST['wachtwoord'])) {
echo'U heeft geen wachtwoord ingevuld!';
} elseif(empty($_POST['wachtwoord2'])) {
echo'U heeft het controle wachtwoord niet ingevuld!';
} elseif($_POST['wachtwoord'] != $_POST['wachtwoord2']) {
echo'De 2 wachtwoorden komen niet overeen!';
} else {
$select = "SELECT * FROM leden WHERE nickname = '".$_POST['nickname']."'";
$sql = mysql_query($select);
$aant = mysql_num_rows($sql);
if($aant == 1) {
Echo'De door u gekozen gebruikersnaam is al bezet!';
} else {
$wachtwoord = md5($_POST['wachtwoord']);
$insert = "INSERT INTO leden (id, naam, nickname, wachtwoord, ip, datum, mail, leeftijd, woonplaats) VALUES ('', '".$_POST['naam']."', '".$_POST['nickname']."', '".$wachtwoord."', '".$_SERVER['REMOTE_ADDR']."', '".$_POST['mail']."', '".$_POST['leeftijd']."', '".$_POST['woonplaats']."')";
$query = mysql_query($insert)or die(mysql_error());
}
}
}
echo'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link type="text/css" rel="stylesheet" href="style.css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>
<body>
<form method="post" action="'.$_SERVER['PHP_SELF'].'">
<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#F1F5F6" class="menu">
<tr>
<td bgcolor="7894AE"><p class="submenu">» Aanmelden </p>
</td>
</tr>
<tr>
<td><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr class="content1">
<td width="60%">Naam:</td>
<td width="40%"><input name="naam" type="text" size="30"></td>
</tr>
<tr class="content2">
<td>Nickname:</td>
<td><input name="nickname" type="text" id="nickname" size="30"></td>
</tr>
<tr class="content1">
<td>Wachtwoord:</td>
<td><input name="wachtwoord" type="password" id="wachtwoord" size="30"></td>
</tr>
<tr class="content2">
<td>Wachtwoord #2: </td>
<td><input name="wachtwoord2" type="password" id="wachtwoord2" size="30"></td>
</tr>
<tr class="content1">
<td>E-mail adres:</td>
<td><input name="mail" type="text" id="mail" size="30"></td>
</tr>
<tr class="content2">
<td>Leeftijd:</td>
<td><input name="leeftijd" type="text" id="leeftijd" size="30"></td>
</tr>
<tr class="content1">
<td>Woonplaats:</td>
<td><input name="woonplaats" type="text" id="woonplaats" size="30"></td>
</tr>
<tr class="grijs_streep">
<td> </td>
<td> </td>
</tr>
<tr class="content1">
<td><input type="submit" name="submit" value="Aanmelden">
<input type="reset" name="reset" value="Leeg velden"></td>
<td align="right"> </td>
</tr>
</table></td>
</tr>
</table>
</form>
</body>
</html>
';
}
else
{
echo'U bent al ingelogd!';
}
?>
<?php
include "config.php" ;
include "functions.php" ;
if ( empty ( $_SESSION [ 'session_id' ] ) ) {
if ( isSet ( $_POST [ 'submit' ] ) ) { // Paar controles
if ( empty ( $_POST [ 'nickname' ] ) ) {
echo '<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#F1F5F6" class="menu"> <tr>
<td bgcolor="7894AE"><p class="submenu">» Fout!</p>
</td>
</tr>
<tr>
<td class="content1">U heeft geen nickname ingevuld!</td>
</tr>
</table>' ;
} elseif ( empty ( $_POST [ 'naam' ] ) ) { echo '<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#F1F5F6" class="menu"> <tr>
<td bgcolor="7894AE"><p class="submenu">» Fout!</p>
</td>
</tr>
<tr>
<td class="content1">U heeft geen naam ingevuld!</td>
</tr>
</table>' ;
} elseif ( empty ( $_POST [ 'wachtwoord' ] ) ) { echo 'U heeft geen wachtwoord ingevuld!' ; } elseif ( empty ( $_POST [ 'wachtwoord2' ] ) ) { echo 'U heeft het controle wachtwoord niet ingevuld!' ; } elseif ( $_POST [ 'wachtwoord' ] != $_POST [ 'wachtwoord2' ] ) {
echo 'De 2 wachtwoorden komen niet overeen!' ; } else {
$select = "SELECT * FROM leden WHERE nickname = '" . $_POST [ 'nickname' ] . "'" ;
if ( $aant == 1 ) {
Echo 'De door u gekozen gebruikersnaam is al bezet!' ; } else {
$wachtwoord = md5 ( $_POST [ 'wachtwoord' ] ) ; $insert = "INSERT INTO leden (id, naam, nickname, wachtwoord, ip, datum, mail, leeftijd, woonplaats) VALUES ('', '" . $_POST [ 'naam' ] . "', '" . $_POST [ 'nickname' ] . "', '" . $wachtwoord . "', '" . $_SERVER [ 'REMOTE_ADDR' ] . "', '" . $_POST [ 'mail' ] . "', '" . $_POST [ 'leeftijd' ] . "', '" . $_POST [ 'woonplaats' ] . "')" ;
}
}
}
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link type="text/css" rel="stylesheet" href="style.css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>
<body>
<form method="post" action="' . $_SERVER [ 'PHP_SELF' ] . '">
<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#F1F5F6" class="menu">
<tr>
<td bgcolor="7894AE"><p class="submenu">» Aanmelden </p>
</td>
</tr>
<tr>
<td><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr class="content1">
<td width="60%">Naam:</td>
<td width="40%"><input name="naam" type="text" size="30"></td>
</tr>
<tr class="content2">
<td>Nickname:</td>
<td><input name="nickname" type="text" id="nickname" size="30"></td>
</tr>
<tr class="content1">
<td>Wachtwoord:</td>
<td><input name="wachtwoord" type="password" id="wachtwoord" size="30"></td>
</tr>
<tr class="content2">
<td>Wachtwoord #2: </td>
<td><input name="wachtwoord2" type="password" id="wachtwoord2" size="30"></td>
</tr>
<tr class="content1">
<td>E-mail adres:</td>
<td><input name="mail" type="text" id="mail" size="30"></td>
</tr>
<tr class="content2">
<td>Leeftijd:</td>
<td><input name="leeftijd" type="text" id="leeftijd" size="30"></td>
</tr>
<tr class="content1">
<td>Woonplaats:</td>
<td><input name="woonplaats" type="text" id="woonplaats" size="30"></td>
</tr>
<tr class="grijs_streep">
<td> </td>
<td> </td>
</tr>
<tr class="content1">
<td><input type="submit" name="submit" value="Aanmelden">
<input type="reset" name="reset" value="Leeg velden"></td>
<td align="right"> </td>
</tr>
</table></td>
</tr>
</table>
</form>
</body>
</html>
' ;
}
else
{
echo 'U bent al ingelogd!' ; }
?>
10 antwoorden
Gesponsorde links
Thomas - 01/09/2004 12:49
Moderator
Moet je geen else(if) constructie gebruiken, maar alles achter elkaar controleren, en dan een error-array vullen. Als alles in orde is, is je error array leeg, anders kun je alle errors uit het array afdrukken.
DRUNK - 01/09/2004 12:53 (laatste wijziging 01/09/2004 12:55)
PHP gevorderde
met de '&&' en '||' operators kun je in je if / elseif statements nog mer voorwaarden opgeven:
<?php
if (empty($_POST['name']) && empty($_POST['nickname'])) {
echo 'geen naam opgegeven!<br />';
echo 'geen nickname opgegeven!<br />';
}
else if (....) {
// .... enzenz
}
?>
<?php
if ( empty ( $_POST [ 'name' ] ) && empty ( $_POST [ 'nickname' ] ) ) { echo 'geen naam opgegeven!<br />' ; echo 'geen nickname opgegeven!<br />' ; }
else if ( .... ) {
// .... enzenz
}
?>
zo lijkt mij het eenvoudigst (op dit moment)
[edit]Citaat:
Moet je geen else(if) constructie gebruiken, maar alles achter elkaar controleren, en dan een error-array vullen. Als alles in orde is, is je error array leeg, anders kun je alle errors uit het array afdrukken.
ja dat is nog beter...[/edit]
Tuinstoel - 01/09/2004 13:07
PHP expert
Gebruik trouwens geen empty als je wilt kijken of iets wel of niet is ingevuld, daarvoor heb je dit:
<?
if($_POST['iets'] == '')
{
// blablabla
}
?>
<?
if ( $_POST [ 'iets' ] == '' )
{
// blablabla
}
?>
Met empty kijk je of het geen waarde mee heeft gekregen, dus als je 0 of FALSE invult als bijvoorbeeld wachtwoord dan geeft hij die error.
Insane - 01/09/2004 14:05
Onbekend
Tuinstoel,
moet je dan niet de waarde van FALSE invullen?;)
Jeroen - 01/09/2004 14:13 (laatste wijziging 01/09/2004 14:14)
Onbekend
@Drunk, Dat gaat niet lukken. Want als je 1 ding invult dan geeft hij dus geen error, vul je niks niks geeft hij alleen een error.
@FangorN, ik snap het een beetje. Zou je een met mijn code een voorbeeld kunnen maken? Hoe niet super uitgebreid! Gewoon zeggen waar ik de errors kan plaatsen enz.
@Tuinstoel, Empty is beter dan wat jij zegt. Ook veiliger. En hij werkt perfect met empty hoor!
DRUNK - 01/09/2004 14:40
PHP gevorderde
ja je hebt gelijk mijn oplossing is een beetje (erg) omslachtig, hm ik heb nu even geen tijd om een leuk voorbeeldje uit te werken misschien iemand anders anders vanavond even...
Joel - 01/09/2004 15:59 (laatste wijziging 01/09/2004 15:59)
Eigenaar
Citaat:
Gebruik trouwens geen empty als je wilt kijken of iets wel of niet is ingevuld, daarvoor heb je dit:
<?
if($_POST['iets'] == '')
{
// blablabla
}
?>
Het beste om te controleren of een variabele geset is:
<?php
if (isset($_POST['iets']) == "")
{
// blablabla
}
?>
<?php
if ( isset ( $_POST [ 'iets' ] ) == "" ) {
// blablabla
}
?>
Jeroen - 01/09/2004 17:19
Onbekend
Ik kom er niet mee uit! Ik heb wat zitten prutsen maar ik kom er echt niet uit! Het beste is dat FangorN een voorbeeldje kan maken! Zodat ik er wat van kan opsteken!
Als iemand anders het weet en je een voorbeeld kan maken dan zie ik dat heel erg graag.
Thomas - 01/09/2004 19:55 (laatste wijziging 01/09/2004 19:58)
Moderator
<?php
// ...
// start formulier verwerking
if(isset($_POST['submit'])) { // of wat dan ook
// je error array
$error = array();
if(empty($_POST['veld1'])) {
// foute boel, voeg een error toe aan het error-array
$error[] = "veld1 is niet ingevuld";
}
if(empty($_POST['veld2'])) {
// mja ... :)
$error[] = "veld2 is niet ingevuld";
}
// et cetera, je kan natuurlijk ook andere dingen
// controleren... correct opmaak van url's, e-mail adressen
// nicknames of wat dan ook
// alles in orde - oftewel is je error array leeg?
if(sizeof($error) > 0) {
// Houston, we have a problem
echo "Er is het een en ander fout:<br />";
for($i=0; $i < sizeof($error); $i++) {
echo $error[$i]."<br />";
}
} else {
// all systems are go
// (oftewel insert query of whatever je hier wilt doen)
mysql_query(...) or die(mysql_error());
} // einde error check
} // einde submit check
?>
<?php
// ...
// start formulier verwerking
if ( isset ( $_POST [ 'submit' ] ) ) { // of wat dan ook // je error array
if ( empty ( $_POST [ 'veld1' ] ) ) { // foute boel, voeg een error toe aan het error-array
$error [ ] = "veld1 is niet ingevuld" ;
}
if ( empty ( $_POST [ 'veld2' ] ) ) { // mja ... :)
$error [ ] = "veld2 is niet ingevuld" ;
}
// et cetera, je kan natuurlijk ook andere dingen
// controleren... correct opmaak van url's, e-mail adressen
// nicknames of wat dan ook
// alles in orde - oftewel is je error array leeg?
// Houston, we have a problem
echo "Er is het een en ander fout:<br />" ; for ( $i = 0 ; $i < sizeof ( $error ) ; $i ++ ) { echo $error [ $i ] . "<br />" ; }
} else {
// all systems are go
// (oftewel insert query of whatever je hier wilt doen)
} // einde error check
} // einde submit check
?>
Kunnen misschien nog foutjes in zitten - het principe lijkt me duidelijk.
Gesponsorde links
Dit onderwerp is gesloten .