Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Wybór produktu <przycisk kup>
-jowice-
post
Post #1





Goście







Zwracam się do was kolejny raz o poradę (jakąś małą podpowiedź choćby czy idę dobrym tropem). Otóż tworzę formularz, który po przyciśnięciu przycisku kup wysyła do bazy danych informacje o tym jaki produkt został kupiony i jaka jego ilość. Problem w tym, że produkty są pobierane z bazy danych przy pomocy pętli i nie za bardzo wiem, jak to zrobić żeby przy naciśnięciu przycisku kup wiadomo było który konkretnie produkt został kupiony.
Cóż.. jak na razie po naciśnięciu przycisku kup nie dzieje się nic, wiem, że to niezbyt dobrze świadczy o tym skrypcie, no ale [w sumie nie mam nic na swoje usprawiedliwienie].


  1. <?php
  2. function form ($ilosc = ""){
  3. ?>
  4.  
  5. <form action="produkty.php" method="POST">
  6. <div>
  7. Ilość sztuk: <input name="ilosc" value="<?= $ilosc; ?>"/><br />
  8. <input type="hidden" name="id" value="<?php echo $dane['P_ID'] ?>">
  9. <input type="submit" name="submit" value="Kup" />
  10. </div>
  11. </form>
  12.  
  13. <?php
  14. }
  15. $link = mysql_connect('','','');
  16.  
  17. if(!$link)
  18. {
  19. die('Could not connect: ' .mysql_error());
  20. }
  21. else
  22. {
  23. mysql_select_db('nsuder');
  24.  
  25. $result = mysql_query("SELECT * FROM PRODUKT");
  26. if (!$result) {
  27. echo 'invalid query';
  28. }
  29.  
  30. while($dane=mysql_fetch_array($result)){
  31.  
  32. echo "<h3>$dane[P_NAZWA]</h3>";
  33. echo "<p>$dane[P_OPIS]";
  34. echo "<br /><i>$dane[P_CENA]</i></p>";
  35. echo "$dane[P_OBRAZEK]";
  36. echo "<br /><br /><br /><br /><br />";
  37.  
  38. if ($dane['P_ILOSC'] > 0){
  39. form();
  40. }
  41. else{
  42. echo 'Produkt chwilowo niedostępny:(';
  43. echo "<br/>";
  44. }
  45. echo ".........................................";
  46.  
  47. if (isset($_GET["action"]) == 'kup' ) {
  48. $zapytanie = mysql_fetch_array(mysql_query("SELECT * FROM PRODUKTY WHERE P_ID = '$_POST['id']'"));
  49. mysql_query("INSERT INTO LINK (L_P_ID, L_ILOSC) VALUES($zapytanie[P_ID], $_POST['ilosc'])")
  50. or die("Nie można zakupić");
  51.  
  52. header('Location: formularz.php');
  53. }
  54.  
  55. }
  56.  
  57. }
  58.  
  59. mysql_close($link);
  60. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Cytat(jowice @ 1.05.2011, 13:05:02 ) *
Cóż.. jak na razie po naciśnięciu przycisku kup nie dzieje się nic, wiem, że to niezbyt dobrze świadczy o tym skrypcie, no ale [w sumie nie mam nic na swoje usprawiedliwienie].

Haha. To, co tutaj widzę to jakaś masakra. Błędy:
- mieszanie POST z GET (albo jedno albo drugie) jeśli wysyłasz formularz postem to do przesłanych danych dobierasz się tylko i wyłącznie za pomocą albo $_POST albo $_REQUEST
- przemieszanie widoku z logiką funkcji
- brak jakichkolwiek zabezpieczeń
- powinno być: $zapytanie = mysql_fetch_array(mysql_query("SELECT * FROM PRODUKTY WHERE P_ID = " . $_POST['id']));
- mieszanie tagów <?php z tagami krótkimi <?=, w ogóle używanie tagów <?=

Ten post edytował darko 1.05.2011, 12:18:13


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
-jowice-
post
Post #3





Goście







No tak- pewnie nie najlepiej to wygląda. No fajnie by było gdyby wyglądało dobrze, ale cóż- prawda jest taka, że nigdy nie miałam do czynienia z jakimkolwiek programowaniem[jak się chce to znajdzie się jednak coś na usprawiedliwenie], no ale jako, że muszę coś takiego zrobić, więc pomyslałam- zaszaleje i spróbuję, może przy okazji czegoś się nauczę.
No i w sumie tak jest- nawet dzięki Tobie:). Dziękuję za odpowiedź w każdym razie:)
Ahaha- już się nie doczekam aż wyśmieje mnie mój informatyk na uczelniXDXD
Go to the top of the page
+Quote Post
darko
post
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Spokojnie, nie jest tragicznie, widziałem znacznie gorszy kod pisany przez programistów z dość długim wydawałoby się stażem. Po prostu trzeba kilka rzeczy zmienić i będzie dobrze smile.gif


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
-jowice-
post
Post #5





Goście







Dzięki za pokrzepiające słowa:).
Poprawiłam już (chyba!) wszystkie błędy, które wymieniłeś (nie dodawałam zabezpieczeń, bo na poziomie na którym to robię nie jest to najważniejsze:). No i niestety podpowiedź, ze idę w dobrym kierunku okazała się niewystarczająca ohno-smiley.gif .
Myślałam, że to wina złego umiejscowienia tej instrukcji:
  1. if (isset($_POST["action"]) == 'kup' ) {
  2. }

bo cokolwiek bym nie dała do środka, nie daje to żadnego efektu. Ale nie wiem czy mój tok rozumowania jest dobry, bo próbowałam to dawać w różnych miejscach- bez efektu.
Tak więc gdybym mogła prosić jeszcze o jakieś wskazówki byłabym wdzięczna oneeyedsmiley02.png
Go to the top of the page
+Quote Post
darko
post
Post #6





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Tutaj chcesz jak rozumiem sprawdzić dwa warunki, pierwszy czy $_POST['action'] jest w ogóle ustawione oraz czy zawartość $_POST['action'] jest równa wartości 'kup', należałoby połączyć te warunki w taki sposób:
  1. if (isset($_POST["action"]) && $_POST["action"] == 'kup' ) {
  2.  
  3. }

Poza tym zawsze w razie niepewności i/lub brak chęci do użycia debuggera możesz zobaczyć, czy i co znajduje się w $_POST['action']:
  1. var_dump($_POST['action']);


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 10:03