Autor | Zpráva | ||
---|---|---|---|
Beavis Profil |
Hezký večer přeji.
Předem podotýkám, že mé zkušenosti s PHP se vesměs vytratily, takže se omlouvám- bude-li se jednat o hloupost. :-) K věci: Dostal jsem za úkol vytvořit malou soukromou aplikaci, něco jako eshop. Ale x krát menší. Nákupní košík je řešený takhle: Existuje tabulka objednávky, kde jsou mj. i sloupce produkt a mnozstvi. Při každé objednávce se do této tabulky uloží hodnoty, které mám v SESSION. Data se ukládají ve formě pole (aby bylo možné objednat více produktů), takže si např. objednám 3ks zkoží s ID 6 a 4ks zboží s ID 8. Do DB se tedy uloží data takto: produkt - 6, 8; mnozstvi - 3, 4. Nyní jsem ale narazil na problém. Potřebuji v administraci tyto produkty vypsat, tzn. projet pole produktů, zjistit jejich cenu a vynásobit s množstvím. Už si s tím nevím rady. Zkouším experimentovat s kódem níže, ale neúspěšně. Poradíte? :-) $items = explode(',',$row['produkt']); $quantity = explode(',', $row['mnozstvi']); $i = 0; foreach($items as $item) { $q = mysql_query("SELECT * FROM produkty WHERE id = '$item'"); $row = mysql_fetch_assoc($q); $cena_prod = $row['cena'] * $quantity[$i]; echo "<tr><td>".$row['nazev']."</td><td>".$row['cena']."</td><td>".$cena_prod."</td></tr>"; $i++; } |
||
Joker Profil |
Beavis:
Špatný návrh databáze, viz FAQ u databází. |
||
Beavis Profil |
#3 · Zasláno: 18. 5. 2012, 22:23:33
Joker:
Hehe, taky mi to teď dochází.. předělám to. Díky. :-) |
||
juriad Profil |
#4 · Zasláno: 18. 5. 2012, 22:26:30
pokud jsou jednotlivé produkty a mnozstvi odděleny pomocí "čárka mezera", tak mezera zůstane součástí
$item
id obvykle bývá číselné, tedy select by neměl mít v porovnání ve where apostrofy okolo $item
jinak, jak praví Joker správným návrhem databáze si ušetříš spoustu práce ochutnávka, výběr košíku jedním selectem: SELECT p.*, o.mnozstvi FROM produkty AS p JOIN objednavky AS o ON (p.id = o.produkt) WHERE ... |
||
Časová prodleva: 12 let
|
0