Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Usuwanie danych z tablicy
Forum PHP.pl > Forum > Przedszkole
northwest
Witam serdecznie.
Mam takie tworzenie tablicy (kod uproszczony):
  1. <?php
  2. if(!isset($_SESSION['tablica']))    //jezeli sesja po raz pierwszy otwarta
  3.    {
  4.        $_SESSION['tablica']=array();  
  5.    }
  6.    if(!isset($_SESSION['id']))
  7.    {
  8.        $_SESSION['id']=0;
  9.    }
  10.    if(isset($_GET['i']))
  11.    {
  12.        $_SESSION['tablica'][$_SESSION['id']]=$_GET['i']."|".$_GET['ilosc'];
  13.        $_SESSION['id']++;
  14.    }
  15. ?>


$_GET[id] = id produktu
$_GET[ilosc] = ilość produktów

Chciałbym teraz jakoś usuwać rekordy z tej tablicy...
Np. wszystkie które mają $_GET[id] = 1...

Wie ktoś może jak to zrobić?


Z góry dzięki za pomoc,
pozdrawiam Northwest
Skie
unset() + in_array()
northwest
qurcze, nie kumam za bardzo tego ... :/
Mógłbyś mi podać jakiś przykład tego usuwania?
Fifi209
Cytat(northwest @ 3.08.2009, 16:22:50 ) *
qurcze, nie kumam za bardzo tego ... :/
Mógłbyś mi podać jakiś przykład tego usuwania?


A czytałeś co kolega dał?

unset do usuwania danych

A in_array do sprawdzenia czy dane są w tablicy.
northwest
coś takiego próbowałem:
function clean_get(&$item, $key, $k2check, $v2clean) {
if ($key == $k2check && $item == $v2clean) unset($item);
}

ale nie za bardzo chciało mi to działać sad.gif
Pawel_W
jakbyś dał to w tag php, to zobaczyłbyś że przed $ masz &
  1. <?php
  2. function clean_get(&$item, $key, $k2check, $v2clean) {
  3. if ($key == $k2check && $item == $v2clean) unset($item);
  4. }
  5. ?>

poprawnie:
  1. <?php
  2. function clean_get($item, $key, $k2check, $v2clean) {
  3. if ($key == $k2check && $item == $v2clean) unset($item);
  4. }
  5. ?>
northwest
fakt... ale nie pomogło sad.gif
Warning: array_walk() expects at most 3 parameters, 4 given in /var/www/dodajzamowienie.php
Pawel_W
sorry, ale ja tu nie widze tej funkcji..
northwest
ojj fakt, przepraszam
  1. <?php
  2. function clean_get($$item, $key, $k2check, $v2clean) {
  3. if ($key == $k2check && $item == $v2clean) unset($item);
  4. }
  5.  
  6. array_walk($_GET,'clean_get', 'id', 1);
  7. ?>


kombinowałem coś takiego... ale bez rezultatu sad.gif
Pawel_W
jednak mój błąd, przed $ powinien być &
northwest
działą Ci to? bo mi nie chce :/

próbowałem też czymś takim:
  1. <?php
  2. for($i = 0; $i<$_SESSION['id']; $i ++){
  3.  
  4.  if($_SESSION['tablica'][$i]['id'] == $_GET['id']){
  5.  
  6.    unset ($_SESSION['tablica'][$i]['id']);
  7.  
  8.    unset ($_SESSION['tablica'][$i]['ilosc']);
  9.  
  10.    break;
  11.  
  12.  }
  13. }
  14. ?>


ale niestety nie działa :/ qurcze,nooooo :/
Fifi209
Zrób var_dump tej tablicy, z której chcesz usuwać... i wklej tutaj.
northwest
  1. <?php
  2. array(5) { [0]=>  string(4) "10|1" [1]=>  string(4) "10|1" [2]=>  string(3) "2|3" [3]=>  string(3) "3|7" [4]=>  string(3) "3|7" }
  3. ?>


Coś takiego mam..
Fifi209
Cytat(northwest @ 4.08.2009, 06:23:15 ) *
  1. <?php
  2. array(5) { [0]=>  string(4) "10|1" [1]=>  string(4) "10|1" [2]=>  string(3) "2|3" [3]=>  string(3) "3|7" [4]=>  string(3) "3|7" }
  3. ?>


Coś takiego mam..


Twoje wypowiedzi mnie przerażają, dałeś var_dump'a ale żeby napisać dokładnie co chcesz zrobić to już nie łaska?
northwest
ajć, przepraszam :/
chciałbym na podstawie zmiennej $_GET[id] czyścić tablicę...
ta sesja to mój koszyk, i po kliknięciu linka chce wyczyścić całą tablicę na podstawie ww zmiennej...
Fifi209
Cytat(northwest @ 4.08.2009, 08:55:50 ) *
ajć, przepraszam :/
chciałbym na podstawie zmiennej $_GET[id] czyścić tablicę...
ta sesja to mój koszyk, i po kliknięciu linka chce wyczyścić całą tablicę na podstawie ww zmiennej...


Przykład co chcesz usunąć poproszę. smile.gif

np.

"Mam tablicę:
array('a', 'b', 'c');

i chciałbym usunąć b da się? "

Bo takie tłumaczenie całego problemu nie ma sensu.

P.S. Mnie interesuje gdzie to id chcesz podstawić. ;p
northwest
array(5) { [0]=> string(4) "10|1"
[1]=> string(4) "10|1"
[2]=> string(3) "2|3"
[3]=> string(3) "3|7"
[4]=> string(3) "3|7" }
w takim formacie mam dane w tablicy: $_GET['i']."|".$_GET['ilosc'] = numer id | ilość.

chciałbym usuwać po tym $_GET[i] - to jest moje id, i na tej podstawie chce usuwać z tablicy...

ps. dziękuje za cierpliwość :-)
janusz85
  1. <?php
  2. function delete($what)
  3. {
  4. foreach($_SESSION['tablica'] as $key=>$value)
  5. {
  6. $tmp = explode('|', $value);
  7. if ($tmp[0] == $what)
  8. {
  9. unset($_SESSION['tablica'][$key]);
  10. }
  11.  
  12. }
  13. }
  14. ?>


Jak nie ma literówki, to powinno hulać.
Fifi209
Moim zdaniem zapisywanie czegoś w formacie cos|cos2 jest bez sensu. Nie lepiej wrzucić to do kolejnego array'a? W dodatku odpowiednia budowa tablic ma tutaj znaczenie.
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.