![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 6 Dołączył: 23.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dlaczego źle dodaje ? i jak zrobić by dla każdego produktu ilość sztuk była indywidualna ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 4 Dołączył: 4.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Cytat jak zrobić by dla każdego produktu ilość sztuk była indywidualna Musisz stworzyć tablicę dwuwymiarową, tzn. $koszyk['nazwa_produktu']['ilosc_sztuk'] |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 6 Dołączył: 23.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem czy jest to właściwy tok myślenia, ale wydaje sie, że powinno zostać zapisane coś takiego:
Przy opcji dodawania ilości produktu zastosowałbym taki kod:
Zaznaczam, że to wszystko znajduje się w pętli która wybiera produktu i danym id z tablicy więc wartość dla 'produkty' powinna sie rownac elementowi ktory znajduje sie w tej tablicy czyli. Wybiera produkt o id = 5 z bazy i dopisuje do produkty[1] ilosc jaka zostala wpisana w formularzu.
Nie wiem czy ta logika jest słuszna. Wiem natomiast, że nie bardzo chce to działać (IMG:style_emoticons/default/sad.gif) wyskakuje błąd: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 Poradzicie coś ? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 4 Dołączył: 4.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Cytat You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 Jak sama treść mówi masz coś źle z zapytaniem do bazy danych. Ja mam zrobione to tak: Na stronie z info o produkcie mam tak: Kod <form action=\"koszyk.php\" method=\"post\"> <input type=\"hidden\" name=\"dodaj\" value=\"".$tablica['id']."\" /> <div><strong>Ilosc: <input type=\"text\" name=\"ilosc\" value=\"1\" size=\"5\" /> szt.</strong></div> <br /> <div><strong>Cena: ".$tablica['cena']." PLN</strong></div> <div><input type=\"image\" src=\"images/dodaj.png\" /></div> </form> gdzie $tablica jest to wynik zapytania do bazy danych. W pliku koszyk.php mam tak: Kod <?php $koszyk_stan = true; include("include/config.php"); include("header.php"); include("walidacja.php"); echo "<div id=\"products_big\"> <form method=\"post\" action=\"koszyk.php\"> <input type=\"hidden\" name=\"akcja\" value=\"updatekoszyk\" /> <div class=\"nazwa_koszyk\"></div> <table class=\"tabela_koszyk\" cellpadding=\"0\" cellspacing=\"0\"> <tr><th>Nazwa produktu</th><th width=\"50\">Ilość</th><th width=\"50\">Usuń</th><th width=\"80\">Cena PLN</th></tr>"; foreach($koszyk as $klucz=>$wartosc) { $zapytanie = mysql_query("SELECT * FROM test_produkty WHERE id='".(int)$klucz."' LIMIT 1"); if (mysql_num_rows($zapytanie)>0) { $produkt = mysql_fetch_array($zapytanie); $cena = $produkt['cena']; echo "<tr><td>".$produkt['nazwa']."</td><td><input size=\"4\" type=\"text\" name=\"ilosci[".$klucz."]\" value=\"".$wartosc."\" disabled=\"disabled\" /></td><td><a href=\"koszyk.php?usun=".$klucz."\"><img src=\"images/koszyk_usun.png\" alt=\"Usuń\" /></a></td><td>".($cena*$wartosc)."</td></tr>"; } } echo "<tr><td colspan=\"3\"><strong>Razem: </strong><td><strong>".$suma." PLN</strong></td></tr>"; echo "</table> <div class=\"koszyk_btns\"> <a href=\"products.php\"><img src=\"images/btn_kontynuuj.jpg\" alt=\"Kontynuuj zakupy\" /></a>"; if(sizeof($koszyk) > 0) {echo "<a href=\"zamowienie.php\"><img src=\"images/btn_zamowienie.jpg\" alt=\"Zamówienie\" /></a></div>";} echo "</form></div> </div></div><div id=\"main_down\"></div>"; include("footer.php"); ?> W pliku header.php, który includowany jest na początku skryptu, mam: Kod if (!isset($_SESSION["koszyk"])) { session_register("koszyk"); $koszyk=array(); } else $koszyk=unserialize($_SESSION["koszyk"]); if ($koszyk_stan==true) { if ((int)$_POST["dodaj"]>0) { if (isset($koszyk[(int)$_POST["dodaj"]])) { $koszyk[(int)$_POST["dodaj"]]+=(int)$_POST["ilosc"]; } else { $koszyk[(int)$_POST["dodaj"]]=(int)$_POST["ilosc"]; } } if ((int)$_GET["usun"]>0) { unset($koszyk[(int)$_GET["usun"]]); } if ($_POST["akcja"]=="updatekoszyk") { foreach ($koszyk as $klucz=>$wartosc) { if ($_POST["ilosci"][$klucz]==0) unset($koszyk[$klucz]); else $koszyk[$klucz]=$_POST["ilosci"][$klucz]; } } $_SESSION["koszyk"]=serialize($koszyk); } $suma=0; foreach($koszyk as $klucz=>$wartosc) { $zapytanie = mysql_query("SELECT `cena` FROM `test_produkty` WHERE `id`='".(int)$klucz."' LIMIT 1"); if (mysql_num_rows($zapytanie)>0) { $produkt=mysql_fetch_array($zapytanie); $cena=$produkt["cena"]; $suma+=($cena*$koszyk[$klucz]); } } Tutaj dodajemy,aktualizuje,my koszyk odnośnie danego produktu, którego "id" zostało pobrane z koszyk.php ($zapytanie = mysql_query("SELECT * FROM test_produkty WHERE id='".(int)$klucz."' LIMIT 1")(IMG:style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 6 Dołączył: 23.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Twoje rozwiązanie wydaje się być bardziej profesjonalne (IMG:style_emoticons/default/smile.gif) . Wiem już gdzie leży dokładnie mój problem, ale nie wiem dlaczego.
Wymyśliłem coś co nie ma prawa nie działać. $idd = id produktu, wiec w tej zmiennej tablicowej zapisuje sie dla elementu równemu id produktu liczba 1.
sprawdzanie formularza dodawania.
Gdy do koszyka dodam jeden produkt wszystko dziala, gdy dodam wiecej lub jesli wroce do strony glownej i ponownie wywolam koszyk to juz nie dziala (IMG:style_emoticons/default/sad.gif) |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 4 Dołączył: 4.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Kod echo "<input type='hidden' name='id' value= ".$_rekord['id']." />"; Co to jest $_rekord['id'] ? Value musi mieć wartość z tablicy, czyli $rekord['id'] bądź $_SESSION['produkty']['id']. Cytat Gdy do koszyka dodam jeden produkt wszystko dziala, gdy dodam wiecej lub jesli wroce do strony glownej i ponownie wywolam koszyk to juz nie dziala U mnie na każdej stronie includowany jest header.php, gdzie zawiera się inicjacja koszyka, dodawanie albo aktualizacja. Dodatkowo w plikach masz na początku session_start() w celu utrzymania zmiennych sesyjnych? Koszyk działa na sesjach, tak więc jeśli po drodze nie będziesz miał gdzieś session_start() automatycznie zmienne nie będą zapisywały się. Ten post edytował futura 20.02.2010, 12:47:17 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 115 Pomógł: 6 Dołączył: 23.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Rzeczywiście była tam literówka, ale główny problem leżał w pliku gdzie wyświetlałem produkty elektronika.php miałem tam instrukcje która ustawiała zmienną sesyjną produkty na 1. Dlatego za każdym razem gdy wracałem do tego pliku aby dodać inny produkt a następnie wyświetlić koszyk nic się nie wyświetlało. Głupi prosty błąd. Dzięki za zainteresowanie i pomoc. Temat można zamknąć
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 17:18 |