Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Dodanie/usuniecie 1 pozycji z tablicy
Forum PHP.pl > Forum > Przedszkole
Ghandar
Witam serdecznie.

Robie cos na wzor sklepu internetowego. Produkty do koszyka sie dodaja. Jesli dodam produkt x razy, bedzie widoczny stan jako x. Tu jestem zadowolony. Jednak obok stanu (pole input z zamknieta mozliwoscia zmian) mam sobie 2 linki + i -. Obydwa odwoluja sie do tego samego pliku, gdzie jest klasa wyswietlajaca dane pliku.

A wiec wyglada to tak. Funkcja dodajaca przedmioty:
  1. <?PHP...
  2. public function order() {
  3. if (!isset($_SESSION['shop'][$_SESSION['customer_ID']])) {
  4. $_SESSION['shop'][$_SESSION['customer_ID']] = array();
  5. echo 'Koszyk pusty.';
  6. }
  7.  
  8. if (!isset($_SESSION['ID_' . $_SESSION['customer_ID']])){
  9. $_SESSION['ID_' . $_SESSION['customer_ID']] = 0;
  10. }
  11.  
  12. if($_GET['ID']){
  13. $_SESSION['shop'][$_SESSION['customer_ID']][] = $_GET['ID'];
  14. $_SESSION['ID_' . $_SESSION['customer_ID']]++;
  15. }
  16. }
  17. ...?>


I pokazujaca koszyk:
  1. <?php
  2. public function show_shop() {
  3. if (!isset($_SESSION['shop'][$_SESSION['customer_ID']])) {
  4. echo '<div align="center"><span class="font_error">Koszyk pusty.</span></div>';
  5. } else {
  6. include ('./templates/default/shop_header.tpl');
  7. foreach (array_unique($_SESSION['shop'][$_SESSION['customer_ID']]) as $k => $v) {
  8. $query  = 'SELECT * FROM products
  9. WHERE product_ID="' . $v . '"';
  10. $result = mysql_query($query);
  11.  
  12. while ($record = mysql_fetch_row($result)){
  13. $product_ID = $record[0];
  14. $mark_ID = $record[2];
  15. $name = $record[4];
  16. $price = $record[6];
  17.  
  18. $query_gm = 'SELECT * FROM marks
  19. WHERE mark_ID="' . $mark_ID . '"';
  20. $result_gm = mysql_query($query_gm);
  21.  
  22. while ($record_gm = mysql_fetch_row($result_gm)) {
  23. $mark = $record_gm[2];
  24.  
  25. $_SESSION['how_many'] = count(array_keys($_SESSION['shop'][$_SESSION['customer_ID']], $product_ID));
  26.  
  27. if ($_GET['PID'] == $product_ID && $_GET['option'] == 'add') {
  28. $array = $_SESSION['shop'][$_SESSION['customer_ID']];
  29. $keys = array_keys($array, $product_ID);
  30. $values = array_values($keys);
  31. $first = key($values);
  32. // dodanie 1 klucza/wartosci (tylko nie o istniejacej nazwie)
  33.  
  34. } elseif ($_GET['PID'] == $product_ID && $_GET['option'] == 'remove') {
  35. $array = $_SESSION['shop'][$_SESSION['customer_ID']];
  36. $keys = array_keys($array, $product_ID);
  37. $values = array_values($keys);
  38. $first = key($values);
  39.  // usuniecie 1 klucza/wartosci (tylko nie o istniejacej nazwie)
  40. }
  41.  
  42.  $_SESSION['how_many'] = count(array_keys($_SESSION['shop'][$_SESSION['customer_ID']], $product_ID));
  43.  
  44. echo '<form action="shop_' . $_SESSION['customer_ID'] . '.html" method="post">' . "r\n";
  45. echo '<table cellpadding="0" cellspacing="0">' . "r\n";
  46. echo '<tr>' . "r\n";
  47. echo '<td class="td_product_db"><a href="product_' . $product_ID . '.html">' . $mark . ' ' . $name . '</a></td>' . "r\n";
  48. echo '<td class="td_product_dc">' . $price . ' zł</td>' . "r\n";
  49. echo '<td class="td_product_dd"><a href="shop_' . $_SESSION['customer_ID'] . '_' . $product_ID . '_add.html"><b>+</b></a>&nbsp;<a href="shop_' . $_SESSION['customer_ID'] . '_' . $product_ID . '_remove.html"><b>-</b></a>&nbsp;&nbsp;
  50. <input name="how_many_' . $product_ID . '" size="1" type="text" disabled value="' . $_SESSION['how_many'] . '" />&nbsp;&nbsp;<a href="shop_' . $product_ID . '_delete.html"><span class="font_underline">U</span>suń</a></td>' . "r\n";
  51. echo '<td class="td_product_de">'; printf("%.2f", $price*$_____TO_____DO_____); echo ' zł</td>' . "r\n";
  52. ... // koncowki tabel
  53. ...?>

Sek w tym, ze mecze sie juz 3. godz. i nic nie moge zdzialac. Probowalem polowe funkcji z manuala->array i to samo. Unset nie chce sie sluchac. A musze koniecznie usunac ze zmiennej $values, bo tam mam konkretnie wybrany produkt. Jak usuwalem z $array (czyli wszystko) to lecialo jak popadnie, a nie konkretnie to, co mialo byc usuniete.

Prosze o pomoc.

Naprawde nikt nie wiem? :-(
nevt
Coś słabo wałkowałeś manual...

Sprawdź funkcje array_shift( ... ) - usuwa element z początku tablicy,
oraz array_unshift( ... ) - dodaje element na początek tablicy.

Powodzenia.
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.