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.

BG Admin: <input type="checkbox" name="bg_admin" value="be" checked="
<?php
if ($adatok['bg_admin'] = 1) {
echo 'yes';
} else {
echo 'no';}
?>"><br><br>
<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...

if (isset($_POST['bg_admin']))
$bg_admin= "1";
else
{$_POST['bg_admin_ki'] = "ki";
$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:

BG Admin: <input type="checkbox" name="bg_admin" value="be" 
<?php
if ($adatok['bg_admin'] == 1) {
	echo "checked='checked'";
} else {
	echo "";
}
?>"><br>
A végrehajtó rész:

if (isset($_POST['bg_admin'])) {
	$bg_admin = 1;
} else {
	$bg_admin = 0;
}
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:

BG Admin: <input type="checkbox" name="bg_admin" value="be"   
<?php  
if ($adatok['bg_admin'] == 1) {  
    echo "checked='checked'";  
} else {  
    echo "";  
}  
?>"><br>  
Így:

BG Admin: <input type="checkbox" name="bg_admin" value="be"   
<?php  
if ($adatok['bg_admin'] == 1) echo "checked='checked'";  
?>"><br>