Hoe vergelijk ik een ingevoerde waarde met de waarde uit de db, zodat er niet meer dan 1 van die waarde in de DB komt te staan? Dus bijv. maar 1 email adres per persoon.

Als iemand mij de query en php code, zou kunnen verklappen zou dit tof zijn, zelf heb ik al het 1 en ander geprobeerd.


	$sql = mysql_query(SELECT email FROM users);
	if ($email != $sql)
		// dan ga door
	else
		// echo dit email adres bestaat al.
	


Ik weet dat ik nog iets met fetch moet doen, maar ik kom er gewoon niet uit.

Gr. Leroy
Gebruik een UNIQUE-constraint, dan een emailadres maar 1x worden opgeslagen. Een INSERT-query met een dubbele waarde zal keurig mislukken, precies zoals het hoort.

Met een SELECT-query is het technisch ook onmogelijk om 100% zekerheid te krijgen, een SELECT zegt iets over het verleden, niet over het heden. Al hebben we het dan over millisecondes...
Het is me bijna gelukt, maar dit is wat ik nu heb en de foutmelding is: "Parse error: syntax error, unexpected '{' in C:\Documents and Settings\Elroy\Bureaublad\UsbWebserver PHP uitleg\UsbWebserver\Root\Inlog\registreer.php on line 41"

<?php
ini_set('display_errors', 'on');
error_reporting(E_ALL);

include ("config.php");

function check_email_mx($email)
{
    if ((preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $email)) || (preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',
        $email))) {
        $host = explode('@', $email);
        
if(gethostbyname($host[1]))
  return true;

    }
    return false;
}
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
	$onderwerp = "Registratie";
	$ip = ($_SERVER['REMOTE_ADDR']);
	$voornaam = trim($_POST["voornaam"]);
	$achternaam = trim($_POST["achternaam"]);
	$email = trim($_POST["email"]);
	$password = trim($_POST["password"]);

	$checkUserQuery = mysql_query("
SELECT email
FROM users 
WHERE email='". mysql_real_escape_string(($_POST['email'])) ."' 
");
$checkUser = mysql_num_rows($checkUserQuery);

if($checkUser == 1) {
echo "Dit email adres bestaat al, je kunt niet meer registreren.";
header("Location: form_login.php");
}



else(empty($voornaam)) {
        echo '<p>U bent vergeten uw voornaam in te vullen.</p><p>
Klik <a href="javascript:history.back(1);">hier</a> om terug te gaan.';
    }  elseif (empty($achternaam)) {
        echo '<p>U bent vergeten uw achternaam in te vullen.</p><p>
Klik <a href="javascript:history.back(1);">hier</a> om terug te gaan.';
    } elseif (!check_email_mx($email)) {
        echo '<p>U heeft geen geldig emailadres opgegeven.</p><p>
Klik <a href="javascript:history.back(1);">hier</a> om terug te gaan.';
    } elseif (empty($password)) {
		echo '<p>U bent vergeten uw wachtwoord in te vullen.</p><p>
Klik <a href="javascript:history.back(1);">hier</a> om terug te gaan.';
	} else {
	
	$gecodeerd = md5($password);
	
	$query = "INSERT INTO users (voornaam, achternaam, email, password, ip)
			VALUES('".$voornaam."','".$achternaam."','".$email."','".$gecodeerd."','".$ip."')";
	
	if(mail($email, $onderwerp, "\ Dit zijn je ingevoerde gegevens.  \Naam: ".$voornaam." ".$achternaam." \Wachtwoord: ".$password.""));
	$result = mysql_query($query);
	if($result){
	
	echo "Je bent aangemeld, je kunt nu inloggen.";
	echo	'<p>U kunt nu inloggen</p><p>
Klik <a href="form_login.php">hier</a>';
	} else {
            echo 'Query niet uitgevoerd. '.mysql_error().' in '.$query.'.';
			}
		} 
		}
		}
	else {
	header("Location: form_login.php");
}
?>


Gr. Leroy
Toch leuk dat je echt absoluut niet luisterd naar Frank....

waarom post je hier als je er toch niets mee doet?
Pardon, hoe moet ik dit anders leren. EN ik heb het toch geprobeerd, van regel 27 tot 37 staat wat Frank bedoelt.

LEroy
27 t/m 37 is precies wat hij NIET bedoelde.

Voeg een unique aan je table toe op emailadres, krijg je een prachtige error die je kan afvangen bij het invoeren, en hoef je dus niet van tevoren te controleren op iets ouds.
IK snap er echt geen hout van, ik heb het nu zo geprobeerd
(dus regel 27 tot 37 vervangen)
$dbres = mysql_query("SELECT `id` FROM `[users]` WHERE `email`='{$email}'");
      if(mysql_num_rows($dbres) > 0){
		echo "Dit email adres is er al.";
	}


Maar dan krijg ik deze foutmelding.

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Documents and Settings\Elroy\Bureaublad\UsbWebserver PHP uitleg\UsbWebserver\Root\Inlog\registreer.php on line 28
Je moet dat dus niet in je script doen. Maar in de structuur van de database. Gebruik phpmyadmin daar voor.
Hoe, waar en wat vul ik dan in, snap er nu echt nul komma nul van
Als je in PMA naar de tabel gaat, zie je een lijstje met de kolommen, waaronder email. Rechts van de naam van de kolom vind je allemaal icoontjes, één daarvan is . Die klik je aan, en dan is alles goed.
Kijk dat werkt ook weer dank je wel, alleen nu als er dus een dubbele waarde wordt ingevoerd dan komt de DB met een antwoord en ik zou graag mijn eigen antwoord willen geven.

LEroy

Reageren