Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Błąd przy dodawaniu do shooping card
Forum PHP.pl > Forum > Przedszkole
Gość
wyskakuje mi błąd: Notice: Undefined index: action in ...
Może mi ktoś pomóc, nie wiem co robić, dodanie isset generuje inny błąd , help


  1. $cart = $_SESSION['cart'];
  2. $action =$_GET['action'];
  3. switch ($action) {
  4. case 'add':
  5. if ($cart) {
  6. $cart .= ','.$_GET['id'];
  7. } else {
  8. $cart = $_GET['id'];
  9. }
  10. break;
  11. case 'delete':
  12. if ($cart) {
  13. $items = explode(',',$cart);
  14. $newcart = '';
  15. foreach ($items as $item) {
  16. if ($_GET['id'] != $item) {
  17. if ($newcart != '') {
  18. $newcart .= ','.$item;
  19. } else {
  20. $newcart = $item;
  21. }
  22. }
  23. }
  24. $cart = $newcart;
  25. }
  26. break;
  27. case 'update':
  28. if ($cart) {
  29. $newcart = '';
  30. foreach ($_POST as $key=>$value) {
  31. if (stristr($key,'qty')) {
  32. $id = str_replace('qty','',$key);
  33. $items = ($newcart != '') ? explode(',',$newcart) : explode(',',$cart);
  34. $newcart = '';
  35. foreach ($items as $item) {
  36. if ($id != $item) {
  37. if ($newcart != '') {
  38. $newcart .= ','.$item;
  39. } else {
  40. $newcart = $item;
  41. }
  42. }
  43. }
  44. for ($i=1;$i<=$value;$i++) {
  45. if ($newcart != '') {
  46. $newcart .= ','.$id;
  47. } else {
  48. $newcart = $id;
  49. }
  50. }
  51. }
  52. }
  53. }
  54. $cart = $newcart;
  55. break;
  56. }
toaspzoo
Cytat(Gość @ 12.08.2012, 15:57:48 ) *
wyskakuje mi błąd: Notice: Undefined index: action in ...

I co dalej, w której linii ?
Gość
sorki nie wrzuciłm
  1. $action =$_GET['action'];

Notice: Undefined index: action in C:\xampp\htdocs\Myonlinestore\card.php on line 14
toaspzoo
Czyli już wszystko w porządku ?
Gość
nie, dalej to samo
wNogachSpisz
Musisz sprawdzić czy zmienna GET['action'] istnieje (czy została zadeklarowana).
Użyj w tym celu funkcj isset(), to chyba najszybsza i najczęsciej wykorzystywana funkcja w całym PHP.

Jeśli w parametrze do funkcji isset() przekażesz niezadeklarowaną zmienną, nie spowoduje to wyświetlenia otrzeżenia. Na tym polega jej wyjątkowość.
Gość
zmieniłem na
  1. $action =isset($_GET['action']);

i wywala mi błąd: Notice: Undefined index: id in C:\xampp\htdocs\Myonlinestore\card.php on line 17
i po odswieżeniu dodaje mi jeden w
  1. $cart = $_SESSION['cart'];
  2. if (!$cart) {
  3. return '<p>You have no items in your shopping cart</p>';
  4. } else {
  5. // Parse the cart session variable
  6. $items = explode(',',$cart);
  7. $s = (count($items) > 1) ? 's':'';
  8. return '<p>You have'.count($items).' item'.$s.' in your shopping cart</p>';
  9. }


tu jest cały kod
card.php
  1. <?php
  2. ini_set('display_errors','1');
  3. ?>
  4. <?php
  5. // Include database connection
  6. require_once('storesript/conecttomysql.php');
  7. // Include functions
  8. require_once('functions.inc.php');
  9. // Start the session
  10. $cart = $_SESSION['cart'];
  11. $action =isset($_GET['action']);
  12. switch ($action) {
  13. case 'add':
  14. if ($cart) {
  15. $cart .= ','.$_GET['id'];
  16. } else {
  17. $cart = $_GET['id'];
  18. }
  19. break;
  20. case 'delete':
  21. if ($cart) {
  22. $items = explode(',',$cart);
  23. $newcart = '';
  24. foreach ($items as $item) {
  25. if ($_GET['id'] != $item) {
  26. if ($newcart != '') {
  27. $newcart .= ','.$item;
  28. } else {
  29. $newcart = $item;
  30. }
  31. }
  32. }
  33. $cart = $newcart;
  34. }
  35. break;
  36. case 'update':
  37. if ($cart) {
  38. $newcart = '';
  39. foreach ($_POST as $key=>$value) {
  40. if (stristr($key,'qty')) {
  41. $id = str_replace('qty','',$key);
  42. $items = ($newcart != '') ? explode(',',$newcart) : explode(',',$cart);
  43. $newcart = '';
  44. foreach ($items as $item) {
  45. if ($id != $item) {
  46. if ($newcart != '') {
  47. $newcart .= ','.$item;
  48. } else {
  49. $newcart = $item;
  50. }
  51. }
  52. }
  53. for ($i=1;$i<=$value;$i++) {
  54. if ($newcart != '') {
  55. $newcart .= ','.$id;
  56. } else {
  57. $newcart = $id;
  58. }
  59. }
  60. }
  61. }
  62. }
  63. $cart = $newcart;
  64. break;
  65. }
  66. $_SESSION['cart'] = $cart;
  67. ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  68.  
  69. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  70. <head>
  71. <title>PHP Shopping Cart Demo ˇ Cart</title>
  72. <link rel="stylesheet" href="style/styles.css" />
  73. </head>
  74.  
  75. <body>
  76.  
  77. <div id="shoppingcart">
  78.  
  79. <h1>Your Shopping Cart</h1>
  80.  
  81. <?php
  82. echo writeShoppingCart();
  83. ?>
  84.  
  85. </div>
  86.  
  87. <div id="contents">
  88.  
  89. <h1>Please check quantities...</h1>
  90.  
  91. <?php
  92. echo showCart();
  93. ?>
  94.  
  95. <p><a href="products.php">Back to bookshop...</a></p>
  96.  
  97. </div>
  98.  
  99. </body>
  100. </html>

functions.inc.php
  1. <?php
  2. function writeShoppingCart() {
  3. $cart = $_SESSION['cart'];
  4. if (!$cart) {
  5. return '<p>You have no items in your shopping cart</p>';
  6. } else {
  7. // Parse the cart session variable
  8. $items = explode(',',$cart);
  9. $s = (count($items) > 1) ? 's':'';
  10. return '<p>You have'.count($items).' item'.$s.' in your shopping cart</p>';
  11. }
  12. }
  13.  
  14. function showCart() {
  15. global $db;
  16. $cart = $_SESSION['cart'];
  17. if ($cart) {
  18. $items = explode(',',$cart);
  19. $contents = array();
  20. foreach ($items as $item) {
  21. $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
  22. }
  23. $output[] = '<form action="card.php?action=update" method="post" id="cart">';
  24. $output[] = '<table>';
  25. foreach ($contents as $id=>$qty) {
  26. $sql = mysql_query("SELECT * FROM products WHERE id='$id' LIMIT 1");
  27. while ($row = mysql_fetch_array($sql)) {
  28. $productname= $row ["productname"];
  29. $producent= $row ["producent"];
  30. $cena= $row ["cena"];
  31. $output[] = '<tr>';
  32. $output[] = '<td><a href="card.php?action=delete&id='.$id.'" class="r">Remove</a></td>';
  33. $output[] = '<td>'.$productname.' by '.$producent.'</td>';
  34. $output[] = '<td>&pound;'.$cena.'</td>';
  35. $output[] = '<td><input type="text" name="qty'.$id.'" value="'.$qty.'" size="3" maxlength="3" /></td>';
  36. $output[] = '<td>&pound;'.($cena * $qty).'</td>';
  37. $total += $cena * $qty;
  38. $output[] = '</tr>';
  39. }}
  40. $output[] = '</table>';
  41. $output[] = '<p>Grand total: <strong>&pound;'.$total.'</strong></p>';
  42. $output[] = '<div><button type="submit">Update cart</button></div>';
  43. $output[] = '</form>';
  44. } else {
  45. $output[] = '<p>You shopping cart is empty.</p>';
  46. }
  47. return join('',$output);
  48. }
  49. ?>
wNogachSpisz
Istnieją dwie możliwości:

1. Jesteś najbardziej bezmyślną osobą jaką spotkałem na tym forum.
2. Twój pierwszy kontakt z programowaniem w PHP jest właśnie dzisiaj i należy Cię skierowac na kurs dla bardzo początkujących.
Gość
a może Ci się pomyliły fora - jaka sama nazwa wskazuje "przedszkole" jest dla początkujących debilu, jeżeli nie masz ochoty pomagać to po co tu jesteś, nie masz przyjaciół w realnym życiu i szukasz na forach, to już wiem dlaczego!!!
wNogachSpisz
Przedszkole przedszkolem, ale kurs dla początkujących wypadałoby zaliczyć.

Zresztą Twoje postępowanie jest ewidentne. Od mojego postu gdzie zasugerowałem użycie isset, do Twojej odpowiedzi - w której uraczyłeś nas bezmyślnym jej użyciem - minęło 8 minut. W tak krótkim czasie to nawet opisu funkcji w manualu nie zdążyłbyś przeczytać.

Skoro ja jestem debilem, to kim ty jesteś?
Bezmyślny leń któremu trzeba "przeżuć mięsko" to najdelikatniejsze określenie jakie przychodzi mi do głowy.
Gość
Cytat(wNogachSpisz @ 12.08.2012, 15:56:18 ) *
Przedszkole przedszkolem, ale kurs dla początkujących wypadałoby zaliczyć.

Zresztą Twoje postępowanie jest ewidentne. Od mojego postu gdzie zasugerowałem użycie isset, do Twojej odpowiedzi - w której uraczyłeś nas bezmyślnym jej użyciem - minęło 8 minut. W tak krótkim czasie to nawet opisu funkcji w manualu nie zdążyłbyś przeczytać.

Skoro ja jestem debilem, to kim ty jesteś?
Bezmyślny leń to najdelikatniejsze określenie jakie przychodzi mi do głowy.


juz sie gadałeś geniuszu bez przyjaciół jeżeli tak to odbij ode mne jeżeli nie to mi pomóż
wNogachSpisz
W jednej chwili nazywasz mnie debilem, w następnej geniuszem. Zdecyduj się smile.gif
Gość
Cytat(wNogachSpisz @ 12.08.2012, 16:08:02 ) *
W jednej chwili nazywasz mnie debilem, w następnej geniuszem. Zdecyduj się smile.gif

w porównaniu do mojej wiedzy w php to jesteś geniuszem , ale patrząc na wcześniejszy komentarz tylko jedno pzychodzi do głowy ...
wNogachSpisz
Cytat(Gość @ 12.08.2012, 17:10:42 ) *
w porównaniu do mojej wiedzy w php to jesteś geniuszem , ale patrząc na wcześniejszy komentarz tylko jedno pzychodzi do głowy ...

Kiedy ktoś pisze że tylko jedno przychodzi mu do głowy, to mi też tylko jedno przychodzi do głowy...
O ile nie jesteś dziewczyną, to możesz zapomnieć smile.gif
Gość
Cytat(wNogachSpisz @ 12.08.2012, 16:12:34 ) *
Kiedy ktoś pisze że tylko jedno przychodzi mu do głowy, to mi też tylko jedno przychodzi do głowy...
O ile nie jesteś dziewczyną, to możesz zapomnieć smile.gif

następna debilna odpowiedz, cytat: "najgłupsza osoba na forum" zaczynasz wygrywać Lkingsmiley.png
Daiquiri
Autorze tamatu - niestety brakuje Ci podstaw PHP. User wNogachSpisz dał Ci kompletne rozwiązanie, jednak źle je zaimplementowałeś. Powinieneś dodać warunek z isset, w stylu
if (isset ($TwojaZmienna) { zrób cośtam }. Ostrzeżenie, które Ci się wyświetla to komunikat o tym, iż sprawdzasz zawartość zmiennej z indeksem, który nie został ustawiony (innymi słowy, nie masz w adresie końcówki action=.

Zamykam, nie ma sensu dalej się "wyzywać".
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.