![]() |
![]() ![]() |
![]() |
![]()
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 ? |
|
|
![]()
Post
#21
|
|
Grupa: Zarejestrowani Postów: 252 Pomógł: 2 Dołączył: 4.12.2004 Skąd: Skierniewice Ostrzeżenie: (10%) ![]() ![]() |
w tym celu że jeżeli by nie było sprawdzania czy jest wciśnięty to skrypt byłby wykonywany za każdym wywołaniem strony niezależnie czy ktoś wcisnął submit czy nie
-------------------- |
|
|
![]()
Post
#22
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
To zależy od budowy aplikacji. Rzadko kto stosuje fizyczne odwzorowanie w postaci: dodaj.php, usun.php. Sprawdzenie zatem staje się koniecznoś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. |
|
|
![]()
Post
#23
|
|
Grupa: Zarejestrowani Postów: 269 Pomógł: 0 Dołączył: 6.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
value odpowiada za tekst na przycisku dla typu"Checkbox" lub "radio" okresla wartosc przesylana do serwera jezeli pole jest zaznaczone Co do II pytania skrypt moze byc wywolany prze nipowolana sosbe bez opcji np usun.php?page=usun by temu zap[obiec asekurujemy sie w skrypcie i nie dopuszczamy by cokolwiek robic gdy nie ma wcisnietego przycisku submit z opcja usun Ten post edytował free 8.08.2006, 12:52:30 |
|
|
-Gość- |
![]()
Post
#24
|
Goście ![]() |
Cytat 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'],' ![]() Oprę się na prostym przykładzie. Załóżmy, że wstawiasz do bazy obrazek. W formularzu robisz pole <input type='file' name='obrazek'> i np. chcesz określić z której strony ma się ona znajdować (chodzi mi tu o wartość align). Wtedy dodajesz do formularza 2 kolejne pole radio <input type='radio' name='strona' value='left'> <input type='radio' name='strona' value='right'> Jeśli w zapytaniu zrobisz tak
do bazy zostanie dopisane nie name pole input tylko jego value, czyli left lub right w zależności od tego, które pole radio zaznaczysz. Na pytanie o sprawdzenie już odpowiedział artur81. Ale też oprę się na przykładzie. Do formularza możesz dodać np. 3 pola <input type='submit' name='modyfikacja' value='dodaj'> <input type='submit' name='modyfikacja' value='usuń'> <input type='submit' name='modyfikacja' value='edytuj'> wtedy po wysłaniu formularza sprawdzasz który przycisk został pacnięty
|
|
|
![]()
Post
#25
|
|
![]() Grupa: Zarejestrowani Postów: 114 Pomógł: 0 Dołączył: 6.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
ten post wyżej to ja
![]() -------------------- Początkujący
|
|
|
![]()
Post
#26
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 1.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
...właśnie tak patrzę, że raz Gosc a raz Kokos
![]() Wieczorem wszystko przeanalizuje bo wytlumaczone terazz mam elegancko! ![]() |
|
|
![]()
Post
#27
|
|
![]() Grupa: Zarejestrowani Postów: 256 Pomógł: 0 Dołączył: 19.07.2006 Skąd: Ostrów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
Ja postanowiłem sobie to sprawdzic i takze wykorzystac i wszystko było by pieknie ale ...
Przy wyseitlaniu z bazy liczy ile jest wierszy ale wyswietla tylko ostatni wpis tyle razy ile jest wpisów tzn powtarza jeden wpis, po drugie jak zaznaczam kasowanie dwóch teoretycznie takich samych wpisów to kasuje jeden al jest to spowodowane tym ze sa takie same ![]() ![]() ![]() ![]() ![]() ![]() EDIT: W tym pierwszym pliku dałem $wiersz = mysql_fetch_array($wynik); zamiast cos tam ![]() bo wyskakiwało mi Fatal error: Call to a member function on a non-object jak mialem tak jak bylo w orginale ![]() Ten post edytował dawhol 8.08.2006, 21:05:22 -------------------- |
|
|
![]()
Post
#28
|
|
![]() Grupa: Zarejestrowani Postów: 114 Pomógł: 0 Dołączył: 6.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Cytat pliku usun nie dzialalo mi $usun = $db => czy jakos tak Nie działało bo w zmiennej $db powinno się znajdować coś takiego :-)
W PHP5 znajduje się nowa biblioteka łączenia się z serverem MySQL. Ta biblioteka nazywa sie mysqli i mozna jej używac z serverem MySQL w wersji 4 i wyzej. 2. Taki zapis
równie dobrze można zapisać w ten sposób
Tyle, że ten wyżej działa w wersji php5 o ile się nie myle ![]() -------------------- Początkujący
|
|
|
![]()
Post
#29
|
|
![]() Grupa: Zarejestrowani Postów: 256 Pomógł: 0 Dołączył: 19.07.2006 Skąd: Ostrów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
pierwszy zapis mi nie działa drugi natomiast tak ale nie wprowadza to zadnej róznicy wyswietla mi x razy ten sam wiersz z bazy zamiast x róznych ;/
x - liczba wersów w bazie Ten post edytował dawhol 8.08.2006, 22:11:49 -------------------- |
|
|
![]()
Post
#30
|
|
![]() Grupa: Zarejestrowani Postów: 114 Pomógł: 0 Dołączył: 6.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem dlaczego Ci nie działa. Przed chwilką też sprawdziłem skrypt w takiej wersji i wszystko działa tak jak trzeba.
plik.php
usun.php
Ten post edytował =kokos= 8.08.2006, 22:42:09 -------------------- Początkujący
|
|
|
![]()
Post
#31
|
|
![]() Grupa: Zarejestrowani Postów: 256 Pomógł: 0 Dołączył: 19.07.2006 Skąd: Ostrów Wielkopolski Ostrzeżenie: (0%) ![]() ![]() |
moj blad sorka przestawiłem jedna zmienana po za funkcje for
![]() ![]() ![]() -------------------- |
|
|
![]()
Post
#32
|
|
Grupa: Zarejestrowani Postów: 36 Pomógł: 0 Dołączył: 1.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Hej wszystkim,
jako, że jestem autorem tego posta - żeby nie zaśmiecać forum nowymi - napiszę tutaj swój kolejny problem, otóż nie działa mi takie banalne dodawanie do bazy. Nie robiłem wcześniej tego tak jak tutaj, tzn. u mnie zawsze po pacnięciu submita wywoływała się inna strone ze skryptem który dodawał do bazy trkord. Tu chciałem aby wsztstko się odbywało w 1 pliku. Powiedzcie co zchrzaniłem...
Halo Panowie... pomożecie? Ten post edytował mysql_php 14.08.2006, 08:48:34 |
|
|
![]()
Post
#33
|
|
![]() Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Jaki dostajesz komunikat?
Bo $_post wygląda podejrzanie... Powinno być chyba $_POST Pozdrawiam. -------------------- 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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 21:00 |