Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: odtwarzanie stanu pola checkbox z mysql
Forum PHP.pl > Forum > PHP
jaco1410
Cześć,

próbuję pobrać stan pola formularza checkbox do edycji, niestety nie mogę sobie z tym poradzić, wyświetla mi puste okienko, przy zapisywaniu
formularza posługuję się tym wycinkiem kodu:

<td width=300><input type=checkbox name=pole_5 value=1 > <?php echo $row['pole_5']; ?></td><td></td> </tr>


natomiast tym kodem próbuję wyciągnąć/wyświetlić stan checkboksa z bazy .... czyli jak był zaznaczony żeby był zaznaczony

<?php
mysql_connect($url,$login,$pass);
mysql_select_db($baza);
$zapytanie = "SELECT * FROM szkolenia ORDER BY id DESC";
$wynik = mysql_query($zapytanie);

$i=1;
while ($rekord = mysql_fetch_array($wynik)) {
echo '
<td bgColor=#FFFFFF width=5% align=center><input type=checkbox name='.$rekord['pole_5'].' value='.$rekord['pole_5'].' ></td>
';

$i++;
}
?>

pozdrawiam,
tehaha
1. używaj bbcode
2. bez sensu to zrobiłeś, bo tym kodem wyświetlasz tylko te checkboxy, które zostały wcześniej wybrane i zapisane do bazy, a przecież chcesz wyświetlać wszystkie, i tylko zaznaczać te, które zostały wybrane, więc odbierając dane z bazy, umieść wyniki w tablicy, a potem funkcją in_array() sprawdzaj czy checkbox ma być zaznaczony czy nie
  1. <?php
  2. $check_values = array('pies', 'kot');
  3. ?>
  4. <input type="checkbox" value="pies" name="animals[]" <?php in_array('pies', $check_values) ? $c = 'checked="checked"' : $c = ''; echo $c; ?> />
  5. <input type="checkbox" value="kot" name="animals[]" <?php in_array('kot', $check_values) ? $c = 'checked="checked"' : $c = ''; echo $c; ?> />
  6. <input type="checkbox" value="mysz" name="animals[]" <?php in_array('mysz', $check_values) ? $c = 'checked="checked"' : $c = ''; echo $c; ?> />
_olo_1984
dodaj sobie coś takiego jak
  1. //... obrazowo
  2. if($rekord['pole_5'] == 1)
  3. {
  4. echo '<input type=checkbox name='.$rekord['pole_5'].' value='.$rekord['pole_5'].' checked="checked">';
  5. }
  6. else
  7. {
  8. echo '<input type=checkbox name='.$rekord['pole_5'].' value='.$rekord['pole_5'].' >';
  9. }
  10. //... lub ternariusz
  11. echo '<input type=checkbox name='.$rekord['pole_5'].' value='.$rekord['pole_5'].' '.(($rekord['pole_5'] == 1) ? print 'checked="checked"' : print '').'>'; // z palca ...

w bazie, gdzie masz pole od tego checkboxa, dałbym typ np. enum('0','1') default 0, i w tedy nie musisz pobierać danych do value, tylko przypisujesz mu value=1. Jeżeli nie zazaczony to automatycznie w bazie doda 0, jak zaznaczy to idzie wartość 1.
tehaha
@_olo_1984 ale Twoje rozwiązanie dotyczy sytuacji gdzie bazę zaprojektujemy jak arkusz excell, że jedno pole to jedna kolumna, a przecież tabela powinna zawierać powiązanie użytkownik -> wybrane checkboxy
magu112
no musisz mieć w bazie danych pole z wartością 1/0 która będzie wskazywała czy pole zostało zaznaczone czy nie...

  1. function checked($checked,$name)
  2. {
  3. if($checked == 1) echo '<input type=checkbox name='.$name.' value='.$name.' checked="checked">';
  4. else echo '<input type=checkbox name='.$name.' value='.$name.' >';
  5. }
  6.  
  7. $i=0;
  8. while ($rekord = mysql_fetch_array($wynik)) {
  9. $i++;
  10. checked($rekord['checked'],$rekord['name']);
  11. }
jaco1410
Dziękuje wszystkim za pomoc,
ostatecznie kod wygląda tak i działa bez zarzutu: pokazuje stan chceckboxa i po naciśnięciu obok przycisku włącz lub udostępnij zmienia wartości w MySQL jak i stan checkboxa.

może się komuś kiedyś przyda...

pozdrawiam.

typ pola w tabeli mysql:
"pole_5 ENUM ('no','yes') DEFAULT 'no', ".

  1. <?php
  2. $i=1;
  3. while ($rekord = mysql_fetch_array($wynik)) {
  4. if($rekord['pole_5'] == yes) {
  5. echo '<form name=form8 method=post action=x.php?akcja=UPDATE_BRAKDOSTEPU_SZKOLENIA&id='.$rekord['id'].'>';
  6. echo '<td bgColor=#FFFFFF width=10% align=center><input type=checkbox name='.$rekord['pole_5'].' value=yes checked="checked">
  7. <input type="submit" name="Submit" value="Wylacz"></form></td></form>'; }
  8. else {
  9. echo '<form name=form8 method=post action=x.php?akcja=UPDATE_UDOSTEPNIJ_SZKOLENIA&id='.$rekord['id'].'>';
  10. echo '<td bgColor=#FFFFFF width=10% align=center><input type=checkbox name='.$rekord['pole_5'].' value=no>
  11. <input type="submit" name="Submit" value="Udostepnij"></form></td></form>'; }
  12. $i++;}
  13. ?>


plik x.php

  1. <?php switch($akcja) {
  2. case('UPDATE_BRAKDOSTEPU_SZKOLENIA'):
  3. $zapytanie="UPDATE szkolenia SET pole_5='no' WHERE id=$id";
  4. $wynik = mysql_query($zapytanie);
  5. break;
  6. case('UPDATE_UDOSTEPNIJ_SZKOLENIA'):
  7. $zapytanie="UPDATE szkolenia SET pole_5='yes' WHERE id=$id";
  8. $wynik = mysql_query($zapytanie);
  9. break;
  10. } ?>
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.