DB doppelter Eintrag verhindern

hab es jetzt so:

PHP:
  header("Location: registration.php?name=$name&vorname=$vorname&kurierbei=$kurierbei&pseudonym=$pseudonym&startnummer=$fehler");

Da hat sich wieder ein neues Problem aufgetan.

Bsp.
Name: Peter Müller
nach einem Fehler erscheint nur noch Peter im Formularfeld
das Programm kommt mit mehreren Wörtern nicht klar.



PHP:
<input type="text" name="vorname" class="feld" required="required" placeholder="Vorname" value=<?php echo @$vorname;?>></br>
 
Du hast aber schon bei den restlichen Textfeldern die Value-Eigenschaft entsprechend dem obigen Beispiel auch angepasst?

Außerdem weiter oben befüllst du die Variablen $vorname, $name, $kurierbei, ... mit POST-Werten. Mit der Header-Anweisung werden die Daten aber mit GET übergeben. Zeig auch mal wie du das gelöst hast.
 
Angepasst hab ich alle Formfelder, sieh bekommen auch nach einem Fehler Werte übermittelt jedoch nur das erste Wort die darauffolgenden werde nicht eingetragen.
Also sollte doch Fehler irgendwo hier liegen oder?

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

schöner wäre es natürlich die Vars nicht in der Url zu übertragen.
wenn ich es so versuche funktioniert das nicht.

PHP:
  header("Location: registration.php")
$name = name;
 
Zeig mal bitte den Code mit allen Textfeldern, das bisschen da oben hilft nicht weiter.

Wenn du die Angaben "unsichtbar" übertragen willst, musst du die Fehlerprüfung usw. auf der Seite machen wo die Daten eingetragen werden, da hast du ja POST als Übertragungsart.

Ansonsten könntest du es mit Sessions lösen und die Daten so transportieren.
 
Das sind die 2 Dateien:

PHP:
<?php
$fehler= "Die Startnummer ist schon vergeben:";


  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?name=$name&vorname=$vorname&kurierbei=$kurierbei&pseudonym=$pseudonym&startnummer=");
  $name = $name;

?>



PHP:
<form action="registration_senden.php" method="post">
<input type="text" name="vorname" class="feld" required="required" placeholder="Vorname" value=<?php echo @$vorname;?>></br>
<input type="text" name="name" class="feld"  required="required" placeholder="Name" value=<?php echo @$name;?>></br> 
<input type="text" name="kurierbei" class="feld" required="required" placeholder="Bei welchem Kurier fährst du?" value=<?php echo @$kurierbei;?>></br> 
<input type="text" name="startnummer" class="feld" required="required" size=30 placeholder="Startnummer" value=<?php echo @$startnummer;?>></br> 
<input type="text" name="pseudonym" class="feld" required="required" placeholder="Pseudonym" value=<?php echo @$pseudonym;?>></br> 
<input type="text" name="leer1" class="feld" required="required" placeholder="Mailadresse"/><br /> 
<br>
<input type="submit" formtarget="_self" value="absenden" />
</form>
 
Also ich weiß ja nicht mit welcher PHP Version du arbeitest aber seit der Version 4.2 ist es deaktiviert.

Wenn du jetzt einfach die Seite aufrufst und dann die Variablen so direkt einsetzt, dürfte noch nichteinmal der Vorname angezeigt werden. Du musst eigentlich mit $_GET["vorname"] usw. arbeiten.

Außerdem sehe ich gerade das sowohl du als auch ich vergessen haben den Wert in doppelte Anführungszeichen zu setzen!!

Wie sieht denn die URL im Browser aus wenn du die Seite aufrufst, sind da alle Angaben vorhanden?
 
Also hab das mal jetzt $_GET["vorname"] versucht es funktioniert,
jedoch erschienen nur das erste Wort im Formularfeld die darauffolgenden werden nicht
gesetzt.
In der url werden sie z.b. so übermittelt: vorname=Hr.%20Test -> Im Feld Hr.
also ankommen tut es richtig!
Nur macht das Formularfeld Probleme.

PHP:
<input type="text" name="vorname" class="feld" required="required" placeholder="Vorname" value=<?php echo $_GET["vorname"];?>></br>
 
Zuletzt bearbeitet:
Hab jetzt das Script in eine Datei gepackt um mit Post arbeiten zu können.
Wie mach ich das denn nun um nach einer Fehlermeldung die eingegebenen Daten nicht aus den Feldern zu löschen?

Wenn ich es so mache habe ich wieder das Problem das nach einem Leerzeichen der String gekappt wird.

PHP:
<input type="text" name="name"  id="name" required="required" placeholder="Name" value=<?php echo $_POST['name']; ?>></br>


Hier das Script in einer Datei:


PHP:
<div id="registration">
<form  method="post">
<input type="text" name="vorname" id="vorname"  required="required" placeholder="Vorname" value=""></br>
<input type="text" name="name"  id="name" required="required" placeholder="Name" value=<?php echo $_POST['name']; ?>></br> 
<input type="text" name="kurierbei"  id="kurierbei" required="required" placeholder="Team" value=<?php echo $_POST['kurierbei']; ?>></br> 
<input type="text" name="startnummer"  id="startnummer" required="required" size=30 placeholder="Startnummer" ></br> 
<input type="text" name="pseudonym"  id="pseudonym" required="required" placeholder="Pseudonym" value=<?php echo $_POST['pseudonym']; ?>></br> 
<input type="text" name="leer1"  required="required" placeholder="Mailadresse"/><br /> 
<br>
<input type="submit" name="submit" formtarget="_self" value="absenden" />
</form>
<br>
<?php
 if(isset($_POST['submit'])){



  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: http://www.strukturart.com/_suicmc2012/registration.php");
else
echo "Die Startnummer ist schon vergeben.";


}
</div>


Ueber Hilfe wäre ich dankbar das Grundproblem ist ja gelöst nur noch ein kleiner Schönheitsfehler.
 
Stell doch mal bitte alle betroffenen Dateien hier als ZIP-Datei zur Verfügung. Ich kann den von dir beschriebenen Fehler so einfach nicht nachvollziehen!
 
Zurück