Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Usunięcie elementu zaznaczonego checboxem
Forum PHP.pl > Forum > Przedszkole
stecosik1
  1. echo '<label>';
  2. echo '<input type="checkbox" name="kod"/>';
  3. echo 'jakis element moze byc liczba lub string'<br />';
  4. echo '</label>';


  1. <input type="submit" name="kod" value="usuń wybrane">


Hej czy isntnieje jakaś funkcja usuwająca poprzez zaznaczenie checkboxem pola i przycisnieciem submita?

trueblue
Usuwając skąd? Wyłączająca widoczność, usuwająca z drzewa DOM, usuwająca z bazy danych?
Niepokonany13
W pliku możesz przechowywać dane które potem chcesz usunąć a żeby znalazły się na stronie to zrób include_once(„Nazwa pliku”);
Robisz Ifa i sprawdzasz czy ustawiony jest checkbox jeśli tak to usuwasz lub czyścisz plik
gitbejbe
Cytat(Niepokonany13 @ 8.07.2018, 00:12:20 ) *
W pliku możesz przechowywać dane które potem chcesz usunąć a żeby znalazły się na stronie to zrób include_once(„Nazwa pliku”);
Robisz Ifa i sprawdzasz czy ustawiony jest checkbox jeśli tak to usuwasz lub czyścisz plik


co k... ?!
stecosik1
obrazek odnosnie ptaszkowania

Chodzi mi o to że jak zaptaszkuje coś klikne usun wybrane to mi usuwa i sie już nie pojawia da się takie cos?

  1. echo '<label>';
  2. echo '<input type="checkbox" name="pusty_koszyk" id="kod"/>';
  3. echo '"jakiś text"<br />';
  4. echo '</label>';


  1. <input type="submit" name="kod" value="usuń wybrane">
nospor
Nadal nie odpowiedziales na pytanie ktore zadal trueblue. Czego nie rozumiesz w tym pytaniu?
stecosik1
najlepiej usuwając widoczność
nospor
facepalmxd.gif
Widocznosc czego?questionmark.gif

Chcesz tylko i wylacznie usunac checkoby by nie byly widoczne w danej chwili na stronie, czy moze jednak chcesz usunac rzeczy, ktore sa powiazane z tymi checkboxami? Np. rekordy w bazie?
stecosik1
mam nadzieje ze zrozumiesz, czyli jak osoba zaznaczy ptaszkiem ten kwadracik a obok niego pisze text, to chce aby ten kwadracik z ptaszkiem zniknął i ten text obok
nospor
http://jsfiddle.net/381qs7wm/4/
trueblue
https://jsfiddle.net/78re2wLb/7/

Najlepiej jakbyś jednak sprecyzował co rozumiesz pod pojęciem znikania.
stecosik1
<script type="text/javascript">
jQuery(function(){

jQuery("#usun").click(function(){
jQuery("input:checked").parent().hide();
});
});
</script>

  1. <?php
  2.  
  3.  
  4. foreach ($_SESSION['koszyk'] as $key => $value)
  5. {
  6. echo '<label>';
  7. echo '<input type="checkbox" name="kod"/>';
  8. echo '"'.$value.'"<br />';
  9. echo '</label>';
  10. }
  11.  
  12.  
  13. ?>
  14. <input type="submit" name="kod" id="usun" value="usuń wybrane">


Znaczy jak zniknie to już nie ma powrotu do tego co było wczesniej. To co mi podaliście to musze zrobić dla następującego kodu, próbowałem myślałem że zadziała, podpowiedzcie czy to do tego się nadaje czy nie?
nospor
Naprawde tak ciezko jest ci napisac:
"Chodzi mi o usuniecie powiazanych rekordow z sesji"

Naprawde taki problem tak sformulowac zadanie? Naprawde nie rozumiesz, ze jak usuniesz cos z sesji, to lista ktora jest generowana na podstawie sesji, zostanie wyczyszczona automatycznie podczas nastepnego generowania?
stecosik1
sorki, bo ja mam taką myśl zrobić taki mini koszyk na produkty, no i cyk user dodaje item do koszyka, no ale co zrobić jak doda 5 itemów a 2 z nich uzna że jednak nie chce i pasuje jakoś te itemy zlikwidować za pomocą przycisku, nie mam kompletnie pojecia jak się za to zabrać sad.gif proszę pomóżcie, będę bardzo wdzięczny
nospor
My wiemy co chcesz zrobic. Ja ci tylko mowie, bys sie kurde w koncu skupil. Tyle czasu na forum jestes i nie potrafisz opisac problemu... nawet jak sie cieby konkretnie pytamy i podajemy rozne przyklady a ty dalej nie potrafisz sam napisac o co ci chodzi.... Dopiero jak podales kod to bylo widac co masz na mysli. Ogarnij sie w koncu. Proste pytanie:
"jak usunac wpisy z sesji"
A ty zamiast tak zapytac to kombimujesz jak kon pod gorke
stecosik1
naprawde sorki, ale czy jest jeszcze opcja dostania pomocy, naprowadzenia czegokolwiek od was? bo widze że was tylko ze złościłem... sad.gif
nospor
jako value dla checbox ustawiasz KEY z sesji. Potem normalnie wysylasz formularz i w tablicy $_POST masz KEY wybranych checkboxow. Na tej podstawie usuwasz dane z sesji.
Jak name dla checkbox daj np: KEY[]
stecosik1
  1. <form action="" method="post">
  2. <?php
  3.  
  4. foreach ($_SESSION['koszyk'] as $key => $value)
  5. {
  6. echo '<label>';
  7. echo '<input type="checkbox" value="key" name="key[]"/>';
  8. echo '"'.$value.'"<br />';
  9. echo '</label>';
  10. }
  11.  
  12. ?>
  13. <input type="submit" name="kod" value="usuń wybrane">
  14. </form>


Coś takiego?
nospor
Jako VALUE miales podac wartosc $key anie slowo key...
stecosik1
Cytat(nospor @ 9.07.2018, 11:33:43 ) *
Potem normalnie wysylasz formularz i w tablicy $_POST masz KEY wybranych checkboxow. Na tej podstawie usuwasz dane z sesji.


No to name i value miałbym, tylko nadal nie usuwa, nie dokońca rozumiem o co ci chodziło w tym co zacytowałem. Zapewne jeszcze mi czegoś brakuje, tylko czego, jak się za to zabrać?
nospor
Jak juz ustawisz prawidlowe VALUE jak ci pisalem, nadal nie widze bys poprawil, to wowczas po wyslaniu forma w tablicy $_POST bedziesz mial dane z zaznaczponych checkboxow.
Zrob sobie
print_r($_POST);
a zobaczysz na wlasne oczy. No to juz powinienies umiec robic zwykle PRINT_R
stecosik1
Array ( [key] => Array ( [0] => $key ) [kod] => usuń wybrane )

Hmm.. takie coś powstało, prawidłowo? Jeśli tak to musze to jakoś usunąć funkcją może unset?
nospor
Dokladnie. unset masz uzyc by usunac zaznaczone rzeczy z sesji

No ale masz nadal zle... miales wstawic wartosc $key a nie tekst $key... Ile razy mozna to mowic?
stecosik1
echo '<input type="checkbox" value="'.$key.'" name="key[]"/>';

Tak prawda?? biggrin.gif
nospor
Tak, teraz powinno byc dobrze.
stecosik1
No w print_r($_POST); pokazuje mi tą wartość (wartości) które zaznaczyłem ale pytanie ta funkcja unset, jak ją tu zastosować? Jakieś rady, pomoc, aby to już zakończyć. Bardzo cię proszę
nospor
Poniewaz $_POST['key'] zawiera tablice zaznaczonych checkbox to teraz robisz FOREACH po $_POST['key'] i dla kazdego elementu robisz unset na $_SESSION
stecosik1
  1. <form action="" method="post">
  2. <?php
  3.  
  4. foreach ($_SESSION['koszyk'] as $key => $value)
  5. {
  6. echo '<label>';
  7. echo '<input type="checkbox" value="'.$key.'" name="key[]"/>';
  8. echo '"'.$value.'"<br />';
  9. echo '</label>';
  10. }
  11.  
  12. foreach ($_POST['key'] as $keyToRemove) ------- to jest linia 26!!!!!!!!!
  13. {
  14. unset($_SESSION['koszyk'][$keyToRemove]);
  15. }
  16.  
  17. print_r($_POST);
  18. ?>
  19. <input type="submit" name="key[]" value="usuń wybrane">
  20. </form>


Zrobiłem to tak i wygląda na to że działa tylko zanim cokolwiek usunę, to wchodząc do koszyka, wyskakują mi takie błedy:

Notice: Undefined index: key in C:\xamppp\htdocs\test\koszyk.php on line 26

Warning: Invalid argument supplied for foreach() in C:\xamppp\htdocs\test\koszyk.php on line 26
nospor
No bo nowy kod usuwajacy masz odpalac dopiero po wyslaniu forma a nie za kazdym razem.

Zadanie dla ciebie: pomysl jak sprawdzic czy form byl wyslalny czy nie

No i kod usuwajacy masz odpalac przed generowanie listy z sesji a nie po
stecosik1
  1. <form action="" method="post">
  2. <?php
  3. if (isset($_POST['key']))
  4. {
  5. foreach ($_POST['key'] as $keyToRemove)
  6. {
  7. unset($_SESSION['koszyk'][$keyToRemove]);
  8. }
  9. }
  10.  
  11.  
  12.  
  13. foreach ($_SESSION['koszyk'] as $key => $value)
  14. {
  15. echo '<label>';
  16. echo '<input type="checkbox" value="'.$key.'" name="key[]"/>';
  17. echo '"'.$value.'"<br />';
  18. echo '</label>';
  19. }
  20.  
  21.  
  22. print_r($_POST);
  23. ?>
  24. <input type="submit" name="key[]" value="usuń wybrane">


Zrobiłem to tak, prawidłowo?? Już błędy nie wyskakują biggrin.gif
nospor
Dobrze. Moze bede jeszcze z ciebie ludzie smile.gif
stecosik1
Dziekuję za serdeczną pomoc
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.