Geburtsdatum per PDO auf Datenbank speichern

CreativPur

Erfahrenes Mitglied
Hi,
ich sitze mal wieder seit Tagen auf dem Schlauch..

Ich habe folgendes Formular..
HTML:
<form action="?register=1" method="post">

Geb am:<br>
<input type="date" size="40" maxlength="250" name="geb_am"><br><br>

E-Mail:<br>
<input type="email" size="40" maxlength="250" name="email"><br><br>
Dein Passwort:<br>
<input type="password" size="40"  maxlength="250" name="passwort"><br>
Passwort wiederholen:<br>
<input type="password" size="40" maxlength="250" name="passwort2"><br><br>
<input type="submit" value="Abschicken">
</form>

Nun möchte ich per statement das Geburtsdatum speichern..
PHP:
<?php
session_start();
include("../inc/config.inc.php");

$showFormular = true; //Variable ob das Registrierungsformular anezeigt werden soll
if(isset($_GET['register'])) {
$error = false;
$geb_am = $_POST['geb_am'];
$email = $_POST['email'];
$passwort = $_POST['passwort'];
$passwort2 = $_POST['passwort2'];

$statement = $pdo->prepare("INSERT INTO users (geb_am, email, passwort) VALUES (:geb_am, :email, :passwort)");
$result = $statement->execute(array('geb_am' => $geb_am, 'email' => $email, 'passwort' => $passwort_hash));

Wie erteile ich dem Script die Aufgabe, das Geburtsdatum in Y-m-d in die Datenbank einzufügen, nachdem es als dd.mm.yyyyy eingegeben wurde ?

Da ein Geburtsdatum ja auch hinter 1970 liegen kann, habe ich DATETIME in der Datenbank ausgewählt.

Vielen Dank für Eure Hilfe
 
$geb_am in ein Datum wandeln. zB. mit strToTime()
Dass dann als Text im Format "Y-m-d" übergeben
PHP:
date('Y-m-d', strToTime($geb_am))
 
Hi Yaslaw,

ich habe dein script so eingebaut..
PHP:
$statement = $pdo->prepare("INSERT INTO users (geb_am, email, passwort) VALUES (:geb_am, :email, :passwort)");
$result = $statement->execute(array(date('Y-m-d', strToTime($geb_am)), 'geb_am' => $geb_am, 'email' => $email, 'passwort' => $passwort_hash));

Es funktioniert leider nicht.. "Beim Abspeichern ist leider ein Fehler aufgetreten"..

Wie und Wo muss ich das genau einsetzen ?
 
Gegenfrage. wo wird $Passwort_hash erstellt? Nach deinem Code ist das Null.
Lass dir die Paramerst doch einfach mal mittels var_dump() ausgeben und schau mal, was da so vorhanden ist.
Ev ist auch $geb_am bereits ein Date und du musst es nicht erst in ein Datum wandeln.
 
Hier siehst Du mein gesamtes Script..
PHP:
<?php
session_start();
include("../inc/config.inc.php");
?>
<!DOCTYPE html>
<html>
<head>
  <title>Registrierung</title>
</head>
<body>
<?php
$showFormular = true; //Variable ob das Registrierungsformular anezeigt werden soll
if(isset($_GET['register'])) {
$error = false;
$geb_am = $_POST['geb_am'];
$email = $_POST['email'];
$passwort = $_POST['passwort'];
$passwort2 = $_POST['passwort2'];
 
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo 'Bitte eine gültige E-Mail-Adresse eingeben<br>';
$error = true;
}
if(strlen($passwort) == 0) {
echo 'Bitte ein Passwort angeben<br>';
$error = true;
}
if($passwort != $passwort2) {
echo 'Die Passwörter müssen übereinstimmen<br>';
$error = true;
}
//Überprüfe, dass die E-Mail-Adresse noch nicht registriert wurde
if(!$error) {
$statement = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$result = $statement->execute(array('email' => $email));
$user = $statement->fetch();
if($user !== false) {
echo 'Diese E-Mail-Adresse ist bereits vergeben<br>';
$error = true;
}
}
//Keine Fehler, wir können den Nutzer registrieren
if(!$error) {
$passwort_hash = password_hash($passwort, PASSWORD_DEFAULT);
$statement = $pdo->prepare("INSERT INTO users (geb_am, email, passwort) VALUES (:geb_am, :email, :passwort)");
$result = $statement->execute(array(date('Y-m-d', strToTime($geb_am)), 'geb_am' => $geb_am, 'email' => $email, 'passwort' => $passwort_hash));

$result = $statement->execute(array('geb_am' => $geb_am (date('Y-m-d', strToTime($geb_am))), 'email' => $email, 'passwort' => $passwort_hash));
if($result) {
echo 'Du wurdest erfolgreich registriert. <a href="login.php">Zum Login</a>';
$showFormular = false;
} else {
echo 'Beim Abspeichern ist leider ein Fehler aufgetreten<br>';
}
}
}
if($showFormular) {
?>
<form action="?register=1" method="post">

Geb am:<br>
<input type="date" size="40" maxlength="250" name="geb_am"><br><br>

E-Mail:<br>
<input type="email" size="40" maxlength="250" name="email"><br><br>
Dein Passwort:<br>
<input type="password" size="40"  maxlength="250" name="passwort"><br>
Passwort wiederholen:<br>
<input type="password" size="40" maxlength="250" name="passwort2"><br><br>
<input type="submit" value="Abschicken">
</form>
<?php
} //Ende von if($showFormular)
?>
</body>
</html>
 
Lass dir die Paramerst doch einfach mal mittels var_dump() ausgeben und schau mal, was da so vorhanden ist.

Ps. Ich rate dir dringend, dein Code zu formatieren, ausser man hat als Hobby "Klammern zählen" um herauszufinden was wo beginnt und wo endet und dabei wie verschachtelt ist.
Auf gut Deutsch, Der Code ist nicht lesbar. Fehler sind da vorprogrammiert.
 
Das ist ein verdammter Schwachpunkt mit meiner Formatierung .. Ich habe immer nur angst, dass ich durch Zeilenumbrüche dann leerzeichen entstehen lassen, und somit das ganze System nicht mehr funktioniert.. Bin halt nicht, wie es unter meinem Bild so toll steht "Erfahrenes Mitglied", sondern nur mega aktiv.. Ansonsten kannst Du meine PHP-Kenntnisse in die Tonne schmeißen.
 
Wenn du die headers-already-sent-Sache meinst:
Zeilenwechsel, Leerzeichen usw. innerhalb von <?php ?> stören garantiert nicht.
 

Neue Beiträge

Zurück