Formularfelder zusammenfassen

Aaaaaah natürlich;

$_POST['geburtsdatum'] = $_POST['geburtsdatum_tag'].'.'.$_POST['geburtsdatum_monat'].'.'.$_POST['geburtsdatum_jahr'];
 
Zuletzt bearbeitet:
Hab mir nochmal deine SQL-Query angesehen und bin auf folgendes Problem gestossen:
Du fügst $_POST['geburtsdatum'] ein und das ist falsch, denn es gibt kein Formularfeld mit dem Namen "geburtsdatum".
$_POST['geburtsdatum'] ist somit eine leere Zeichenkette und wird demzufolge auch als solche in die Datenbank geschrieben.
Da du
Code:
$geburtsdatum = $_POST['geburtsdatum_tag'].'.'.$_POST['geburtsdatum_monat'].'.'.$_POST['geburtsdatum_jahr'];
vor dem Insert in die Datenbank machst, muss die SQL-Query so lauten:
Code:
$sql = "INSERT INTO user (vorname, name, geburtsdatum, anschrift, plz, ort, user, password, email, geschlecht) 
        VALUES ('". $_POST['vorname']."', '". $_POST['name']."', '". $geburtsdatum."', '". $_POST['anschrift']."', '". $_POST['plz']."', '". $_POST['ort']."', '". $_POST['user']."', '". $_POST['password']."', '". $_POST['email']."', '". $_POST['geschlecht']."')";

Denn $geburtsdatum ist keine leere Zeichenkette sondern enthält das zusammengesetze Datum aus den 3 Formularfelden Tag, Monat und Jahr.
 
Hab aber noch eine Frage;

In meinem Formular kann man Herr/Frau auswählen. Wie kann ich realisieren, dass wenn jemand:

"Herr" auswählt in die Datenbank "männlich" geschrieben und bei
"Frau" dann "weiblich" in die Datenbank schreibt!!

Danke schonmal... Ist bestimmt einfach oder?
 
HTML:
<select name="geschlecht" size="1">
                  <option>
                  <option>Herr
                  <option>Frau
               </select>

Da fehlt übrigens jedes Mal das schließende </option>

Weiterhin würde ich in PHP dann prüfen:

PHP:
$geschlecht = ( $_POST['geschlecht'] == 'Herr' ? 'männlich' : 'weiblich' );

Dies ist übrigens ein verkürztes [phpf]if[/phpf] Konstrukt, ausgeschrieben würde es so aussehen:

PHP:
if($_POST['geschlecht'] == 'Herr')
{
  $geschlecht = 'männlich';
}
else
{
  $geschlecht = 'weiblich';
]
 
Du musst dann auch noch $_POST['geschlecht'] durch $geschlecht ersetzen in deinem SQL Query.

Weiterhin solltest du dich über SQL Injektionen informieren und deine Daten mit [phpf]mysql_real_escape_string[/phpf] maskieren.
 
Gut das t;

PHP:
$_POST['geschlecht'] = ( $_POST['geschlecht'] == 'Herr' ? 'männlich' : 'weiblich' );

Dankeschön! Langsam steige ich bei PHP durch...


Ich prüfe doch weiter oben;

PHP:
<?php
 $required_fields = array ('vorname', 'name', 'geburtsdatum_tag', 'geburtsdatum_monat', 'geburtsdatum_jahr', 'geschlecht', 'anschrift', 'plz', 'ort', 'user', 'password', 'email');

 foreach ($_REQUEST as $key => $value) {
 if (in_array($key, $required_fields) && !trim($value)) {  

echo"Nicht alle Felder ausgefüllt!";
?>

ob alle Felder ausgefüllt worden. Nun möchte ich gern noch prüfen, ob "password" gleich "password2" ist und ob "email" gleich "email2" ist! Wenn nicht wäre es nicht schlecht, wenn ein Popup sagen würde z.B. Passwort ist nicht gleich Passwort!

Oder wie ist das eigentlich möglich, in diesem Falle z.B. hinter dem Feld im Formular FEHLER! zu schreiben?
 
Zuletzt bearbeitet:
Code:
if ( $_POST['password'] == $_POST['password2'] )
{
 // tu was
}
else
{
 // mach was anderes
}
bei email genau das gleiche, nur die anderen Variablen benutzen
 
In dem du einfach nach diesem Konstrukt noch eine weitere Bedingung dranhängst:

PHP:
if($pass1 != $pass2 && $mail1 != $mail2) 
{
  print "Fehler! Passwort oder Email stimmen net mit Bestätigungsfeld überein";
  exit;
}

Übrigens bringt dein
PHP:
!trim($value)
nichts, da trim immer true zurückgibt, solange die Variable nicht leer ist.
Ich würde dort eher auf [phpf]empty[/phpf] zurückgreifen.
 
So das sieht nun so aus;

PHP:
<?php
 $required_fields = array ('vorname', 'name', 'geburtsdatum_tag', 'geburtsdatum_monat', 'geburtsdatum_jahr', 'geschlecht', 'anschrift', 'plz', 'ort', 'user', 'password', 'password2', 'email', 'email2');

 foreach ($_REQUEST as $key => $value) {
 if (in_array($key, $required_fields) && !empty($value)) {  

echo "Nicht alle Felder ausgefüllt!";



if($password != $password2) 
{
  echo "Fehler! Passwort stimmt nich mit Bestätigungsfeld überein";

}  


if($email != $email2) 
{
  echo "Fehler! Email stimmt nich mit Bestätigungsfeld überein";

}  



?>



<?php 
 die;
 }
 }
?>


Will bloß noch nicht... Also es ist egal, ob email und password mit dem bestätigungsfeld übereinstimmen, er speichert trotzdem... :confused:
 
Zurück