ugrás a tartalomhoz

PHP, MySQL és checkbox

szpistomi · 2009. Aug. 31. (H), 14.25
Hali!

Ismét problémába futottam...
A problémám a checkbox-okkal adódott. Eléggé kezdő szinten állok ezekkel a dolgokkal, de próbálok haladni...
Adott egy adatbázis, benne felhasználók adatai. A felhasználó admin is, ezt az adatbázisban "tinyint" típussal tárolom egy rekordban, NULL vagy 1 értékkel.

Így kellene működnie:
Amikor megnyitom a formot, az kitöltődik a kiválasztott user adataival, köztük checkboxokkal jelölve az adott tagságokat. Ha módosítok valamelyik boxon (kiveszem, azaz törlöm a tagságot, vagy bejelölöm, azaz létrehozom a tagságot), akkor azt a feldolgozó beírja az adatbázisba (a "$bg_admin" változó értékét NULL vagy 1-re állítja).

Ez a form részlete. A lekérdezés, és a többi szöveges mező működik, azt nem írom.
  1. BG Admin: <input type="checkbox" name="bg_admin" value="be" checked="  
  2. <?php  
  3. if ($adatok['bg_admin'] = 1) {  
  4. echo 'yes';  
  5. else {  
  6. echo 'no';}  
  7. ?>"><br><br>  
  8. <input type="hidden" name="bg_admin_ki" value="ki">  
A rejtett mező elvileg a kikapcsolás miatt kell, azt hiszem ilyesmit olvastam...
Önmagában ez se működik, mert mindenhol bejelöltet ad vissza.

Ez a feldolgozó része, de már az adatok beolvasásánál hibás...
  1. if (isset($_POST['bg_admin']))  
  2. $bg_admin"1";  
  3. else  
  4. {$_POST['bg_admin_ki'] = "ki";  
  5. $bg_admin"NULL")};  
Tudna valaki egy kis segítséget adni a hibajavításhoz, vagy esetleg korrekt kódot? Köszi!
 
1

ötletek

gex · 2009. Aug. 31. (H), 14.41
egyrészt $adatok['bg_admin'] = 1 helyett $adatok['bg_admin'] == 1, másrészt nem kell rejtett mező, harmadrészt ne használj null értéket adatbázisban, az admin mező értéke legyen 0 vagy 1. később nem fogod tudni hogy mit jelöltél nullal, hogy nem admin vagy hogy még nem adtál neki értéket.
2

Negyedreszt a checked erteke

duplabe · 2009. Aug. 31. (H), 14.47
Negyedreszt a checked erteke nem yes vagy no, hanem checked.
3

Köszönöm!

szpistomi · 2009. Szep. 1. (K), 12.39
Sikerült, tegnap kicsit elvarázsoltam magam, és belegabalyodtam a dolgokba, utólag visszanézve láma hibák voltak...

A működő kódok:
Form:
  1. BG Admin: <input type="checkbox" name="bg_admin" value="be"   
  2. <?php  
  3. if ($adatok['bg_admin'] == 1) {  
  4.     echo "checked='checked'";  
  5. else {  
  6.     echo "";  
  7. }  
  8. ?>"><br>  
A végrehajtó rész:
  1. if (isset($_POST['bg_admin'])) {  
  2.     $bg_admin = 1;  
  3. else {  
  4.     $bg_admin = 0;  
  5. }  
Köszönöm a segítséget!
4

Apró kiegészítés

DonPepito · 2009. Szep. 1. (K), 14.57
Az alábbi kódrészletből kihagyhatod az else ágat, felesleges:
  1. BG Admin: <input type="checkbox" name="bg_admin" value="be"     
  2. <?php    
  3. if ($adatok['bg_admin'] == 1) {    
  4.     echo "checked='checked'";    
  5. else {    
  6.     echo "";    
  7. }    
  8. ?>"><br>    
Így:
  1. BG Admin: <input type="checkbox" name="bg_admin" value="be"     
  2. <?php    
  3. if ($adatok['bg_admin'] == 1) echo "checked='checked'";    
  4. ?>"><br>