Hallo,

Ik kom niet verder met me script want ik maak een loterij script maar je mag maar 1 keer meedoen. Maar nu kan je zovaak mee doen als je wilt. Hij slaat de IP op in de database (database connectie heb ik net weggehaald) maar je kan zo vaak mee doen als je wilt.

Zo, heeft iemand de oplossing, hier onder is me script:

<?php

$sql = mysql_query('SELECT ip FROM loterij WHERE ip="'.$_SERVER['REMOTE_ADDR
'].'"') OR die (mysql_error());
$naam = strip_tags($_POST['naam']);
$email = strip_tags($_POST['email']);
$ip = $_SERVER['REMOTE_ADDR'];
if(mysql_num_rows($sql) >= 1){
	echo 'Je hebt je al eens eerder aangemeld voor de loterij, kom morgen maar weer terug!';
} else {
	if($_POST['submit']){
		if($_POST["naam"] != "" && $_POST["email"] != ""){
			$insert = 'INSERT INTO loterij (naam, email, ip) VALUES ("'.$naam.'", "'.$email.'", "'.$ip.'")';
			mysql_query($insert) OR die (mysql_error());
			echo 'Bedankt voor je deelname aan de loterij';
		} else {
			echo 'Je bent verplicht alle velden in te vullen.';
		}
	} else {
								echo '<form method="post">';
						 	echo '<table border="0" width="100%" cellspacing="1" cellpadding="0"><form method="POST">';
								echo '<tr>'; 
   		echo '<td width="28%"><FONT STYLE="font-family:Verdana;font-size:11" color="white">Naam:</td>'; 
		echo '<td width="72%" colspan="2"><input type="text" style="width: 50%" name="naam">';
		echo '</td>';
		echo '</tr>'; 
		echo '<tr>'; 
		echo '<td width="28%"><FONT STYLE="font-family:Verdana;font-size:11" color="white">Email:</td>'; 
		echo '<td width="72%" colspan="2"><input type="text" style="width: 50%" name="email">';
		echo '</td>';
		echo '</tr>';  
								echo '<tr>';
								echo '<td>';
								echo '<input type="submit" name="submit" value="Verzend">';
								echo '</td>';
								echo '</tr>';
		echo '</form>'; 
		echo '</table>';
	}
}

?>
De kolom 'ip' is blijkbaar niet uniek, de UNIQUE-constraint zal ontbreken.

Oplossing: Maak een UNIQUE-constraint aan (zie de handleiding van MySQL) en controleer of de INSERT-query is mislukt vanwege foutnummer 1062.
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
?>
Zet dit eens bovenaan je script om te kijken of je nog eventuele errors krijgt.
Notice: Undefined index: REMOTE_ADDR in /home/veeltje/domains/marnixpeters.nl/public_html/habbowarning/loterij.php on line 15

Notice: Undefined index: naam in /home/veeltje/domains/marnixpeters.nl/public_html/habbowarning/loterij.php on line 16

Notice: Undefined index: email in /home/veeltje/domains/marnixpeters.nl/public_html/habbowarning/loterij.php on line 17

Notice: Undefined index: submit in /home/veeltje/domains/marnixpeters.nl/public_html/habbowarning/loterij.php on line 22


Dat krijg ik als errors..

En frank, ik snap niet echt wat je bedoeld..
Volgens mij word je formpje niet goed verzonden.
Het komt wel allemaal netjes in de database aan. Hoe anders?
het is niet zo ingewikkeld wat Frank bedoeld:

Je bent vast bekend met de unique die je meegeeeft op een id icm autoincrement.

Nu zet je ook de unique eigenschap op je ip veld in je database.

Wanneer je iets wil toevoegen krijg je een mysql_error welke je kan afvangen met een nette weergave voor de gebruiker. In jou geval dus dat je niet meer mee mag doen met de loterij...
Maar je kan maar 1 autoincrement per tabel neerzetten?
ik zei ook niet dat je autoincrement op het ip veld moet zetten. ik gaf alleen wat uitleg en waaraan je het kon herkennen.

je moet dus een unique toekennen aan het veld ip
Maar hoe maak je het unique dan?
marnix schreef op 28.12.2007 13:26
Maar hoe maak je het unique dan?
Door in phpMyAdmin op het knopje met de rode U achter de kolomnaam te klikken...

Reageren