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
Joker:
Hehe, taky mi to teď dochází.. předělám to. Díky. :-)
juriad
Profil
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 ...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: