Also im Titel stehts ja also wenn ich mir nen Script bastel zum regestrrieren (nicht phpBB :wink: ) kommt folgende Fehlermeldung, beim 2. oder 3. versuch:
sehr vielsagend find ich nicht :roll:
Ich weiss nur das er die ID in der DB nicht 1 höher setzt und gar keine dann abspeichert :roll:
hier der Code Schnipsel:
und der Syntax der Tabelle
nur irgendwo ist der fehler nur ich find den nicht :cry:
Wenn ich einfach AUTO_INCREMENT hinzufügen will kommt diese Fehlermeldung:
und jetzt?
...
Ich glaub ID darf nicht den Typus VARCHAR haben. Versuchs mal mit INT. Es dürfen ja nur Integer in dem Feld gespeichert sein damit es inkrementiert werden kann.
Wenn ich die Seite aufrufe unter Mozilla speichert der ohne das ich was eingegeben hab schon was in der DB und zwar das selbe was ich vorher eingeben hab, warum löscht der das nicht? (nach den Aktulalisieren) und wenn ich dann mit nem anderem Browser draufgehe kommt nur "error" (meine selbst definierte Fehlermeldung ) und wenn ich dann
in
ändere kommt der Fehler
Zitat von Mein Sche*** Script in Verbindung mit MySQL über XAMPP
Duplicate entry '2' for key 1
...
Ich habe jetzt ID in Promary Kex umgewandelt und VARCHAR in INT und auto_increment hinzugefügt und wenn ich mit Mozilla draufgehen speichert der die IDs wie er will z.B 1,2,3 und dann macht der weiter mit 15,16,17... und zum Teil kommt dann auch
wieder dieser Fehler
...Ich habe jetzt ID in Promary Kex umgewandelt und VARCHAR in INT und auto_increment hinzugefügt und wenn ich mit Mozilla draufgehen speichert der die IDs wie er will z.B 1,2,3 und dann macht der weiter mit 15,16,17... und zum Teil kommt dann auch
wieder dieser Fehler
Langsam gebs ich auf
...
Du darfst die Werte für ID jetzt nicht mehr per Script setzen. Das macht nun MySQL und erhöht die Werte von ID selbst.
Jetzt ist nur noch das Problem wenn ich was abgeschickt habe und dann auf aktualisieren drücke dann trägt der das selber nochmal ein (aber jetzt unter ner anderen ID)
Jetzt ist nur noch das Problem wenn ich was abgeschickt habe und dann auf aktualisieren drücke dann trägt der das selber nochmal ein (aber jetzt unter ner anderen ID)
immo sieht das Script so aus:
...
...
Ya. Willkommen in der Welt der Redirects.
Das ist ganz normal das es neu eingetragen wird wenn man reloadet.
Um das zu umgehen, solltest du mit einem Redirect arbeiten.
Ganz oben in der Seite, über allen HTML-Outputs, baust du eine if-Kontrolle ein die prüft ob das Formular abgeschickt wurde.
Wurde es abgeschickt, werden die Daten in die DB eingetragen UND direkt nach dem Eintragen auf eine gewünschte Seite per header("Location:...") weitergeleitet.
Schau dir dazu diese Seite an: http://de3.php.net/header
eine Solche Redirect-Methode setzen wir auch für die Newskommentare und Umfrageabstimmungen auf Squarenet ein, oder auch hier im Forum beim Abschicken oder Ändern eines Beitrags.
Der Vorteil von der Headerweiterleitung gegenüber der Meta-Weiterleitung ist, das der User gar nicht merkt das er quasi auf einer Zwischenseite war. Die JavaScript-Weiterleitung ist eh Müll, weil sie nur funktioniert wenn der User JavaScript akiviert hat.
Hmm..ich rate dir ich würde nicht nur abfrgane ob der Nutzername eingegeben wurde...sonst kannste einfach nur den nutzernmen angeben und das wars! Dann trägt er nämlich nur das ein usw...^^
Und... hmm...deine abfrage müsste rcihtig sein...willst du daten aktualiesieren? Dann probiers mit UPDATE anstatt INSERT aber wenn net..keinen Peil was falsch ist^^
Versuch das:
Das Script prüft nun ob $_POST['username'] einen Wert enthält. Da es nur einen Wert enthält wenn das Formular ausgefüllt und abgeschickt wurde, wird nur in die DB eingetragen, wenn das Formular abgeschickt wurde.
Nach dem Eintragen in die DB wird dann sofort auf index.php weitergeleitet wodurch verhindert wird das der Besucher reloaden kann und so aus Versehen zweimal einen Eintrag hinterlässt.
Beachte das deine Version nicht HTTP/1.1 kompatibel ist. Willst du maximale Kompatibilität musst du bei der Weiterleitung eine absulute Adresse angeben. Schau dazu nochmal ins PHP-Manual. Dort steht wie du dir eine absulute Adresse von PHP zusammensetzen lassen kannst.