Autor |
Nachricht |
LioGetz
Threadersteller
Dabei seit: 24.03.2003
Ort: Aachen
Alter: 44
Geschlecht:
|
Verfasst Fr 17.08.2007 12:12
Titel [PHP / MySQL] Datensätze anzeigen ohne "Doppelte" |
|
|
Hi @ all,
mal wieder ne kurze Frage beim zusammenfummeln von meinem Webshop...
Ich hab ne Table "bestellung" in die die abgesendeten Warenkörbe reinkommen.
Diese Table beinhaltet: bestell_ID, user, artikel, anzahl, time
Die Bestell-ID ist hierbei nicht unique und auch kein Auto-Increment, da eine bestellung über mehrere Zeilen der Table geht (für jeden Artikel 1 Zeile)...d.h. bei 5 gekauften Artikeln gibt es 5 Zeilen, mit EINER bestell-ID.
Ok, der Shop-Admin soll sich Übersichten anzeigen lassen.
Mit meiner momentanen Abfrage hole ich alles aus der bestell-Table raus, aber das ist irgendwie falsch. Ich möchte das ne Tabelle ausgegeben wird, in der nur die bestellung 1 mal vorkommt, und nicht z.B. 5 mal (bei 5 Waren).
Wie stelle ich das an, das er bei nem erneuten auftreten des bestell_ID wertes die Zeile einfach skippt und zur nächsten geht???
Mein momentaner Code:
Code: |
dbstart();
$query = "SELECT * FROM bestellung ODER BY time DESC"; // Befehl an Datenbank
$result = mysql_query($query); // Befehl an DB senden
echo "<table border=\"1\">\n";
while($data = mysql_fetch_array($result)) {
// Datum und Zeit wird aus der DB umgewandelt
$date = date("d.m.Y",$data['time']);
$time = date("H:i",$data['time']);
echo "<tr>\n";
echo "<td>" . $data['bestell_ID']. "</td>\n";
echo "<td>" . $data['user']. "</td>\n";
echo "<td>" . $date. "</td>\n";
echo "<td>" . $time. "</td>\n";
echo "<td><a href=\"bestell_details.php?bestellung=" . $data['bestell_ID'] . "\">Details</a></td>";
echo "</tr>\n";
}
echo "</table>\n";
|
Die Übersicht soll nur 1 Spalte pro Bestellung anzeigen, dann mach ich noch nen Link "Details" der dann die komplette Bestellung anzeigt (aber das ist ja dann wieder einfach ).
Jemand ne Idee?
Thx im voraus
CU
Lio
P.S. Ja, ich weiß, man soll nicht mit * abfragen, aber für meine Zwecke reicht das erstmal...
|
|
|
|
|
Nimroy
Community Manager
Dabei seit: 26.05.2004
Ort: zwischen Köln und D'dorf
Alter: 45
Geschlecht:
|
Verfasst Fr 17.08.2007 12:17
Titel
|
|
|
Probier mal "SELECT DISTINCT ..."
|
|
|
|
|
Anzeige
|
|
|
LioGetz
Threadersteller
Dabei seit: 24.03.2003
Ort: Aachen
Alter: 44
Geschlecht:
|
Verfasst Fr 17.08.2007 12:32
Titel
|
|
|
Hey danke, nettes Schlüsselwort, ich hatte gerade nen halben Roman aufgesetzt, aber ich glaube es klappt doch .
CU
Lio
|
|
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Fr 17.08.2007 13:15
Titel
|
|
|
Neben DISTINCT ist vlt das Stichwort "Aggregation" noch von Interesse, siehe "GROUP BY"-Klausel.
Nebenbei:
Zitat: | echo "<tr>\n";
echo "<td>" . $data['bestell_ID']. "</td>\n";
echo "<td>" . $data['user']. "</td>\n";
echo "<td>" . $date. "</td>\n";
echo "<td>" . $time. "</td>\n";
echo "<td><a href=\"bestell_details.php?bestellung=" . $data['bestell_ID'] . "\">Details</a></td>";
echo "</tr>\n"; |
ist ziemlich old styled und macht heutzutage kein Mensch mehr so. Bsp: http://www.phpguru.org/static/templating.html
Auch hat das Datenmodell und die Geschäftslogik in ner Weise was in der Ausgabe selbst verloren. Stichwort Schichtenarchitektur.
Im Übrigen hat Audiofreak im Post unter mir vollkommen recht.
Zuletzt bearbeitet von am Fr 17.08.2007 13:17, insgesamt 3-mal bearbeitet
|
|
|
|
|
aUDIOfREAK
Dabei seit: 04.04.2002
Ort: Ansbach
Alter: 44
Geschlecht:
|
Verfasst Fr 17.08.2007 13:16
Titel
|
|
|
warum teilst du die bestellung nich einfach in 2 tables auf? ne table für den besteller mit allen angaben wie adresse usw. und ne table für den warenkorb, dem die bestellerid zugewisen ist...
|
|
|
|
|
|
|
|
Ähnliche Themen |
[mySQL] Datensätze löschen
[PHP & MySQL] Datensätze bearbeiten per UPDATE
Datensätze aus MySQL-Datenbank sortieren...
mysql - doppelte interpretenausgabe verhindern
[php/mysql] top 10 anzeigen lassen
PHP,MYSQL --> DESCRIBE (infos über tabelle anzeigen lasse
|
|