Autor | Zpráva | ||
---|---|---|---|
Kry5 Profil |
#1 · Zasláno: 25. 12. 2010, 18:02:59
Zdravím,
mám takový problém: snažím se udělat nákupní košík pomocí sessions. Ke každé položce potřebuji mít tři hodnoty. Napadl mě jeden způsob jak by to možná šlo vyřešit: Takto registruji novou položku do košíku: if(!isset($_SESSION["kosik"])) { $_SESSION["kosik"] = array(); } $_SESSION["kosik"]["id_zbozi=".$id_zbozi."&velikost=".$velikost] = $pocet; Přičemž pak chci udělat něco takového: while ($this = current(intVal($_SESSION["kosik"])) ){ parse_Str($zde_je_jmeno_polozky_array); next(intVal($_SESSION["kosik"])); } A pak už jen uložit hodnoty jednotlivých rozkódovaných proměnných z názvu session do proměnných. Teď mám několik dotazů: 1) Jak si můžu uložit do proměnné název té dané jedné položky v array? 2) Mám ten cyklus while správně? Měl by projít tolikrát kolik mám položek v array a pokaždé vybrat jednu z nich 3) Nenapadá vás lepší řešení? Potřebuji mít přenesené 3 hodnoty (velikost, id_zbozi, pocet) Díky moc |
||
Taps Profil |
#2 · Zasláno: 25. 12. 2010, 18:17:01
Kry5:
zkus se inspirovat http://php.vrana.cz/nakupni-kosik.php |
||
Kry5 Profil |
#3 · Zasláno: 25. 12. 2010, 18:56:52
Díky. Pochopil jsem, že název proměnné v array asi zjištujě toto:
('" . implode("', '", array_keys($_SESSION["kosik"])) . "') Ale nechápu jak to funguje. Mohl by mi to někdo prosím vysvětlit? Díky moc |
||
Alphard Profil |
#4 · Zasláno: 25. 12. 2010, 19:23:44
Kry5:
„$_SESSION["kosik"]["id_zbozi=".$id_zbozi."&velikost=".$velikost] = $pocet;“ Jak vás napadla tahle šílenost? Proč neuděláte $_SESSION["kosik"]['id'] = array('velikost', 'pocet'); ?
[#3] Tím se získá id zboží v košíku, aby se z db vytáhly podrobnosti. |
||
Kry5 Profil |
#5 · Zasláno: 25. 12. 2010, 21:37:21
Alphard:
Díky moc. To jsem přesně potřeboval, ale můžu se ještě zeptat: Takhle zakládám session: else if($prihlasen=="ne") { if(!isset($_SESSION["kosik"])) { $_SESSION["kosik"] = array(); } $_SESSION["kosik"]['id'] = array($velikost,$pocet); } A teď to v jiném souboru chci načíst: else { if($_SESSION["kosik"]) { $result = mysql_query("SELECT ID_zbozi FROM zbozi WHERE ID_zbozi IN ('" . implode("', '", array_keys($_SESSION["kosik"])) . "')"); while ($row = mysql_fetch_assoc($result)) { $velikost = $_SESSION["kosik"][$row["id"]][0]; echo"<br>Ahoj".$velikost; } } else { die('<h3>Žádné položky v košíku nemáte.</h3>'); } Bohužel mi to nevypisuje žádnou chybu (zapnuto E_ALL) ani se nic nevypíše, tak předpokládám, že cyklus vůbec neproběhne. mysql_error my ale také nic nevypsalo. Netušíte čím by to mohlo být? |
||
Taps Profil |
#6 · Zasláno: 26. 12. 2010, 08:57:45 · Upravil/a: Taps
Kry5:
je nutné aby na začátku skriptu bylo uvedeno session_start(); Vycházej příkladu který jsem ti uvedl. Ve svém skriptu přidáš do košíku další věci. |
||
Kry5 Profil |
#7 · Zasláno: 26. 12. 2010, 13:08:10
Taps:
Session_start tam samozřejmě mám. Vycházím z něj. Ale bohužel si nevím rady, proč mi toto nefunguje. Většinou nepoužívám v databázových dotazech IN a to složité získání ID, tomu nerozumím a předpokládám, že chyba bude tam. Alphard: Teď jsem si uvědomil, že potřebuji řešit i případ, kdy je v košíku několik kusů stejného zboží, ale různých velikostí. To by asi v tomto případě nešlo. Jak byste to upravil? Děkuji |
||
Alphard_ Profil * |
#8 · Zasláno: 26. 12. 2010, 17:30:55
Kry5:
„Jak byste to upravil?“ Nevím, jaká je konkrétní situace. Záleži na struktuře databáze, identifikaci prvků apod. Jste si jistý, že je ve vašich silách udělat eshop? Jde tam o peníze. |
||
Kry5 Profil |
#9 · Zasláno: 26. 12. 2010, 17:43:29
Alphard:
Celý eshop už mám hotový. Jde mi teď o košík pro neregistrované uživatele a já pole moc nepoužívám a tak nevím. Myslím, že tady na struktuře databáze nezáleží potřebuji akorát uložit session ve které budou tři data a identifikovat jednu session musím podle 2 dat -> ID_zboží a velikosti. Tj. v názvu pole musí být asi zahrnuty obě dvě. |
||
Alphard_ Profil * |
#10 · Zasláno: 26. 12. 2010, 17:59:27
Kry5:
„Tj. v názvu pole musí být asi zahrnuty obě dvě.“ Ne, v názvu určitě nemusí. „Myslím, že tady na struktuře databáze nezáleží potřebuji akorát uložit session ve které budou tři data a identifikovat jednu session musím podle 2 dat“ Nevím, co vlastně chcete. Zboží uložené máte, co si představit pod identifikací nevím. Máte id + doplňující informace, víc nepotřebujete. |
||
Kry5 Profil |
#11 · Zasláno: 26. 12. 2010, 18:02:24
Alphard:
S databází problém není. Řeším jenom předání pomocí sessions. Jeden problém, nebo spíše dotaz byl pokud bude mít tak jak jste navrhoval několikaúrovňové array ( $_SESSION["kosik"]['id'] = array('velikost', 'pocet'); pro příklad boty mají ID=5 a možné velikost 1,2,3,4 a uživatel si do košíku přidá tyhle boty 2x ale jednou velikost 1 a jednou velikost 2. V tom případě by se session (měly by stejné jméno) přepsali. Nebo se pletu? |
||
Alphard_ Profil * |
#12 · Zasláno: 26. 12. 2010, 18:14:37
Třeba další pole, velikost 1 je tam 2x, velikost 3 je 1x.
$_SESSION["kosik"]['id'] = array(1 => 2, 3 => 1); Nebo mít další identifikátory pro různé parametry. Protože pak tam přidáte barvy a bude problém. |
||
Kry5 Profil |
#13 · Zasláno: 26. 12. 2010, 18:17:09
Alphard:
Asi to vyřeším tak, že tam jednoduše přidám další pole ve kterém bude velikost. Děkujï moc za pomoc! |
||
Časová prodleva: 13 let
|
0