Autor Zpráva
residentcz
Profil
Ahojte mám problém a nevím jak vypsat data co jsem ulozil do array pres session

 $_SESSION["kosik"][intval($_GET["id"])] = intval($_GET["ks"]);
 $_SESSION["produkty"][intval($_GET["id"])] = intval($_GET["produkty"]);
 
// vypsání obsahu košíku
if ($_SESSION["kosik"]) {
    $result = mysql_query("SELECT * FROM $produkty WHERE id '$id' ('" . implode("', '", array_keys($_SESSION["kosik"])) . "')");
    while ($row = mysql_fetch_assoc($result)) {
        echo htmlspecialchars($row["typ"]) . " (" . $_SESSION["kosik"][$row["id"]] . ")<br />\n";
    }
    mysql_free_result($result);
    
    echo "Celkový počet položek v košíku : ".array_sum($_SESSION["kosik"]);
    echo "<br>";
    echo array_sum($_SESSION["kosik"]);

potreboval bych z toho dosatat nejak jednotlive data jako id pocet ks a data v produkty.
už si nevím rady...
Someone
Profil
foreach ?
Tori
Profil
residentcz:
Co je toto: WHERE id '$id' ('" . implode(... Nechtěl jste napsat WHERE id IN (...
Mimochodem ta ID v dotazu nemusíte dávat do závorek - sloupec id je číselný typ, a na řádcích 1,2 zajišťujete, aby klíče v session byly vždy číselné. Takže jen implode(", ", array_keys($_SESSION["kosik"]))
residentcz
Profil
tak už se mi to podařilo sprovoznit, ale pořád se mi nedaří vypsat počet ks.

if ($_SESSION["kosik"]) {

    $result = mysql_query("SELECT * FROM $produkty WHERE id IN ('" . implode("', '", array_keys($_SESSION["kosik"])) . "')");

    $ks_SESSION = implode(array_keys($_SESSION["kosik"]));

    while ($row = mysql_fetch_assoc($result)) {
    

        echo "<tr><td>";
        echo ($row["vyrobce"])."";
        echo " ";
        echo ($row["typ"])."<br>\n";
        echo "</td><td>";
        
        
        echo ($ks_SESSION["ks"])." ks";
        
        
        echo "</td></tr>";
residentcz
Profil
zde mám testovací verzi
http://www.goldoffice.cz/new/prodej-av-techniky-objednavka.php?produkty=akce&id=9&ks=1
Tori
Profil
Řádky 5 a 17 vypadají nesmyslně. implode přece vrací řetězec, proč k němu přistupujete jako k poli? Řádek 5 bych vyhodila, na ř.17 použila $_SESSION['kosik'][$row['id']]
residentcz
Profil
jooo díky moc už to mám :) bez Vás bych to nikdy nezvlád :)

jen ještě poslední věc jestli bych mohl :)

do session potřebuju dostat 3 údaje a to dělám takto nevím jestli je to ok

 $_SESSION["kosik"][intval($_GET["id"])] = intval($_GET["ks"]);
 $_SESSION["produkty"][intval($_GET["id"])] = intval($_GET["produkty"]);


id produktu s ks je jasné, ale proměnná produkty je nazev tabulky v DB kde se má přislušné id vyhledat a nevím jak to mám zakomponovat do tohoto mýsto akce :((

if ($_SESSION["kosik"]) {

    $result = mysql_query("SELECT * FROM akce WHERE id IN ('" . implode("', '", array_keys($_SESSION["kosik"])) . "')");
   

    while ($row = mysql_fetch_assoc($result)) {
    

        echo "\n<div class=\"kosik-nazev\">";
        echo ($row["vyrobce"]);
        echo " ";
        echo ($row["typ"])."";
        echo "</div><div class=\"kosik-ks\">";
        echo ($_SESSION['kosik'][$row['id']])."";
        echo "</div><div class=\"kosik-odstranit\">";
        echo "<a title=\"Odstranit položku z košíku\" href=\"prodej-av-techniky-objednavka.php?odstranitid=";
        echo ($row["id"])."";
        echo "\"><img src=\"images/icons/remove.png\" border=\"0\" height=\"16\" width=\"16\"></a>"; 
        echo "</div>";
        
 
        
    }
    mysql_free_result($result);

    }
Tori
Profil
residentcz:
proměnná produkty je nazev tabulky v DB kde se má přislušné id vyhledat
Pro každou kategorii zboží jedna tabulka? Nevím, jak máte navrženou DB, ale pokud se od sebe jednotlivé tabulky liší jen minimálně nebo vůbec, jde o chybný návrh. Měla by být jedna tabulka s veškerým zbožím, druhá tabulka pro jednotlivé kategorie a spojovací tabulka pro přiřazení zboží do kategorií. Místo spojovací tabulky lze přidat sloupeček do tab. zboží, pokud máte zaručeno, že žádné zboží nikdy nebude ve více kategoriích (např. "nářadí" i "zlevněné").

Šlo by tu hodnotu ze session vyčistit regulárem (vyhodit vše, co není písmeno, číslice, podtržítko nebo pomlčka) a uzavřít hodnotu do zpětných apostrofů, ale přenášet názvy DB tabulek v URL mi připadá jako celkem neobvyklé/nepěkné řešení.

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: