Doppelte Einträge verhindern

_root

Erfahrenes Mitglied
Hi Leute.
Brauche mal eure Hilfe. Ich will eine Anmeldeformular für meine Seite bauen.
Soweit klappt das auch schon ganz gut. Nur ich will jetzt das keine doppelten Nickname verwendet werden können.Ich weiss leider nur nicht wie ich das realisieren kann. Hier erstmal mein bisheriges Script.
PHP:
<?php 
if ($anmelden) 
{ 
if($passwd != $passwdchk) { echo '<b>Registrierung fehlgeschlagen.Passwörter stimmen nicht überein.</b><br><br>'; }
elseif (!$nickname) { echo "<b>Sie haben keinen Nickname eingegeben!"; } 
elseif (!$email) { echo "<b>Sie haben keine email-Adresse eingegeben!"; } 
else 
{ 
//Variablen festlegen
$msg = "
Hallo $nickname.
------------------------------------------------------------------------------------
Benutzerdaten

	Nickname: $nickname
	Passwort: $passwd
	
------------------------------------------------------------------------------------
Diese Mail wurde automatisch erstellt. Bitte nicht antworten.";
$geburtstag=mktime($monat, $tag, $jahr);
$ip = $_SERVER['REMOTE_ADDR'];
$id = time(); 
//Datenbankverbindung aufbauen und Datensatz eintragen
$db = mysql_connect("[ip]", "[user]", "[passwort]");
mysql_select_db("[db]",$db);
$sql = "INSERT INTO my_user (
								id,
								name,
								nickname,
								geburtstag,
								wohnort,
								email,
								homepage,
								passwd,
								ip) 
							VALUES (
								'$id',
								'$name',
								'$nickname',
								'$geburtstag',
								'$wohnort',
								'$email',
								'$homepage',
								'$passwd',
								'$ip')"; 
$result = mysql_query($sql,$db); 
//Email senden
mail($email, "Anmeldung", $msg, "From: Automail");

echo "- Buntzer <u>$nickname</u> erfolgreich in Datenbank eingetragen!<br>"; 
echo "- Bestätigungsmail wurde an <u>$email</u> geschickt!<br><br>"; 
} 
} 
else 
{ 
?> 
<form name="form1" method="post" action="">
  <div align="center">
    <table width="343" border="0">
      <tr class="text2">
        <td width="157"><div align="right">Name:</div></td>
        <td width="176"><input name="name" type="text" class="text1" id="name"></td>
      </tr>
      <tr class="text2">
        <td><div align="right">Nickname:</div></td>
        <td><input name="nickname" type="text" class="text1" id="nickname"></td>
      </tr>
      <tr class="text2">
        <td><div align="right">Geburtstag:</div></td>
        <td>
			<select name="tag" class="text1" id="tag">
       		    <? for ($i=1;$i<32;$i++)
	  				echo "<option value='$i'>$i</option>";
				?>
	          </select>
         	<select name="monat" class="text1" id="monat">
       		    <option value="01" selected>Januar</option>
			    <option value="02">Februar</option>
			    <option value="03">M&auml;rz</option>
			    <option value="04">April</option>
			    <option value="05">Mai</option>
			    <option value="06">Juni</option>
			    <option value="07">Juli</option>
			    <option value="08">August</option>
			    <option value="09">September</option>
			    <option value="10">Oktober</option>
			    <option value="11">November</option>
			    <option value="12">Dezember</option>
	      </select>
			<select name="jahr" class="text1" id="jahr">
				<? for ($i=1950;$i<2006;$i++)
	  				echo "<option value='$i'>$i</option>";
				?>
            </select>		</td>
      </tr>
      <tr class="text2">
        <td><div align="right">Wohnort:</div></td>
        <td><input name="wohnort" type="text" class="text1" id="wohnort"></td>
      </tr>
      <tr class="text2">
        <td><div align="right">email-Adresse:</div></td>
        <td><input name="email" type="text" class="text1" id="email"></td>
      </tr>
      <tr class="text2">
        <td><div align="right">Homepage:</div></td>
        <td><input name="homepage" type="text" class="text1" id="homepage" value="http://"></td>
      </tr>
      <tr class="text2">
        <td><div align="right">Passwort:</div></td>
        <td><input name="passwd" type="password" class="text1" id="passwd"></td>
      </tr>
      <tr class="text2">
        <td><div align="right">Passwort wiederholen:</div></td>
        <td><input name="passwdchk" type="password" class="text1" id="passwdchk"></td>
      </tr>
      <tr class="text2">
        <td><div align="right"></div></td>
        <td><input name="anmelden" type="submit" class="text1" id="anmelden" value="Senden"></td>
      </tr>
      </table>  
  </div>
</form>
<? 
} 
?>


MfG aCid
 
Zuletzt bearbeitet:
Da du mit einer MySQL Datenbvank arbeitest würde ich sagen du musst in deiner Datenbank die Zeile für den Namen als UNIQUE einstellen dann werden keine doppelten Namen gespeichert.

Ich hoffe das hilft dir weiter ansonsten hab ich was falsch verstanden ^^

mfg, grasman
 
Hi, versuchs mal mit

PHP:
$check = mysql_query("SELECT * FROM user68N2");
$i = 0;
while($daten = mysql_array($check);){
    if($daten[nickname] == $nickname){
        $i++;
    }
}

if($i == "0"){
    $result = mysql_query($sql,$db); 
}
Gruß GalaxyWarrior

[EDIT]
Warumm einfach wenns auch Kompliziert geht :-)
[/EDIT]
 
GalaxyWarrior... sowas ist gut ... nur wie baue ich das jetzt in mein script ein ? hab da nicht so den durchblick.
 
Wenn ich das mache kommt
Parse error: parse error, unexpected ';' in /home/webspace/srv1/ws68/web/my-root/anmelden.php on line 49

welches
Code:
while($daten = mysql_array($check);){
wäre.

Ausserdem müsste
Code:
 $check = mysql_query("SELECT * FROM user68N2");
nicht
Code:
 $check = mysql_query("SELECT * FROM my_user");
heissen ?

MfG aCid
 
mach mal aus
PHP:
while($daten = mysql_array($check);){
das hier:
PHP:
while($daten = mysql_array($check)){

da kommt kein Semikolon in einer While-Schleife ;)
 
OK. Habe ich gemacht. Das forumlar wird auch wieder angezeigt. Nurwenn ich jetzt auf Senden Klicke kommt
Fatal error: Call to undefined function: mysql_array() in /home/webspace/srv1/ws68/web/my-root/anmelden.php on line 49
welches wieder
Code:
while($daten = mysql_array($check)){
wäre.

P.S. Ich habe aus
Code:
 $check = mysql_query("SELECT * FROM user68N2");
->

Code:
 $check = mysql_query("SELECT * FROM my_user");

gemacht.

MfG aCid
 
Ich weis jetzt garnicht ob es den Befehl gibt aber meiner Meinung nach heist das nicht mysql_array sondern mysql_fetch_array
Damit dann sollte es gehen.
 
GalaxyWarrior hat gesagt.:
PHP:
$check = mysql_query("SELECT * FROM user68N2");
$i = 0;
while($daten = mysql_array($check);){
    if($daten[nickname] == $nickname){
        $i++;
    }
}

if($i == "0"){
    $result = mysql_query($sql,$db); 
}

Mhhh warum eigentlich der Umweg und erst alle Datensätze auslesen und in einer langen Schleife vergleichen? Warum nicht denn nicht einfach den Datensatz auslesen, wo der Name vorkommt. Findet er einen issa schon da ... ansonsten eintragen.
 
Zurück