Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]checkbox i porównywanie
Forum PHP.pl > Forum > Przedszkole
kielich
witam jak spreperowac kod który:

jesli w bazie regulamin mam wartosc tak to chcekbox bedzie miał checked="checked" (czyli zaznaczenie)
a jesli w bazie jest nie to jest odznaczony
questionmark.gif?
bede wdzieczny za odpowiedz
blooregard
Zakładając, że pole w bazie danych nazywa się 'regulamin':
  1. <input type="checkbox" value="1" <?php echo ($row['regulamin'] == 'tak')? 'checked="checked"' : ''; ?> / >
kielich
no fakt banał ze tak nie pomyślałem thx

Ps. A jesli odznacze i zeby w bazie zosał rekord UPDAT'niety tongue.gif to jak proponujesz questionmark.gif
blooregard
Ja robię tak:

W funkcji, do której przekazuję dane z formularza (w formie tablicy) i która zapisuje je w bazie:
  1. <?php
  2. ...
  3. $nowa_wartosc_pola_regulamin = ($tablica_z_danymi_z_formularza['regulamin'])? 'tak' : 'nie';
  4. ...
  5.  
  6. $query = "UPDATE tabela SET regulamin = '".$nowa_wartosc_pola_regulamin."' WHERE ..."
  7. ?>


Czyli, w przypadku nie zaznaczenia checkboxa $tablica_z_danymi_z_formularza['regulamin'] będzie pusta, i wtedy zmiennej $nowa_wartosc_pola_regulamin zostanie przypisana wartość 'nie'.
kielich
probowałem z ifami no ale nic sad.gif twojego kod nie czaje troch

zrobiłem tak i dział
Kod
<?php
var_dump($_POST);

if(isset($_POST['wiadomosci'])==TRUE)
{
$pytanie = "UPDATE klient SET wiadomosci='TAK'";
$tem=mysql_query($pytanie) or die ('Nie mozna wykonanac.Przepraszamy');
}else{
$pytanie = "UPDATE klient SET wiadomosci='NIE'";
$tem=mysql_query($pytanie) or die ('Nie mozna wykonanac.Przepraszamy');
}
?>


teraz jest dobrze
blooregard
Jesli checkbox nie jest zaznaczony, nie pojawi się w tablicy zmiennych przesłanych POST-em.

Wystarczy więc sprawdzić, czy takie pole istnieje - jeśli nie, to oznacza nie zaznaczonego checkboxa i wtedy UPDATE wstawia 'nie' w pole regulamin.

Walnij sobie var_dump($_POST); na początku skryptu, gdzie odbierasz zmienne z formularza i patrz, co się zmienia, jak zaznaczasz/odznaczasz checkbox'a, a zrozumiesz.
kielich
kurde jednak nie jest dobrze bo o sprawdza czy jest wysłany wystarczy ze przejde miedzy podstronami i warunek nie jest spełniony i daje mi na NIE

juz sam nie wiem sad.gif
blooregard
Protokół HTTP jest bezstanowy, czyli nie zapamiętuje swojego stanu pomiędzy kolejnymi wywołaniami. Jeśli przechodzisz do innej podstrony i chcesz mieć zaznaczonego checkboxa, musisz przesłać jego aktualny stan POST-em lub GET-em. Sam z siebie ten checkbox Ci się nie zaznaczy.
kielich
juz nie chodzi o HTTP tylko o to jak mam zrobic bo kiedy mam tak
Kod
<?php
var_dump($_POST);

if(isset($_POST['wiadomosci'])==TRUE)
{
$pytanie = "UPDATE klient SET wiadomosci='TAK'";
$tem=mysql_query($pytanie) or die ('Nie mozna wykonanac.Przepraszamy');
}else{
$pytanie = "UPDATE klient SET wiadomosci='NIE'";
$tem=mysql_query($pytanie) or die ('Nie mozna wykonanac.Przepraszamy');
}
?>

to jest zostanie zaznaczony daje na tak a kiedy jest zaznaczony i nacisne zatwierdz (WYSYŁAM POSTEM) to sie odznacza bo warunek nie jest TRUE ale checkbox'a nie ruszałem
zwykle o to nie prosze ale czy mozesz zapodac jakos pelny kod questionmark.gif
blooregard
  1. <?php
  2. $pytanie = "UPDATE klient SET wiadomosci= '" .(($_POST['wiadomosci'])? 'TAK' : 'NIE')."'";
  3. $tem=mysql_query($pytanie) or die ('Nie mozna wykonanac.Przepraszamy');
  4. ?>
kielich
OK działa
w przeciwieństwie do innnych tym co pomagaja zawsze daje songa i tak bedzie w tym przypadku thx
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.