Abfrage PHP und MySQL

Moin Moin

Ich habe ein kleines Problem und weiß nicht wie ich es angehen soll.
Ich möchte gerne das der Seitenbesucher in einem Feld eine Nummer eingibt die ihm vorher zugewiesen wurde und wenn er auf „Weiter“ klickt werden ihm Daten angezeigt, welche hinter der Nummer hinterlegt sind.
Das Auslesen bekomme ich schon hin aber die Abfrage bekomme ich nicht hin.
Sollte es schon ähnliche Threads geben, welche ich vlt. übersehen habe bin ich auch für diese Tipps super dankbar.

Das ist mein Code, den ich bisher habe:

<?php require_once ('index.html');
$db\_link = mysql\_connect ( localhost, web93, xxxx ); // Nutzen von Datenbank - Name ist hinterlegt in // Konstante MYSQL\_DATENBANK $db\_sel = mysql\_select\_db( usr\_web93\_2 ) or die("Auswahl der Datenbank fehlgeschlagen"); $sql = "SELECT \* FROM ic1\_user"; $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 ""; echo "". $zeile['name'] . ""; echo "". $zeile['email'] . ""; echo "". $zeile['endbetrag'] . ""; echo ""; } echo ""; mysql\_free\_result( $db\_erg ); ?\>

Moin,

wenn er auf
„Weiter“ klickt werden ihm Daten angezeigt, welche hinter der
Nummer hinterlegt sind.
Das Auslesen bekomme ich schon hin aber die Abfrage bekomme
ich nicht hin.

Das bekommt wohl keiner hin, ohne den Aufbau der Datenbanktabelle zu kennen. Aber Du musst ja die Daten in Deiner Tabelle irgendwie kennzeichnen und dementsprechend die Abfrage aufbauen.

$sql = „SELECT * FROM ic1_user“;

Wenn Du dem Bediener alle Datensätze anzeigen willst, die zusätzlich mit seiner ID gekennzeichnet sind, dann könnte es so aussehen:

select * from ic1_user where zugewiesene_nummer=’$variable_mit_der_nummer’

Grüße,
-Efchen

Guten Morgen

Die Datenbank besteht aus zwei Tabellen und sieht wie folgt aus:
Die Tabelle ic1_Rechnung hat folgende Spalten:
Getränke
Essen
Endbetrag
Die Tabelle ic1_user hat folgende Spalten:
ID ( das ist die Nummer die der User kennt)
Name
EMail

Ich möchte nun das der User auf einer Seite seine Nummer eingeben kann und ihm dann der Name, EMail und der Endbetrag angezeigt wird.

Ich hoffe das hilft euch weiter.

Hallo technofreak,

Die Datenbank besteht aus zwei Tabellen und sieht wie folgt
aus:
Die Tabelle ic1_Rechnung hat folgende Spalten:
Getränke
Essen
Endbetrag
Die Tabelle ic1_user hat folgende Spalten:
ID ( das ist die Nummer die der User kennt)
Name
EMail
Ich möchte nun das der User auf einer Seite seine Nummer
eingeben kann und ihm dann der Name, EMail und der Endbetrag
angezeigt wird.

Sorry, aber so ist das eine lausige DB. Zwischen der Tabelle ic1_Rechnung und ic1_user gibt es doch keinerlei Beziehung. Nehmen wir mal an, die Tabelle ic1_Rechnung sei mit 100 Zeilen (also Rechnungen) gefüllt. Wie soll dann herausgefunden werden, welche Rechnungen zum User mit der ID 123 gehören?
Daß „Endbetrag“ wahrscheinlich sogar überflüssig ist, weil es sich ja sicher aus „Getränke + Essen“ zusammensetzt, können wir in dem Zusammenhang dann sogar als kleineres Übel vernachlässigen.

Viele Grüße
Marvin

1 Like

Hallo

Sry. natürlich hat die Tabelle ic1_Rechnung auch die Spalte ID.

Hallo technofreak,

Sry. natürlich hat die Tabelle ic1_Rechnung auch die Spalte
ID.

Na, wenn das so ist, dann nehme ich alles zurück und behaupte das Gegenteil…
Probiere mal diese Abfrage:

SELECT name, email, Endbetrag
FROM ic1\_user, ic1\_Rechnung
WHERE ic1\_user.id = ic1\_Rechnung.id AND ic1\_user.id=1

um Name und Rechnung für den User mit der ID 1 anzuzeigen.
Für die ID solltest Du natürlich eine Variable einsetzen. Außerdem hat das ganze noch den Nachteil, wenn jemand keine Rechnung hat, wird auch nichts angezeigt. Wie man das erledigen kann überlasse ich jetzt dir…

Viele Grüße
Marvin

Moin,

natürlich hat die Tabelle ic1_Rechnung auch die Spalte ID.

Die der User-ID entspricht?
Dann hatte ich die Antwort ja schon in meiner ersten Antwort geschrieben, nur dass der Tabellenname falsch ist, weil mir keine Tabelle „ic1_Rechnung“ bekannt war.

Grüße,
-Efchen

naja nen kleinen Schubs können wir aber noch geben.
Um auch Einträge anzeigen zu können, bei denen Einträge in der zweiten Tabelle fehlen, nutzt man LEFT oder RIGHT Joins.

Guten Morgen

Ich hoffe ich werde hier nicht auf den Arm genommen und fasse das mal als Scherz auf :wink:

Ich bekomme leider nur eine „ungültige Abfrage“ hin und hoffe Ihr helft mir obowhl ich noch so ein bischen unbeholfen bin.:

<?php $db_link = mysql_connect ( localhost,
web93\_e, xxxxx ); $db\_sel = mysql\_select\_db( usr\_web93\_1 ) or die("Auswahl der Datenbank fehlgeschlagen"); $kundennummer = $\_POST["kundennummer"]; $sql = "SELECT person\_id, customer\_id FROM ospos\_people, ospos\_sales WHERE person\_id, customer\_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['email'] . ""; echo "". $zeile['payment\_type'] . ""; ""; } echo ""; mysql\_free\_result( $db\_erg ); ?\> Der Unterschied zu gestern ist, dass ich nun noch eine weitere Tabelle mit einbeziehen möchte. In der ospos\_sales ist aber nicht die person\_id hinterlegt sondern die Kundenummer heißt dort customers\_id

Moin,

Ich bekomme leider nur eine „ungültige Abfrage“ hin

Inwiefern ungültig?

$db_erg = mysql_query( $sql );

or die(mysql_error()); mal testweise einbauen, dann siehst Du, was an Deinem Statement falsch ist.

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

Da fehlt der Operator hinter person_id, IMHO ist da kein Komma erlaubt, also eher sowas wie „where person_id=’$kundennummer’ and customer_id=’$kundennummer’“ o.ä.

Gruß,
-Efchen

Hallo technofreak,

Ich hoffe ich werde hier nicht auf den Arm genommen und fasse
das mal als Scherz auf :wink:

Ehrlich gesagt, ist mir keinesfalls nach Scherzen zumute. Irgendwie fehlt mir im Moment auch der Sinn dafür, irgendwo den Witz zu entdecken.

Ich bekomme leider nur eine „ungültige Abfrage“ hin

Was kein Wunder ist, hat doch das, was Du in deiner Abfrage schreibst, nicht mehr viel damit zu tun, was ich dir als 90%-Lösung vorgeschlagen habe. Und damit meine ich keinesfalls die veränderten Variablen- bzw. Tabellen-Namen, das ist nicht wichtig.
Aber wie dir auch Efchen schon gesagt hat, die WHERE-Klausel muss natürlich eine Bedingung sein, also irgendein Test der Form a=b oder a > b u.ä. In

WHERE person_id, customer_id=’$kundennummer’";

trifft das nur auf

customer\_id='$kundennummer'

zu, person_id steht sozusagen funktionslos und einsam rum, ohne Bedingung, das geht schief.
Aber ehrlich gesagt ist sowas das kleine 1x1 von SQL, ich rate dir also dringend, dich nochmal mit den Unterlagen über Abfragen zu beschäftigen.

Der Unterschied zu gestern ist, dass ich nun noch eine weitere
Tabelle mit einbeziehen möchte.
In der ospos_sales ist aber nicht die person_id hinterlegt
sondern die Kundenummer heißt dort customers_id

Denn wenn Du das mit zwei Tabellen nicht hinbekommst, dann wird es mit dreien erst recht nichts, ganz abgesehen davon, daß deren Verknüpfung und Aufbau zumindest mir wiederum nicht bekannt ist.
Übrigens gehört das Ganze wohl eher ins Brett „SQL & Datenbankprogrammierung“, denn das sind keine PHP- sondern SQL-Probleme, die Du hast.

Viele Grüße
Marvin

OK danke dir es läuft !

Ich habe noch eine Frage und hoffe auch die wird mir noch beantwortet !
Ich habe nun bei einer POerson und möchte gerne ein Gesamtergebnis haben, imom gibt er mir aber nur alle Ergebnisse nebeneinander aus.

Wie lasse ich das zusammen Rechnen ?

mit der SQL Funktion SUM() und einem GROUP BY customer_id sollte es gehen.