Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Checkbox w php
proxy
post 23.01.2009, 12:46:16
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 6.01.2009

Ostrzeżenie: (0%)
-----


Witam, mam problem z checkboxami w php. Kompletnie nie wiem jak się za to zabrać.

Mam pętle while, która wyciąga rekordy z bazy danych. Każdy rekord ma swoje ID.

Rekordy przez pętle są zapisywane jako kolejne wiersze w tablece:


  1. <?php
  2. <form method="post">
  3. ?>


  1. <?php
  2. <td>
  3. <input type="checkbox" name="'.$rekord['ID'].'"">
  4. </td>
  5. ?>


Teraz chciałbym aby zaznaczone rekordy można było usuwać

  1. <?php
  2. <select size="1">
  3. <option name="usun">Usun rekordy</option>
  4. </select>
  5. <input type="submit" value="Wykonaj">
  6. </form>
  7. ?>



Rekordy są zapisywane w tablicy $_POST i przykładowo mam taki zrzut tablicy:

  1. <?php
  2. Array ( [1151] => on [1029] => on )
  3. ?>


Czy ktoś mi może pomoc z ułożeniem do tego opcji usuwania ZAZNACZONYCH rekordów z bazy?

Ten post edytował proxy 23.01.2009, 12:48:03
Go to the top of the page
+Quote Post
Tarcil
post 23.01.2009, 12:50:29
Post #2





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 24.11.2006

Ostrzeżenie: (0%)
-----


Witaj

Ja bym wypróbował coś takeigo:
  1. <?php
  2. foreach($_POST as $key => $value)
  3. {
  4. if(is_numeric($key) && $value == 'on')
  5. {
  6. mysql_query("DELETE FROM rekordy WHERE id=$key");
  7. }
  8. }
  9. ?>


Pozdrawiam
Tarcil

Ten post edytował Tarcil 23.01.2009, 12:51:34
Go to the top of the page
+Quote Post
proxy
post 23.01.2009, 12:57:44
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 6.01.2009

Ostrzeżenie: (0%)
-----


Ogromne dzięki, mam jeszcze jedno pytanie. Jak mogę rozróżnić czy wybrałem z pola odpowiednią wartość?



  1. <?php
  2. <select size="1">
  3. <option name="usun_rekordy">Usu&#324;</option>
  4. <option value="przenies">Przenie&#347; gdzieś tam</option>
  5. </select>
  6. ?>


Chcę rozróżnić czy wybrałem "usun_rekordy" czy "przenies". tongue.gif

// edit //
Aha potrzebowałbym jeszcze wiedzieć jak zrobić opcję [ Zaznacz wszystko ] [ Odznacz wszystko ]

Ten post edytował proxy 23.01.2009, 13:01:30
Go to the top of the page
+Quote Post
Tarcil
post 23.01.2009, 13:14:35
Post #4





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 24.11.2006

Ostrzeżenie: (0%)
-----


Witaj

Żeby sprawdzić, co wybrałeś musisz najpierw nadać selectowi nazwę, czyli:
  1. <select size="1" name="operation">


Potem w kodzie sprawdzasz:
  1. <?php
  2. switch($_POST['operation'])
  3. {
  4. case 'przenies':
  5. //kod odpowiedzialny za przenoszenie
  6. break;
  7. case 'usun_rekordy':
  8. //kod odpowiedzialny za usuwanie rekordów
  9. break;
  10. }
  11. ?>


Co do opcji 'zaznacz wszysktie', odznacz wszystkie to chyba javascript (cienki jestem z tego jak polsilver). Ja bym kombinował coś na zasadzie <a href="?" onClick="java script:zaznacz()">zaznacz wszysteki</a>, a do tego funkcję zaznacz(), która w pętli po numerach rekordów będzie robiła coś takiego: this.form.3422.checked = "checked" (3422 to nazwa pola checkbox). Kiedyś coś podobnego gdzieś widziałem, ale u mnie to nie działało, nie wiem gdzie tu jest błąd.

Pozdrawiam
tarcil

Ten post edytował Tarcil 23.01.2009, 13:15:46
Go to the top of the page
+Quote Post
john_doe
post 23.01.2009, 13:18:23
Post #5





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

Ostrzeżenie: (0%)
-----


witam ja zaznacz/odznacz wszystko zrobiłbym tak:

najpierw funkcja w JS
  1. var checkboxs_checked = false;
  2.  
  3. function zaznacz (form)
  4. {
  5. var checkboxy = document.getElementById(form).getElementsByTagName('input');
  6. for(i = 0; i < checkboxy.length; i++)
  7. {
  8. if (checkboxy[i].type == 'checkbox')
  9. {
  10. checkboxy[i].checked = checkboxs_checked ? false : true;
  11. }
  12. }
  13.  
  14. checkboxs_checked = checkboxs_checked ? false : true;
  15. }

potem jak masz formularz daj takiego cos

  1. <form action = "delete.php" method = "POST" id="checkboxy">


i jakaś grafika w która klikasz by zaznaczyc wszysstkie Twoje checkboxy smile.gif
  1. <input type="image" src="obrazek.gif" title="Zaznacz / Odznacz" onClick="zaznacz('checkboxy'); return false;" />


Ten post edytował john_doe 23.01.2009, 13:19:41
Go to the top of the page
+Quote Post
bim2
post 23.01.2009, 15:58:41
Post #6





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


Co do usuwania
  1. <?php
  2. foreach($_POST['checkboxs'] AS $key=>$value)
  3. {
  4. $where[] = $key;
  5. }
  6. mysql_query('DELETE FROM table WHERE pole IN('.implode($where, ',').')');
  7. ?>

Tak będzie wydajniej smile.gif


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 20:02