PHP - Bestimmte Daten aus MySQL sichtbar

Firstblu

Grünschnabel
Guten Morgen liebe Tutorianten,
mein Name ist Marcel und ich bin auf der Suche nach ein wenig Hilfe im PHP Bereich.
Ich bin derzeit dabei ein kleines Kunden-System zu schreiben.
Das Grundgeräst wie das Anlegen der Kunden und das Login der Kunden steht bereits.
Jetzt möchte ich jedoch eine Prdouktübersicht haben.
Ich habe mir den Ablauf so vorgstellt.
Da der Kunde lediglich Informationen über sein bestelltes Produkt erhalten,
dachte ich mir das ich in der Datenbank eine entsprechende Tabelle dafür erstelle und dort jedes einzelne Produkt einmal eintrage.

Code:
CREATE TABLE IF NOT EXISTS `products` (
  `pid` int(8) NOT NULL AUTO_INCREMENT,
  `pname` varchar(255) NOT NULL DEFAULT '',
  `pdesc` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`uid`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=10000001 ;

So, nun habe ich ersteinmal die Tabelle für die Produkte fertig.
Jetzt möchte ich ja das der Kunde ausgelesen bekommt was er für ein Produkt erworben hat.
Das möchte ich machen, indem ich in der User Tabelle eintrage, das er dieses Produkt erworben hat.

Alles soweit so gut,
wie kann ich denn jetzt die Abfrage machen, wenn ich sagen will.

"Wenn der Kunde ein Produkt in der tabelle eingetragen bekommt, muss er das angezeigt bekommen".
Wie kann ich das denn Anzeigen, das der Kunde nun dieses Produkt zugewiesen bekommen hat ?

Kunde ID 38 hat Produkt 2
Kunde ID 13 hat ebenfalls Produkt 2
Kunde ID 94 hat Produkt 1 und 4

Wie kann ich das so in etwas anzeigen lassen?

Benötige dringend Hilfe.



Euer Neuling Marcel.
 
Hallo Marcel,

in einem solchen Fall erstellt man für gewöhnlich eine zusätzliche Tabelle, welche die Zuordnungen zwischen Kunde und Produkt enthält. In deinem Fall könntest du die folgende einfache Tabelle verwenden:

SQL:
CREATE TABLE `kundetoproduct`
(
  `kid` INT(11) NOT NULL,
  `pid` INT(11) NOT NULL
);

Nun kannst du von einem Kunden ganz einfach herausfinden, welche Produkte dieser erworben hat:

SQL:
SELECT pid FROM kundetoproduct WHERE kid=?

Das '?' ist hier natürlich gegen die Kunden ID zu ersetzen. Zusätzlich könnte man jetzt auch noch eine Spalte "Menge" oder "Kaufdatum" in die Zuordnungstabelle aufnehmen, dann hat man noch mehr Informationen zu diesem Kauf.

Ich hoffe ich konnte dir ein bisschen weiterhelfen.

Grüße
Manuel F.
 
Zuletzt bearbeitet von einem Moderator:
Super x3 Danke sehr..
Leider muss ich gestehen das ich da in dem Bereich Anfänger bin.
vlt. kannst du mir ja auch sagen.. woher dann das System weiß.. das PID 3 auch Produkt Webserver Small ist ?
Wie funktioniert denn das

Liebe grüße:
Marcel
 
JOIN ist die Lösung
SQL:
SELECT 
	p.pid,
	p.pname,
	p.pdesc
FROM 
	kundetoproduct kp 
	INNER JOIN products p
		ON (kp.pid = p.pid)
WHERE kp.kid=?

Oder mit einer einfachen Verknüpfung
SQL:
SELECT 
	p.pid,
	p.pname,
	p.pdesc
FROM 
	kundetoproduct kp, 
	products p
WHERE 
	kp.pid = p.pid
	AND kp.kid=?
 
Zuletzt bearbeitet von einem Moderator:
Soooo.. Danke sehr.. :) bisher läuft alles.... :) nun stoße ich wieder an ein problem.. :/
wie kann ich zb. die Übersicht eines Kunden aufrufen..
also.. ich meine..
Wenn ich auf Kunde 1 DEtails klicke.. das dann die details für Kunde 1 aufgerufen werden.
Wenn ich auf Kunde 2 Drücke.. das dann die details für Kunde 2 aufgerufen werden.


Lg
Marcel
 
Zurück