![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 1.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Wykonałem skrypt php usuwania rekordów, chciałby teraz go ulepszyć i postawiłem sobie za zadanie zrobić to za pomocą pól "checkbox". Otóż chodzi mi o to, że: Mamy na stronie WWW listę rekordów z tabeli a w ostatniej kolumnie znajdują się "checkboxy" które zaznaczam jeśli chcę zaznaczyć jakiś rekord do usunięcia. Po zaznaczeniu kilku - wciskam jakiś submit i usuwam zaznaczone. Powiedzcie mi proszę jak powinien wyglągać przykładowy kod bo nie mogę nigdzie znaleźć a bardzo mi na tym zależy. Dziękuję bardzo! Pozdrawiam. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 165 Pomógł: 9 Dołączył: 9.04.2002 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 1.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
...kurcze a może znacie jakiś prostrzy przykład bo pamiętam, że kiedyś to widziałem i dodawało się oprócz checkboxa jeszcze "hidden". Ale nie jestem pewien...
|
|
|
-Gość- |
![]()
Post
#4
|
Goście ![]() |
ja to robię w ten sposób
pisałem w locie więc mogłem gdzieś popełnić jakiś błąd pozdrawiam |
|
|
-Gość- |
![]()
Post
#5
|
Goście ![]() |
Poprawka.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
A nie prosciej tak?
a potem
Ten post edytował Cysiaczek 6.08.2006, 21:20:54 -------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 108 Pomógł: 0 Dołączył: 7.05.2004 Skąd: Jelenia Góra Ostrzeżenie: (0%) ![]() ![]() |
Tylko że ten kod który podałeś nie zadziała. Musiałbyć to dać w pętli i dalej $input[$i]. Wtedy owszem ale..
EDIT: Pozatym - w obronie początkujących - nie '<?=' tylko '<?php'. Ten post edytował MagnuM 6.08.2006, 21:24:35 -------------------- ![]() |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 1.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Panowie, próbowałem stosować ten kod powyżej (ten dłuższy) i nic.
może podam Wam jak u mnie wygląda kod, podpowiedzcie mi co gdzie mam dodać bo już mi ręce powoli zaczynają opadać z sił ![]() Tak wyświetlam tabelę "filmy"
Gdzie mam wstawić ten kod ewentualnie i jaki? |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
W momencie, gdy użyjesz konstrukcji, którą podałem dostaniesz tablicę (array) indeksowaną liczbami.
Nazwa cię nie obchodzi. Ciebie interesuje tylko to, że ktoś zaznaczył jakiś checkbox. Chcesz kasowac wszystkie zaznaczone elementy - rób to po ich wartości.
-------------------- To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness; chaotic, confused, vulnerability, to inform yourself. Think for yourself. Question authority. |
|
|
-Gość- |
![]()
Post
#10
|
Goście ![]() |
Plik1
Plik usun.php
|
|
|
-Gość- |
![]()
Post
#11
|
Goście ![]() |
i w tej linijce jest błąd jeszcze:/
echo '<input type="checkbox" name="opcja'.($i+1).'" value="'.$wiersz['ID_filmu'],'">'; zamień na echo '<input type="checkbox" name="opcja'.($i+1).'" value="'.$wiersz['ID_filmu'].'">'; |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 256 Pomógł: 0 Dołączył: 19.07.2006 Skąd: Ostrów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
Pytanie do goscia nie sprawdzałem ale chwilowo niemam na to czasu, jednak wydaje mi sie ze
nie powinno sie dawac w kazdej linijce tabelki <form action ..... bo z tego co rozumiem skrypcik to tak wyjdzie ![]() ![]() ![]() ![]() Ten post edytował dawhol 7.08.2006, 07:06:52 -------------------- |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 1.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Bardzo wszystkim dziękuję za zainteresowanie się tematem
![]() Teraz coprawda siędzę w pracy i nie moge sprawdzic jak to wszystko działa ale jak wrócę to siadam i się do tego zabieram. A linijkę:
można dac przed pętlą FOR np.? Powiedzcie mi proszę czy ten kod co podał Kolega wcześniej, działa ![]() Tak z czystej ciekawosci pytam bo zanim wrocę do domu to trochje minie ![]() Może ktoś próbował? Powiedzcie mi też czym różni się wstawianie do pliku php znaczników HTMTL po
a czym po
|
|
|
-Gość- |
![]()
Post
#14
|
Goście ![]() |
Tak, <form> można dać przed pętlą, też teraz siedzę w pracy i nie mogę sprawdzić czy on działa na 100%, ale używałem tego skryptu u siebie i działał (tylko, że teraz go pisałem z pamięci więc nie daje 100% pewności) znalazłem jeszcze błąd w pliku usun.php, mianowicie powinna być przed pętlą for jedna zmienna;)
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 1.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Rozumiem, czyli wstawic tą zmienną od razu na początku, poprostu zrobic podstawienie?
Czy może po "IF" a przed "FOR"em ? |
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 114 Pomógł: 0 Dołączył: 6.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
daj ją na samym początku, przed if'em jeszcze
Ten post edytował =kokos= 7.08.2006, 13:30:28 -------------------- Początkujący
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 1.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
OK! Wczoraj sprawdziłem w domu i hula należycie
![]() Miałbym taką prośbę jeszcze, ponieważ lubię wiedziec jak dziala kod który stosuje, mógłby mi ktoś przeanalizowac dzialanie tego kodu (wiekszosc oczywiscie rozumiem, ale chodzi mi konkretnie o fragment w ktorym zaczyna sie praca z polem checkbox....) |
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 114 Pomógł: 0 Dołączył: 6.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Do pętli for wrzucasz pole checbox.
Ta linijka zmienia nazwą checboxa. Kiedy pętla wykona się przykładowo 3 razy to powstanie tak jakby formularz z trzema różnymi polami checbox. Będą one miały nazwę kolejno: opcja1, opcja2, opcja3. Później do każdego pola checbox przypisujesz nr. ID_filmu. Do pola hidden przypisujesz liczbę wszystkich filmów z tabeli i wysyłasz formularz. w pliku usun.php skracasz nazwę zmiennej $ile = $_POST['ile']. Później jest warunek (wszystko jasne) i kolejna pętla for, która już usuwa wpisy. Pętla wykonuje się tyle razy ile jest wpisów, ale usuwa tylko te zaznaczone wpisy Linijka za to odpowiadająca
Czyli, usuń z "nazwa_tabeli" wpisy gdzie id jest równe (kolejno j.w.) opcja1 (którego wartość value = 1), opcja2 (którego wartość value = 2), opcja6 (którego wartość value = 6). Do pliku usun.php z formularza wysyłane są tylko te pola checbox, ktróre są zaznaczone, reszta jest pomijana, dlatego usuwa tylko zaznaczone wpisy. Ten post edytował =kokos= 8.08.2006, 11:47:51 -------------------- Początkujący
|
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 252 Pomógł: 2 Dołączył: 4.12.2004 Skąd: Skierniewice Ostrzeżenie: (10%) ![]() ![]() |
A nie prosciej tak?
a potem
Niby dobre rozwiązanie ale co w przypadku gdy będzie miał do usunięcia 1000000 rekordów?? Tym foreach zarąbie bazę, bo będzie 1000000 zapytań. Dużo lepiej, jest zrobić to jak poniżej
wtedy będzie tylko jedno zapytanie bez znaczenie ile rekordów chce usunąć PS. usuń sobie ten backslash pomiędzy WHERE id IN( $strDel ) a " bo samoczynnie forum go dodaje -------------------- |
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 1.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Super! Dzięki za szczegółowe wytłumaczenie.
Jeszcze o coś Was pomęczę ![]() Pierwsza sprawa: Atrybuty "checkbox": Name i Value - rozumiem, że to co po "Name" wykożysywane jest później po wysłaniu formularza jako $_POST('Name') ale nie do końca wiem po co przypisuje się do atrybutu "Value" zmienną '.$wiersz['ID_filmu'],' ![]() Drugie pytanko: Po co się stosuje w skrypcie usun.php takie sprawdzenie:
To chyba sprawdza czy wciśnięto "submit" tak? Jeśli tak, to nie wiem w jakim celu. Przecież skoro wywołany został ten skrypt, to znaczy, że użytkownik już wcisnął ten przycisk, prawda ? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 04:11 |