DB doppelter Eintrag verhindern

hab das feld "startnummer" gelöscht und nochmals erstellt und mit UNIQUE versehen, jetzt funktionierts.
Wie kan ich die Fehlermeldung nun in Verbindung mit der Usereingabe bringen?
So das auf der Eingabeseite eine Fehlermeldung erscheint?
 
Du kannst prüfen ob die SQL-Anweisung einen Fehler zurückliefert. Die Funktion mysql_errno liefert dir die entsprechende Fehlernummer (dürfte 1062 sein, bin mir aber da nicht sicher).
 
kenn mich in php sehr sehr schlecht aus hab es mal so probiert:

PHP:
$insert = mysql_query("INSERT INTO registration
(vorname, name, kurierbei, startnummer, pseudonym, leer1) 
VALUES 
('$vorname', '$name', '$kurierbei', '$startnummer', '$pseudonym', '$leer1')") or die(mysql_error()); 
if (mysql_query){
header("Location: http://registration.php"); };
else{
header("Location: http://reg_fehler.php"); };

was ich eigentlich machen will ist:

Datenbank schreiben erfolgreich -> geh auf xx seite
Datenbank schreiben nicht erfolgreich -> geh auf yy seite
 
Hi,

so isses ok:

PHP:
$insert = mysql_query("INSERT INTO registration
(vorname, name, kurierbei, startnummer, pseudonym, leer1) 
VALUES 
('$vorname', '$name', '$kurierbei', '$startnummer', '$pseudonym', '$leer1')"); 
if ($insert)
  header("Location: registration.php");
else
  header("Location: reg_fehler.php");

Best regards
 
PHP:
$insert = @mysql_query("INSERT INTO registration 
(vorname, name, kurierbei, startnummer, pseudonym, leer1)  
VALUES  
('$vorname', '$name', '$kurierbei', '$startnummer', '$pseudonym', '$leer1')");  

if (mysql_errno($kennung) == 0){ 
    header("Location: http://registration.php"); 
} elseif (mysql_errno($kennung) == 1062){ 
    header("Location: http://reg_fehler.php");
} else {
// hier eventuell andere Fehler abfangen.
}

Für "$kennung" musst du die Verbindungskennung (mysql_connect...) eintragen.
 
Danke klappt wunderbar!

hab noch eine kleine Schönheitsfrage.

Wie kann ich es machen, wenn eine Fehlermeldung erscheint
das die richtig eingetragenen Daten in Formular nicht gelöscht werden?

hab es so:

PHP:
<?php



  include("conect.php"); 
  mysql_select_db("usr_web404_2");

$vorname = $_POST[vorname]; 
$name = $_POST[name]; 
$kurierbei = $_POST[kurierbei]; 
$startnummer = $_POST[startnummer];
$pseudonym = $_POST[pseudonym];
$leer1 = $_POST[leer1];


$insert = mysql_query("INSERT INTO registration
(vorname, name, kurierbei, startnummer, pseudonym, leer1) 
VALUES 
('$vorname', '$name', '$kurierbei', '$startnummer', '$pseudonym', '$leer1')"); 
if ($insert)
  header("Location: registration.php");
else
  header("Location: registration.php?fehler=Startnummer schon vergeben");
  
?>
 
Dann musst du den entsprechend richtigen Wert bei der Value-Eigenschaft des jeweiligen Textfeldes eintragen:

PHP:
<input type="text" name="vorname" class="feld" required="required" placeholder="Vorname" value=<?php echo @$vorname; ?>/>

Das "@" habe ich deshalb davor gesetzt weil beim ersten Laden der Seite diese Variable ja keinen Wert hat bzw. gar nicht existiert. In diesen Fall würde sonst ein Fehler angezeigt.
Man könnte dies auch mit "isset" o.ä. prüfen, aber ich mache es immer so.
 
Hmh?

Also ich habe folgende dateien:

registration.php enthält das Formular und den Rest der Seite auf action:registration_senden.php

registration_senden.php hier wird an die DB gesendet und bei erfolg wieder auf registration.php umgeleitet
bei einem fehler wird auch auf registration.php umgeleitet jedoch wird eine fehler
var mit angehängt.

Jetzt möchte ich das bei einem Fehler die schon richtig eingetragenen Daten nicht aus dem Formular gelöscht werden so das der User nicht nochmals alles eingeben muss.
Das passiert ja zwangsläufig das die Seite neu geladen wird.

Ist meine Aufbau falsch sollte evtl. alles in einer Datei erledigt werden?
 
Zuletzt bearbeitet:
Gut ich hätte es vermutlich alles in eine Seite gepackt und die Anzeige und welcher Code ausgeführt wird über einen IF-Block geregelt, geht aber auch so.

Wenn du die Fehlerprüfung auf einer anderen Seite machst, dann hänge doch an die header-Anweisung einfach die korrekten Daten zusätzlich zur Fehlermeldung mit dran.
 
Zurück