Autor | Zpráva | ||
---|---|---|---|
coffeephantom Profil * |
#1 · Zasláno: 28. 10. 2014, 01:00:07
Zdravím,
mám nějakou zkušenost s html, php, mysql, ale pramálo s javascriptem a potřeboval bych pomoc. Mám na webu košík a v něm vypsané produkty, u každého z nich je textový input a v něm hodnota počtu objednaných kusů. Rád bych, aby se po přepsání hodnoty v inputu aktualizoval řádek v databázi (počet kusů produktu). Mohl by někdo poradit? Děkuji předem za každou radu. |
||
juriad Profil |
#2 · Zasláno: 28. 10. 2014, 01:16:33
A proč tam jednoduše nepřidáš tlačítko Aktualizovat košík? Přece se změnou počtu kusů souvisí mnohem více parametrů:
1) množstevní sleva 2) dostupnost 3) cena poštovného Nějak si nedokážu představit, že bys chtěl toto vše řešit jak v PHP, tak v JS. Pokud tam tyto vlastnosti nemáš, ale nevylučuješ jejich zavedení, nejjedodušší je mít celý košík jako formulář a tlačítko Aktualizovat jej odešle na server. A buď se stránka refreshne, nebo se odešle AJAXem a celý obsah košíku se nahradí jeho novou verzí. |
||
bestik_63 Profil |
#3 · Zasláno: 28. 10. 2014, 09:30:15
Ahoj, tuto aktualizaci ale provést pouze ajaxem. U inputu bude reakce na událost onChange (při změně hodnoty políčka) nebo onBlur(při deaktivaci políčka)
Pak se ti pošle informace díky technologii ajax do jiného scriptu, který v databázi změní hodnotu. Nicméně pokud máš pramalé zkušenosti s javascriptem asi by to chtělo studium, protože Ajax bez javascriptu neuděláš. Taktéž potřebuješ i cookies. Pozn. internetový obchod jsem ještě nedělal, ale myslím, že ve fázi výběru zboží, se hodnoty píšou pouze do session a teprve po potvrzení nákupu se data píšou do databáze. |
||
coffeephantom Profil * |
#4 · Zasláno: 30. 10. 2014, 01:45:30
Děkuji bestik_63 za nakopnutí.
Pokud by někdo řešil stejný problém, předkládám řešení, které mi zafungovalo. kosik.php $(document).ready(function () { $('#cart').change(function () { $.post('update-cart.php', $(this).serialize(), function(data) { $('body').load('kosik.php#reload'); }); }); }); <form method="post" id="cart"> <input type="text" id="count" name="count[productid]"> </form> <div id="reload">Celková cena apod, co je potřeba aktualizovat.</div> update-cart.php include "db.php"; foreach($_POST['count'] as $key => $val) { if($val==0){ mysqli_query($conn,"DELETE FROM cart_item WHERE pid='$key'"); }else{ mysqli_query($conn,"UPDATE cart_item SET count = '$val' WHERE pid='$key'"); } } |
||
juriad Profil |
#5 · Zasláno: 30. 10. 2014, 02:02:17
coffeephantom:
To jako fakt všichni zákazníci dohromady sdílí ten samý košík? A zabezpečení evidentně vůbec neřešíš. Než budeš vymýšlet kokotiny s AJAXem, měl bys mít jádro eshopu hotové, zabezpečné a otestované. K čemu je automatické propsání počtu kusů do databáze, když ti eshop neumožní nákup dvou lidí současně? Psát e-shop není sranda, tady jde o peníze. |
||
coffeephantom Profil * |
#6 · Zasláno: 30. 10. 2014, 02:43:00
Kód jsem samozřejmě zjednodušil, aby zobrazoval jen problém, se kterým jsem do tohoto fóra přišel! Jinak ta sprostá slova snad opravdu nejsou zapotřebí...
|
||
juriad Profil |
#7 · Zasláno: 30. 10. 2014, 02:57:03
OK, myslel jsem, že je to reálný kus kódu; omlouvám se. Ono je skoro nemožné rozpoznat opravdu zkušeného člověka, který hledá nejlepší řešení, od bastliče, který ničemu vlastně nerozumí, ale tvrdí, že vše ovládá.
Ke zveřejněnému kódu mi [#5] přijde adekvatní; je na tobě posoudit, jak se týká tvé situace (kódu, který jsi nezverejnil). |
||
Časová prodleva: 10 let
|
0