Autor | Zpráva | ||
---|---|---|---|
Luccy Profil * |
#1 · Zasláno: 31. 5. 2011, 13:18:15
ahojky, potřebovala by jsem poradit jakým způsobem udělat nákupní košík? respektive jak udělat aby když vygeneruji u každého produktu tlačítko aby se po kliku na dané dlačítko objevili v košíku - jde mi o to jak má script rozpoznat co ke kterému tlačítku přiřadit,
generuji tlačítko s name="button" jestli se to rozpoznápá pomocí class? nebo jak? |
||
panther Profil |
#2 · Zasláno: 31. 5. 2011, 13:22:06 · Upravil/a: panther
Luccy:
name=button[id-vyrobku] |
||
Luccy Profil * |
#3 · Zasláno: 31. 5. 2011, 13:28:06
dobře a jak ho pak zavolám do podmínky?
if ( button[id-vyrobku]) {} jde mi o to jestli podminka pozna ze se kliklo prave na ten button a ulozi dané proměné právě z toho formuláře? |
||
panther Profil |
#4 · Zasláno: 31. 5. 2011, 13:31:02
Luccy:
vypiš si var_dump($_POST) nebo var_dump($_GET) a uvidíš. Přijde pole $_POST['button']['id-vyrobku']. |
||
Luccy Profil * |
#5 · Zasláno: 31. 5. 2011, 13:35:50
aha takže tedy takto?
deklarace: $button = $_POST['button']['id-vyrobku']; html <input type="button" name="['button']['id-vyrobku']"> podmínka: if ($ button) {echo $nadpis-produktu;} ? |
||
Luccy Profil * |
#6 · Zasláno: 31. 5. 2011, 14:05:23
Respektive jde to nějak takto?
generování echo "<div id='umistenitlacitka' style='padding-left:45px;'><input type='submit' value='Přidat do košíku' name='button[$id_produktu]' class='button[$id_produktu]'></div></div>[pre]"; delkarace: $buttonkosik=$_POST(button($id_produktu)); obecná podmínka pro všechny tlačítka: if ($buttonkosik) { echo "<h1>"; echo $nadpis; echo $buttonkosik; echo "/h1";} |
||
Luccy Profil * |
#7 · Zasláno: 31. 5. 2011, 17:10:49
napadlo mě to udělat nějak takto:
$buttonkosik=$_POST['button']; foreach($_POST['button'] as $button){ if($button=='xy') {echo $button; echo 'ahoj';} } ale stejně to neběží, jakto? :((( |
||
etexweb Profil |
#8 · Zasláno: 31. 5. 2011, 17:35:37 · Upravil/a: etexweb
Toto je najjednoduchší príklad:
Funkcia(): <?php /** * Basket * * Jednoduchy nakupny kosik cez SESSION * * @author stenley <stenley@webdev.sk> * @version 1.1 */ class Basket { private $BASKET; //obsah kosiku private $PRICE; //cena produktov v kosiku function __construct() { if(!isset($_SESSION['basket'])) { $_SESSION['basket'] = array(); $_SESSION['price'] = 0; } $this->BASKET = &$_SESSION['basket']; $this->PRICE = &$_SESSION['price']; } //prida novu polozku do kosika public function AddItem($itemData,$itemDataKey='') { if(empty($itemDataKey)) { $this->BASKET[] = $itemData; } else { if(array_key_exists($itemDataKey,$this->BASKET)) { $this->BASKET[$itemDataKey]['quantity'] += $itemData['quantity']; } else { $this->BASKET[$itemDataKey] = $itemData; } } } //ziska data z kosika public function GetData() { return $this->BASKET; } //ziska celkovu sumu kosika public function GetPrice() { $tmp_price = 0; $arrData = $this->GetData(); foreach($arrData as $item) { $tmp_price += $this->SumPrice($item); } $this->PRICE = $tmp_price; return $this->PRICE; } //vymaze polozku z kosika public function DeleteItem($itemDataKey) { unset($this->BASKET[$itemDataKey]); } //spocita celkovu sumu v kosiku private function SumPrice($item) { $tmp_price = 0; if(array_key_exists("price",$item)) { $tmp_price += $item['price']*$item['quantity']; } return $tmp_price; } //vyprazdni kosik public function DeleteBasket() { $this->BASKET = array(); $this->PRICE = 0; } } ?> Využitie: Pre zjednodusenie budu jednotlive produkty ulozene v poli: <? $produkty[1] = array( 'nazov' => 'Produkt 1', 'popis' => 'popis k 1.produktu', 'cena' => 30 ); $produkty[2] = array( 'nazov' => 'Produkt 2', 'popis' => 'popis k 2.produktu', 'cena' => 50 ); Nasledujuci kod (ulozeny v subore index.php) spolu s polom produktov vypisuje aktualny obsah kosika, celkovu sumu produktov v kosiku, obsahuje moznost pridat jednotlive produkty do kosiku a vymazat obsah kosika: <? session_start(); $kosik = new Basket; if(isset($_GET['empty'])) { //vymazanie obsahu kosiku $kosik->DeleteBasket(); header("Location: ./"); } if(!empty($_GET['id'])) { $id = $_GET['id']; if(array_key_exists($id,$produkty)) { //pridanie produktu (1ks) do kosiku $kosik->AddItem(array('title'=>$produkty[$id]['nazov'], 'price'=>$produkty[$id]['cena'],'quantity'=>1),$id); header("Location: ./"); } } ?> <h1>Obsah kosika</h1> <?php foreach($kosik->GetData() as $item) { echo $item['title'].' (cena: '.$item['price']*$item['quantity'].',-Sk/'.$item['quantity'].'ks)<br>'; } echo 'Celkova cena: '.$kosik->GetPrice(); ?> <p> <?php foreach($produkty as $id => $produkt) { echo '<a href="?id='.$id.'">Pridat do kosika '.$produkt['nazov'].'</a><br>'; } ?> </p> <p><a href="?empty">Vymazat obsah kosika</a></p> |
||
etexweb Profil |
#9 · Zasláno: 31. 5. 2011, 18:38:44
Prečo to tak zložito čítať ?
<input type="hidden" value="polozka_kod" name="009855422665" /> <? if (is_numeric($polozka_kod)) { //vykonanie urcitej akcie... }else{ echo "Neplatne zadany kod!"; } |
||
Luccy Profil * |
#10 · Zasláno: 2. 6. 2011, 08:23:37
etexweb:
Ahojky, ale stenjě mě pořád nenapadá jak z <input type="hidden" value="polozka_kod" name="009855422665" /> vyčtu a vypíšu tu hodnotu name, když name tvoří cyklus? |
||
panther Profil |
#11 · Zasláno: 2. 6. 2011, 10:07:20
Luccy:
neznáš základy programování a snažíš se vytvořit eshop? Nechtěla bys to raději nechat někomu, kdo se v tomto oboru aspoň trochu vyzná? „když name tvoří cyklus?“ pořád nevíme, zda máš pro každý produkt jeden formulář, nebo máš všechny produkty s X odesílacími tlačítky v jednom formuláři. To je docela podstatný rozdíl. Ani nevím, jestli ti nějaká rada pomůže, vůbec nevíš, která bije. Programovat se bohužel/naštěstí nedá stylem pokus-omyl. etexweb: „if (is_numeric($polozka_kod)) {“ proměnná $polozka_kod existovat nebude. Všechny proměnné z formuláře jsou v $_POST/$_GET a spoléhat na specifické nastavení serveru... Nee, to není dobrý nápad.
|
||
Luccy Profil * |
#12 · Zasláno: 2. 6. 2011, 15:33:12
panther:
Mám x formulářu s x tlačítky, káždý produkt má vytvořený vlastní formulář, já bojuji s tím jak udělat podmínku, která mi vypíše hodnoty z formuláře, na kterém bylo stisklo tlačítko. konkrétně jak vypisuji formulář: echo "<form action='web.php' method='POST'>"; echo "<div id='produkt' style='padding:10px; float:left;'>"; echo "<div id='produkttop' style='background-image: url(http://www.web.cz/images/produkttop.png); width:210px; height:35px;'><div style='padding:10px; font-size: 11pt;font-family: Arial, Helvetica, sans-serif;'><b>$nadpis</b></div></div>"; echo "<div id='teloproduktu' style='background-image: url(http://www.web.cz/images/teloprodukt.png); width:210px; height:400px;'><div id='obr' style='padding:5px; padding-left:30px;'>$obr </div>"; echo "<div id='textprodukt' style='padding:10px; font-family: Arial, Helvetica, sans-serif; font-size: 10pt;'>"; echo $popis; echo "<B><p style='text-align: center;'>$cena ,-Kč</p></B>"; echo "</div>"; echo "<div id='umistenitlacitka' style='padding-left:45px;'><input type='submit' value='Přidat do košíku' name='button[$id_produktu]' class='=$id_produktu'></div></div>"; echo "<div id='produkttop' style='background-image: url(http://www.web.cz/images/produkttop.png); width:210px; height:35px;'></div>"; echo "</div>"; echo "</form>"; no a z takto vygenerovaného tlačítka, které má vždy jiné name potřebuji zjistit jak vytvořit podmínku if ($ POST[button][$id_produktu]) - RESPEKTIVE JAK TO ZAPSAT MEZI KULATÉ ZÁVORKY? DÍKY LUCCY |
||
panther Profil |
#13 · Zasláno: 2. 6. 2011, 16:26:28 · Upravil/a: panther
Luccy:
tak pokud je to takto, tak je to jednoduché. Nepotřebuješ zjišťovat, jaký formulář jsi odeslala, odešle se jen ten jeden. <input type=hidden name=id value=$id_produktu> <input tpye=submit name=submit> if (isset($_POST['submit'])) { //odeslano $prod_id = (int)$_POST['id']; } Žádné vícerozměrné pole nepotřebuješ. Stejně tak, pomocí hidden inputů, můžeš předávat např. i cenu, apod. kdybys chtěla (je to zbytečné, můžeš tahat z DB). |
||
Časová prodleva: 13 let
|
0