SELECT INTO,mysql_insert_id oder was ?

Schönen guten Abend
Ihr habt mir letztens erst so super geholfen und nun habe ich leider schon wieder ein Problem :frowning:

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);

Moin,

$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());

Freundliche Grüße,
-Efchen

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 habe es hinbekommen und zwar mit:
$person = mysql_insert_id();
$customer = „INSERT INTO ospos_customers (person_id, account_number, taxable, deleted) VALUES (’$person’, NULL, ‚1‘, ‚0‘)“;
$customers = mysql_query($customer);

Ich habe aber noch eine Frage:
Ich habe jetzt mehrere Bestellung von mehreren Gästen und möchte gerne den Gesamtbetrag des Gastes ermitteln.

Ich habe schon folgendes probiert, aber dort gibt er nur aus und addiert nicht:

$db_sel = mysql_select_db( usr_web93_1 )
or die(„Auswahl der Datenbank fehlgeschlagen“);

$kundennummer = $_POST[„kundennummer“];

$sql = „SELECT * FROM ospos_sales, ospos_people WHERE customer_id=’$kundennummer’ AND person_id=’$kundennummer’“;

$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
die('Ungültige Abfrage: ’ . mysql_error());
}

echo ‚‘;
while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
{
„“;
echo „“. $zeile[‚first_name‘] . „“;
echo „“. $zeile[‚last_name‘] . „“;
echo „“. $zeile[‚payment_type‘] . „“;
„“;
}

mysql_free_result( $db_erg );

Moin,

Ich habe schon folgendes probiert, aber dort gibt er nur aus
und addiert nicht:

Eben. Dass er addieren soll, musst Du ihm ja auch sagen. Wo im Programm nichts addiert wird, kann auch keine Summe rauskommen.

In MySQL gibt es eine Funktion „sum()“, mit der man sich direkt bei der Datenbankabfrage die Summe einer Spalte selektieren lassen kann.

select sum(betrag) as gesamtbetrag from tabelle where gast=23

Mangels Tabellenaufbau habe ich das jetzt mal verallgemeinert geschrieben.

Grüße,
-Efchen

Ich hoffe aber der Code ist lediglich ein vereinfachter Vorzeigecode.
Falls nicht, solltet du dringend noch die Eingaben prüfen und escapen.

Eine etwas bessere Methode wäre natürlich die mysqli-Funktionen zu verwenden und die prepared Statements zu nutzen.

Hey
Ich bin echt am verzweifeln und bekomme es einfach nicht hin.
Zuerst einmal der Tabellenaufbau:

Tabelle people:
first_name
last_name
phone_number
email
address_1
address_2
city
state
zip
country
comments
person_id
passwort

Tabelle sales:
sale_time
customer_id
employee_id
comment
sale_id
payment_type

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"]; ?\>

$first_name = $_POST[„first_name“];

$result = mysql_query(„SELECT id FROM ospos_people WHERE
first_name LIKE ‚$first_name‘“);

grusel…
http://bobby-tables.com/

bitte genau durchlesen und versuchen zu verstehen. dann code reparieren.

zu welchem wert möchtest du denn payment_type addieren?
und was genau bekommst du nicht hin?