Schönen guten Abend
Ihr habt mir letztens erst so super geholfen und nun habe ich leider schon wieder ein Problem
Der User registriert sich auf der Seite und erstellt die benötigten Datenbankeinträge.Wenn die Daten angelegt werden wird natürlich eine neue Zeile in der Tabelle ospos_people angelegt und es erhöht sich die person_id immer um eins.
Ich möchte außerdem, dass in einer weiteren Tabelle (ospos_customers) die person_id mit weiteren Werten eingetragen wird.
Ich hoffe es ist verständlich und ich poste mal meinen Versuch, welcher natürlich nicht funktioniert :
<?php $verbindung = mysql_connect("localhost", "xxxx" , "xxxx") or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
mysql\_select\_db("usr\_web93\_1") or die ("Datenbank konnte nicht ausgewählt werden");
$first\_name = $\_POST["first\_name"];
$last\_name = $\_POST["last\_name"];
$email = $\_POST["email"];
$address\_1 = $\_POST["address\_1"];
$zip = $\_POST["zip"];
$city = $\_POST["city"];
$passwort = $\_POST["passwort"];
$passwort2 = $\_POST["passwort2"];
if($passwort != $passwort2 OR $first\_name == "" OR $passwort == "")
{
echo "Eingabefehler. Bitte alle Felder korekt ausfüllen. [Zurück"; exit; } $passwort = md5($passwort)...](%5C%22eintragen.html%5C%22)[Login](login.html%255C)";
}
else
{
echo "Fehler beim Speichern ihres Kontos. [Zurück](%255C%2522eintragen.html%255C%2522)";
}
}
else
{
echo "Benutzername schon vorhanden. [Zurück](%255C%2522eintragen.html%255C%2522)";
}
?\>
Wenn ich das folgendes wegnehmen, dann funktioniert die Registrierung:
$sql = "SELECT person\_id FROM ospos\_people WHERE first\_name='$first\_name'";
$customer = "INSERT INTO ospos\_customers (person\_id, account\_number, taxable, deleted) VALUES ('$sql', NULL, '1', '0');
$customers = mysql\_query($customer);
$sql = „SELECT person_id FROM ospos_people WHERE
first_name=’$first_name’“;
$customer = "INSERT INTO ospos_customers (person_id,
account_number, taxable, deleted) VALUES (’$sql’, NULL, ‚1‘,
‚0‘);
Du trägst also das SQL-Statement als „person_id“ in die Datenbank ein?
welcher natürlich nicht funktioniert
Wenn es Fehlermeldungen gibt, ist es unerlässlich, dass Du diese angibst. Im Zweifelsfalle lass Dir mysql_error() ausgeben.
Wenn ich das folgendes wegnehmen, dann funktioniert die
Registrierung:
Vermutlich ist person_id ein nummerischer Wert. Das gibt natürlich einen Fehler, wenn Du da ein SQL-Statement eintragen willst.
Aber das würdest Du selber gesagt bekommen, wenn Du schreibst:
$customers = mysql_query($customer) or die(mysql_error());
Wenn ich das folgendes wegnehmen, dann funktioniert die
Registrierung:
$sql = „SELECT person_id FROM ospos_people WHERE
first_name=’$first_name’“;
$customer = "INSERT INTO ospos_customers (person_id,
account_number, taxable, deleted) VALUES (’$sql’, NULL, ‚1‘,
‚0‘);
$customers = mysql_query($customer);
wichtig ist immer das error_reporting bei der entwicklung anzuschalten und sich ggf fehler ausgeben zu lassen.
zudem kannst du $customers = mysql_query($customer) or die(mysql_error()); verwenden um die bei mysql Fehler ausgeben zu lassen. Ich vermute nämlich einen SQL Fehler
Wenn man dein Statement auflöst kommt glaube ich sowas bei raus
$customer = "INSERT INTO ospos_customers (person_id, account_number, taxable, deleted) VALUES (‚SELECT person_id FROM ospos_people WHERE first_name=‘$first_name’’, NULL, ‚1‘, ‚0‘)
Der erste eingetragene Wert ist das SQL Statement selbst als String.
Du musst das innere Select-Statement mit () Umschließen und die ’ vor dem Select und das zweite hinter first_name entfernen.
alternativ nutz doch einfach die php funktion mysql_insert_id oder als neues sql statement die sqlfunktion LAST_INSERT_ID()
beides musst du direkt nach dem Insert aufrufen und auswerten.
Ich frage beim Login den first_name ab und speicher ihn in einer Session-Variablen.
Ich möchte nun aus der Tabelle sale den payment_type zu einem Gesamtbetrag des eingeloggten Gastes addieren und mit einem echo ausgeben, aber ich bekomme es einfach nicht hin.
Wo liegt der Fehler ?
<?php $db_link = mysql_connect ( localhost, xxxxx,
xxxxx );
$db\_sel = mysql\_select\_db( usr\_web93\_1 )
or die("Auswahl der Datenbank fehlgeschlagen");
$name = $\_SESSION['name'];
$customer = mysql\_query ("SELECT person\_id FROM people WHERE first\_name='$name'");
$abfrage = mysql\_query("SELECT SUM(payment\_type) FROM sales WHERE customer\_id='$customer'") or die ("MySQL-Error: " . mysql\_error());
$result = mysql\_fetch\_array($abfrage);
echo $result["payment\_type"];
?\>