Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Wybór produktu <przycisk kup>
Forum PHP.pl > Forum > Przedszkole
jowice
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. ?>
darko
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 <?=
jowice
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
darko
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
jowice
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
darko
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']);
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.