Autor | Zpráva | ||
---|---|---|---|
slower Profil * |
#1 · Zasláno: 20. 4. 2012, 21:33:57
Zdravím, potřeboval bych pomoct s jedním kódem v php, už se s tím trápím dlouho:(
O co jde: Mám nákupní košík, do něho přidávám produkty, což mi šlape... potom je dobré, aby v košíku mohl uživatel měnit množství dané položky a tady je menší problém... mám funkci změna, která změní ten počet v košíku... ukáži vám kousek funkce, která je funkční: ( potřebuji něco vysvětlit) function zmena() { $Id = $_POST['Id']; // id kose $knihaId = $_POST['knihaId']; // id knihy $pocetVeci = $_POST['Pocet']; // pocet ks jedné knihy v košíku $pocet = count($pocetVeci); // ZDE TO NECHÁPU! proč je výsledek 1, když mám na každém řádku v tabulce košík ten náš počet ks // Pro pochopení: Tabulka košík obsahuje např.: 3 řádky 1. řádek -- počet (1x) kniha(kolja) 2. řádek -- počet (3x) kniha(mravenecek) 3. řádek -- počet (1x)kniha(mafia) //count mi spočítá 1 ALE PROC ? když tam mám přece 3 položky??? for ($i = 0; $i < $pocet; $i++) { $novyPocet = (int)$pocetVeci[$i]; } // $i bude nula, count spočítal, že je tam 1, a cyklus for udělá jen jeden cyklus.... } Děkuji za Váš čas |
||
ShiraNai7 Profil |
#2 · Zasláno: 20. 4. 2012, 22:07:13
$_POST['Pocet'] je cislo? Pokud ano, tak nedava smysl na nem volat funkci count(). Pouzij rovnou toto cislo.
|
||
slower Profil * |
#3 · Zasláno: 20. 4. 2012, 22:21:01 · Upravil/a: slower
ano, to je číslo
ale proč je to jednička ? když na dynamické stránce mám těchto inputu pro Počet třeba několik ? <input name="Pocet[]" type="text"> ja jsem myslel, že count mi spočíta, kolik těch inputu bylo v dynamické stránce vytvořeno... |
||
David Klouček Profil |
slower:
Ty inputy pojmenovávej takhle: name="Pocet[0]" name="Pocet[1]" name="Pocet[2]" |
||
slower Profil * |
#5 · Zasláno: 21. 4. 2012, 08:32:23
Nemůžu je takhle pojmenovat...protože já netuším kolik tech řádku v košíku budu mít, to záleží na uživateli ( na každém řádku bude jeden input)...
Proto to mám pojmenované name="Pocet[]" Pořád jsem nepochopil, když funkce count má spočítat počet všech prvků v poli... například u mě, po přidání knihy do košíku dejme to mu že už tam mám tří řádky a na každém řádku je ten input , a proc po použití count mi spočíta počet prvku v poli 1 když tam těch inputu s Poctem mám víc ? <tr> <td> <input name="Pocet[]" type="text"> </td></tr> $pocetVeci = $_POST['Pocet']; $pocet = count($pocetVeci); Počet 3-- kniha --- první řádek Počet 2-- kniha --- druhy řádek Tady by měl count spočítat počet prvku v poli 2 ne?? |
||
mimochodec Profil |
#6 · Zasláno: 21. 4. 2012, 08:45:43
slower:
Možná trochu odbočím.. opravdu chceš ten nákup udržovat v POSTu? Běžně se to dělá v sessions nebo cookies. |
||
Someone Profil |
#7 · Zasláno: 21. 4. 2012, 08:53:49
Souhlasím s mimochodec avšak pr ořešení tohoto problém, navzdory tomu, že by SESSION bylo lepší: zkus si vypsat pole ať zjistíš v čem může být chyba:
var_dump($_POST) případně var_dump($_POST['Poce'])
|
||
slower Profil * |
#8 · Zasláno: 21. 4. 2012, 08:56:21 · Upravil/a: slower
tady http://php.vrana.cz/nakupni-kosik.php má to dobré, ale já se v tom moc nevyznám, a můj košík umí změnit množství...a ten to tam nemá...
var_dump($_POST['Pocet']) tak jsem to zkusil vypsalo mi to array(1) { [0]=> string(1) "6" }, což znamená že v poli 1 je počet 6... tady je ukázka, že v mém košíku je těch polí 3 Proc mi to vždycky ukáže ten poslední input ? což je pole 1 s počtem 6 ? ale předtím mám ještě další dvě pole obrázek http://2i.cz/c249a78d5e |
||
Again Profil |
#9 · Zasláno: 21. 4. 2012, 09:10:59
slower:
a ten to tam nemá - nejde o spojování kódu, ale o ukládání informací do SESSION, v principu to funguje takto: 1) Uživatel si přidá do košíku novou věc -> vytvoří se pole s ID a uloží se vše do SESSION. 2) Pokud uživatel přidá další věc -> do pole se přidá nové SESSION. 3) Pokud uživatel zboží vyjme z košíku, z pole se vyjme daný prvek. 4) Poté co si uživatel spokojeně nakoupí a přejde do košíku, zobrazí se mu výčet všech položek, které nakoupil (pomocí dotazu do db se zjistí další informace). Největší výhoda použití SESSION je, že u všech stránek můžeš zobrazovat aktuální počet kusů v košíku a přidávat/odebírat zboží pouhou manipulací v poli a poté po kliknutí na košík se všechny informace v SESSION vypíšou + další informace můžeš získat dotazem do databáze ... |
||
Časová prodleva: 12 let
|
0