Hallo ihr Lieben.
Ich bin leider ein totaler PHP/mySQL-Anfänger und komme nun einfach nicht weiter...
Ich soll für eine Prüfung ein Ernährungstagebuch programmieren. Davor würde ich gerne einen Login schalten, damit jeder Benutzer sein eigenes Tagebuch anlegen kann. Dafür hätte ich gern, dass beim Registrieren sich automatisch eine neue Tabelle in der DB anlegt, die so heißt wie der Benutzer und die das jeweilige Tagebuch dann enthält. Gleichzeitig brauche ich eine Tabelle in der DB mit den Nutzernamen und Kennwörtern. Dafür muss ich dann aber zwei SQL-Abfragen hintereinander schalten (create table $mUsername und insert into login($mUsername, $mPasswort)). Dafür hab ich nun versucht, mich in Transaktionen einzulesen. Das funktioniert soweit auch eigentlich einwandfrei, die Daten werden in die login-Tabelle geschrieben. ABER: Es wird keine neue Tabelle für den Benutzer erstellt. Ich weiß leider nicht mehr, was ich noch versuchen soll oder wo da der Fehler liegt. Ich hoffe, ihr könnt mir helfen.
Hier der Code:
Danke schon Mal im Voraus!
LG Flower
Ich bin leider ein totaler PHP/mySQL-Anfänger und komme nun einfach nicht weiter...
Ich soll für eine Prüfung ein Ernährungstagebuch programmieren. Davor würde ich gerne einen Login schalten, damit jeder Benutzer sein eigenes Tagebuch anlegen kann. Dafür hätte ich gern, dass beim Registrieren sich automatisch eine neue Tabelle in der DB anlegt, die so heißt wie der Benutzer und die das jeweilige Tagebuch dann enthält. Gleichzeitig brauche ich eine Tabelle in der DB mit den Nutzernamen und Kennwörtern. Dafür muss ich dann aber zwei SQL-Abfragen hintereinander schalten (create table $mUsername und insert into login($mUsername, $mPasswort)). Dafür hab ich nun versucht, mich in Transaktionen einzulesen. Das funktioniert soweit auch eigentlich einwandfrei, die Daten werden in die login-Tabelle geschrieben. ABER: Es wird keine neue Tabelle für den Benutzer erstellt. Ich weiß leider nicht mehr, was ich noch versuchen soll oder wo da der Fehler liegt. Ich hoffe, ihr könnt mir helfen.
Hier der Code:
PHP-Code:
<?php
// Datenbankverbindung herstellen
$mServer="localhost";
$mBenutzer = "root";
$mKennwort = "x";
$mDatenbank = "Tagebuch";
// $dbVerbindung ist ein Datenbankverbindungsobjekt der Klasse mysqli,
// das auf die Datenbank zeigt
$dbVerbindung = new mysqli($mServer, $mBenutzer, $mKennwort, $mDatenbank);
// Datenbankverbindung testen
if(mysqli_connect_errno() == 0)
{ // Datenübernahme aus der Form
$mUsername = $_POST['txtUsername'];
$mPasswort = $_POST['txtPasswort'];
//SQL-Befehl erstellen
$mSQL = "SELECT * FROM login
WHERE Username='$mUsername';";
// $abfrageErgebnis ist ein Ergebnistabellenobjket,
// das die ausgewaehlten Datensaetze aus der Datenbank enthaelt
$abfrageErgebnis = $dbVerbindung->query($mSQL);
// ist abfrageErgebnis leer ?
if ($abfrageErgebnis->num_rows == 0)
{ // neuen Eintrag machen
$addtable = $dbVerbindung -> query("CREATE TABLE $mUsername(Datum date, Kohlenhydrate int, Eiweiß int, Fett int, Kalorien int"); //'hinmachen oder weglassen?
$addrow = $dbVerbindung -> query("INSERT INTO login (Username, Passwort) VALUES('$mUsername','$mPasswort');");
if ($addrow && $addtable)
{$dbVerbindung -> commit();
}
else
{$dbVerbindung -> rollback();
}
$mOK = $dbVerbindung->query($mSQL);
if ($mOK)
{echo "<h3>Sie haben sich erfolgreich registriert.</h3>";
echo "<h3>Ihr Nutzername lautet: $mUsername</h3>";
}
else
{ echo "<h3>Ihre Daten konnten nicht gespeichert werden.</h3>.";
}
}
else
{$aktuellerKunde = $abfrageErgebnis->fetch_object();
echo "<h3>Der Nutzername ist bereits vergeben.</h3>";
echo '<h3>Hier geht es <a href="register.html" class=dark>zurück...</a></h3>';
}
// Datenbankobjekt schliessen
$dbVerbindung->close();
}
else
{ echo "<h2>Keine Datenbankverbindung</h2>";
echo "<p>Fehler: ", mysqli_connect_error(), "</p>";
}
?>
LG Flower
Kommentar