Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Checkbox w php
Forum PHP.pl > Forum > PHP
proxy
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?
Tarcil
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
proxy
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 ]
Tarcil
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
john_doe
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;" />
bim2
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
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.