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.

<?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.'';
}
?>
En wat gebeurt er als je een foute naam, email en/of wachtwoord submit? Worden de fouten dan wel netjes afgedrukt?
Waarom wordt de functie bij controle op naam vergeleken met 1 en bij email niet?

regel 9
<?php
elseif (controlle_dubbelle_info('tijdelijk',$naam, 'naam') == 1)
?>

regel 27
<?php
elseif (controlle_dubbelle_info('tijdelijk', $email, 'email'))
?>
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.

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


[size=xsmall]Toevoeging op 06/11/2012 16:30:16:[/size]

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!

[size=xsmall]Toevoeging op 06/11/2012 23:17:20:[/size]

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

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

<?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;
}
?>
hartelijk dank, het werkt nu.
maar waarom kan er eigenlijk geen <? or die (mysql_error()); ?>
staan achter mysql_num_rows
function controlle_dubbelle_info

lol
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.
ik heb altijd gedacht dat ik met alle mysql commando's or die mysql error er achter kon zetten
or die is sowieso geen goede foutafhandeling. Ga jij dood als je een keer iets niet kunt uitvoeren?
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

Reageren