Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Usuwanie wielu elementów tablicy
Forum PHP.pl > Forum > Przedszkole
tomilipin
Witam,
męczę się z tym już dość długo i nic nie mogę wymyśleć sad.gif Dlatego właśnie proszę Was o pomoc w sprawie takiej:

mam w tablicy kilka elementów i muszę usunąć np. dwa, więc robię tak:
  1. <?php
  2. $tablica=array('0','1','2','3','4');
  3. unset ($tablica[2]);
  4. unset ($tablica[3]);
  5. ?>
No i mam usunięty element 2 i 3, czyli w porządku. Problem jest taki, że tablica będzie miała więcej elementów a numerki elementów do usunięcia będą przesyłane przez $_POST. Co jeśli zechcę usunąć 80 elementów na raz?

Dla usunięcia jednego elementu już zrobiłem skrypt - wszystkie elementy wypisuję przez funkcję ECHO, przy każdym jest HTMLowy guziczek typu radio o nazwie "id" i buttonik submit smile.gif Skrypt wtedy usuwa tak:
  1. <?php
  2. $tablica=array('0','1','2','3','4');
  3. unset ($tablica[$_POST['id']]);
  4. ?>
Problem jest taki, że przy wielu elementach chciałbym usuwać więcej niż jedną pozycję na raz, a więc chcę zastosować checkboxy zamiast radio. Nasuwa się teraz kolejny problem: nazwa... Nie jestem zbyt zaawansowany, ale porwałem się na phpBB, zajrzałem w moduł dla moderatora (pokazuje kilkanaście elementów, można je zaznaczać checkboxami a potem usunąć - a więc coś o co mi tu chodzi biggrin.gif) Ale nie za bardzo rozumiem kod tego modułu... Wiem jedynie, że każdy element ma checkboxa o identycznej nazwie ale różniący się wartością:
  1. <input type="checkbox" name="topic_id_list[]" value="1503" />
  2. <input type="checkbox" name="topic_id_list[]" value="1496" />
i w tym momencie zupełnie głupieję, bo nie mam pojęcia jak to może działać...

Dlaczego zmienna $topic_id_list[] nie przyjmuje ostatniej wartości?
Kwadratowe nawiasy pozwalają mi sądzić że $topic_id_list to tablica, tylko jak ona pobiera różne wartości z jednej zmiennej?! I jak to zrobić, aby mieć te wartości poukładane tak:
  1. <?php
  2. topic_id_list[0]=&#092;"5\"; //usuń element 5
  3. topic_id_list[1]=&#092;"30\"; //usuń element 30
  4. // i jeszcze kilkanaście takich
  5. ?>
Powiedzcie mi to i problem będzie rozwiązany, bo jeśli zapiszę elementy do usunięcia w tablicy to potem zliczę ilość tych elementów przez COUNT, w pętli FOR usunę, dzięki UNSET, to co mnie interesuje a pętla wykona się tyle razy, ile poda mi COUNT. Dobrze myślę?

Bardzo proszę o pomoc...
crash
  1. <?php
  2. $tablica = array(1, 2, 3, 4);
  3.  
  4. $lista_do_usuniecia = array(2, 4); usunięcie elementów 2 i 4 z $tablica
  5.  
  6. foreach($lista_do_usuniecia as $key => $val)
  7. {
  8.  unset($tablica[$val]);
  9. }
  10. ?>

Coś takiego nie działa?
tomilipin
Ale nie o to chodzi...
Napisałem już, że z usuwaniem kilku elementów poradzę sobie dzięki pętli FOR.
Ja tylko nie wiem ile będzie tych elementów do usunięcia. Wiem jak je policzyć, wiem jak je usunąć, ale nie wiem jak je zapisać do zmiennej tongue.gif Bo jak będę miał 100 elementów, wyświetlę je i przy każdym będzie checkbox to przecież nie chcę mieć 100 zmiennych tylko 100 elementów jakiejś tablicy, której ilość elementów potem zliczę i odpowiednie wartości usunę z innej tablicy smile.gif
crash
No coś tam napisałeś już o HTML'owej tablicy to myślałem, że to skumałeś... W formularzu masz:
  1. <input type="checkbox" name="do_usuniecia[]" value="2"/>
  2. <input type="checkbox" name="do_usuniecia[]" value="4"/>
  3. ...

I po przesłaniu masz tablicę w $_POST['do_usuniecia']...
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.