PHP+Checkbox+MySQL
Люди, помогите! Никак не могу врубиться как обрабатывать события checkbox'a. Т.е. Допустим ставим галку, делаем сабмит, и тогда в какое-нибудь поле в базу передается 1. Если галку сняли и опять сделали сабмит, то в базу - 0. Как обработать это долбанное событие. Никак не пойму. Помогите, plz!!!:o
Делай уникальное имя у каждого чек бока а потом проверяй какие существует единички какие нет 0
<input type=checkbox name='check$count' ..
Делай уникальное имя у каждого чек бока а потом проверяй какие существует единички какие нет 0
<input type=checkbox name='check$count' ..
В том то и дело, что чекбокс один, просто он в цикле While выводится в зависимости от кол-ва записей в базе. Допустим есть такая конструкция:
<input type="checkbox" name="active" value="1">
Как проверить когда он зачекен, а когда - нет? Где переменную ставить? Я делал так:
<input type="checkbox" name="active" value="1" <?if($active==1) echo(" checked ");?>>
if($active==1){
$checked=1;}else{
$checked=0;}
И когда выводил принтом, то все работало нормально, а как попробовал такую же операцию провернуть с базаой через UPDATE...SET, так нифига не получилось. вот!
$chk1=$HTTP_GET_VARS["chk1"]
$chk1=($chk1=="on")?1:0;
mysql_query("UPDATE... SET box1='$chk1';");
?>
<form action=<?=$PHP_SELF;?> method=get>
<input type=checkbox <?=($chk1==1)?"checked":""; ?> name=chk1>
<input type=submit>
Набирал прямо тут, могут быть ошибки.
<?
@mysql_connect($HOST, @LOGIN, $PASS) or die ("Couldn't connect to server ".mysql_error());
@mysql_select_db($DB) or die("Couldn't connect to database ".mysql_error());
?>
<?
$chk1=$HTTP_GET_VARS["chk1"];
$chk1=($chk1=="on")?1:0;
$result1=mysql_query("UPDATE orders SET cust_id='$chk1'");
?>
<?
$result=mysql_query("SELECT * FROM orders");
?>
<table>
<tr>
<td>order_id</td>
<td>cust_id</td>
</tr>
<?while($row = mysql_fetch_array($result))
{
?>
<tr>
<td><?print ("${row['order_id']}");?></td>
<td>
<form action="check.php" method="get">
<input type=checkbox <?($chk1==1)?" checked":"";if($chk1==1) echo " checked ";?> name=chk1> </td>
</tr>
<?};?>
</table>
<input type=submit>
</form>
либо через массив смотри
Либо зделай именна разные (как предлагал Joker самое простое и надежное решение)
либо через массив смотри
Да, наверное через цикл For, присвою им разные имена.
1. UPDATE orders SET cust_id='$chk1' обнавит ВСЕ строки в таблице. Так и должно быть.
2. <?($chk1==1)?" checked":"";if($chk1==1) echo " checked ";?> Странная конструкция... ну да ладно...
Это отметить ВСЕ поля в форме если выбранно поле с именем chk1
3. Странная структура документа получится что то типа <form>... <form> ... и т.д. и в конце один </form> возможны глюки в некоторых браузерах... или во многих... не уверен... всеравно не понятно зачем окружать каждое поле отдельной формой ?
Вы хотели вывести из таблици все поля, отметить галочками поля которые были "отмеченны", и что бы из браузера можно было менять отмеченно/не отмеченно поле.
Так вы хотели ?
Вы хотели вывести из таблици все поля, отметить галочками поля которые были "отмеченны", и что бы из браузера можно было менять отмеченно/не отмеченно поле.
Так вы хотели ?
да-да, именно так, если бы вы мне в этом помогли, то былобы чудесно, а то я что-то совсем запутался.