Problemas com check box no update
Tenho um script que executa um select em um campo que contem os meses de um ano (não necessáriamente todos).
Este script tem um grupo de checkboxs que devem ser checkados de acordo com os meses informados no campo do select citado acima, mas os outros meses tambem devem aparecer no formulário, porém sem estarem checkados.
Segue abaixo o que tentei fazer até o momento.
<?php
include 'conexao.php';
$id = $_POST['id'];
$result = mysql_query("select *
from calendar
where CALID= ".$id."");
$row = mysql_fetch_array($result);
$months = explode(",",$row['MONTH']);
foreach($months as $key=>$value) {
if ($months[$key] == 1){
echo "<input type='checkbox' name='months[]' id='1' value='$value' checked='checked' /> Jan ";
}else {
echo "<input type='checkbox' name='months[]' id='1' value='1' /> Jan ";
}
if ($months[$key] == 2){
echo "<input type='checkbox' name='months[]' id='2' value='$value' checked='checked' /> Feb ";
}else {
echo "<input type='checkbox' name='months[]' id='2' value='2' /> Feb ";
}
if ($months[$key] == 3){
echo "<input type='checkbox' name='months[]' id='3' value='$value' checked='checked' /> Mar ";
}else {
echo "<input type='checkbox' name='months[]' id='3' value='3' /> Mar ";
}
if ($months[$key] == 4){
echo "<input type='checkbox' name='months[]' id='4' value='$value' checked='checked' /> Apr ";
}else {
echo "<input type='checkbox' name='months[]' id='4' value='4' /> Apr ";
}
if ($months[$key] == 5){
echo "<input type='checkbox' name='months[]' id='5' value='$value' checked='checked' /> May ";
}else {
echo "<input type='checkbox' name='months[]' id='5' value='5' /> May ";
}
if ($months[$key] == 6){
echo "<input type='checkbox' name='months[]' id='6' value='$value' checked='checked' /> Jun <br>";
}else {
echo "<input type='checkbox' name='months[]' id='6' value='6' /> Jun <br>";
}
if ($months[$key] == 7){
echo "<input type='checkbox' name='months[]' id='7' value='$value' checked='checked' /> Jul";
}else {
echo "<input type='checkbox' name='months[]' id='7' value='7' /> Jul";
}
if ($months[$key] == 8){
echo "<input type='checkbox' name='months[]' id='8' value='$value' checked='checked' /> Aug ";
}else {
echo "<input type='checkbox' name='months[]' id='8' value='8' /> Aug ";
}
if ($months[$key] == 9){
echo "<input type='checkbox' name='months[]' id='9' value='$value' checked='checked' /> Sep ";
}else {
echo "<input type='checkbox' name='months[]' id='9' value='9' /> Sep ";
}
if ($months[$key] == 10){
echo "<input type='checkbox' name='months[]' id='10' value='$value' checked='checked' /> Oct ";
}else {
echo "<input type='checkbox' name='months[]' id='10' value='10' /> Oct ";
}
if ($months[$key] == 11){
echo "<input type='checkbox' name='months[]' id='11' value='$value' checked='checked' /> Nov ";
}else {
echo "<input type='checkbox' name='months[]' id='11' value='11' /> Nov ";
}
if ($months[$key] == 12){
echo "<input type='checkbox' name='months[]' id='12' value='$value' checked='checked' /> Dec ";
}else {
echo "<input type='checkbox' name='months[]' id='12' value='12' /> Dec ";
}
}
?>
Este script tem um grupo de checkboxs que devem ser checkados de acordo com os meses informados no campo do select citado acima, mas os outros meses tambem devem aparecer no formulário, porém sem estarem checkados.
Segue abaixo o que tentei fazer até o momento.
<?php
include 'conexao.php';
$id = $_POST['id'];
$result = mysql_query("select *
from calendar
where CALID= ".$id."");
$row = mysql_fetch_array($result);
$months = explode(",",$row['MONTH']);
foreach($months as $key=>$value) {
if ($months[$key] == 1){
echo "<input type='checkbox' name='months[]' id='1' value='$value' checked='checked' /> Jan ";
}else {
echo "<input type='checkbox' name='months[]' id='1' value='1' /> Jan ";
}
if ($months[$key] == 2){
echo "<input type='checkbox' name='months[]' id='2' value='$value' checked='checked' /> Feb ";
}else {
echo "<input type='checkbox' name='months[]' id='2' value='2' /> Feb ";
}
if ($months[$key] == 3){
echo "<input type='checkbox' name='months[]' id='3' value='$value' checked='checked' /> Mar ";
}else {
echo "<input type='checkbox' name='months[]' id='3' value='3' /> Mar ";
}
if ($months[$key] == 4){
echo "<input type='checkbox' name='months[]' id='4' value='$value' checked='checked' /> Apr ";
}else {
echo "<input type='checkbox' name='months[]' id='4' value='4' /> Apr ";
}
if ($months[$key] == 5){
echo "<input type='checkbox' name='months[]' id='5' value='$value' checked='checked' /> May ";
}else {
echo "<input type='checkbox' name='months[]' id='5' value='5' /> May ";
}
if ($months[$key] == 6){
echo "<input type='checkbox' name='months[]' id='6' value='$value' checked='checked' /> Jun <br>";
}else {
echo "<input type='checkbox' name='months[]' id='6' value='6' /> Jun <br>";
}
if ($months[$key] == 7){
echo "<input type='checkbox' name='months[]' id='7' value='$value' checked='checked' /> Jul";
}else {
echo "<input type='checkbox' name='months[]' id='7' value='7' /> Jul";
}
if ($months[$key] == 8){
echo "<input type='checkbox' name='months[]' id='8' value='$value' checked='checked' /> Aug ";
}else {
echo "<input type='checkbox' name='months[]' id='8' value='8' /> Aug ";
}
if ($months[$key] == 9){
echo "<input type='checkbox' name='months[]' id='9' value='$value' checked='checked' /> Sep ";
}else {
echo "<input type='checkbox' name='months[]' id='9' value='9' /> Sep ";
}
if ($months[$key] == 10){
echo "<input type='checkbox' name='months[]' id='10' value='$value' checked='checked' /> Oct ";
}else {
echo "<input type='checkbox' name='months[]' id='10' value='10' /> Oct ";
}
if ($months[$key] == 11){
echo "<input type='checkbox' name='months[]' id='11' value='$value' checked='checked' /> Nov ";
}else {
echo "<input type='checkbox' name='months[]' id='11' value='11' /> Nov ";
}
if ($months[$key] == 12){
echo "<input type='checkbox' name='months[]' id='12' value='$value' checked='checked' /> Dec ";
}else {
echo "<input type='checkbox' name='months[]' id='12' value='12' /> Dec ";
}
}
?>
comentários (0)
suspender
Lista de Respostas:
03/09/2010 10:41pm
(~14 anos atrás)
(~14 anos atrás)
Mateus, aparentemente o seu SELECT consulta um único registro do BD, que devolve na coluna "MONTH" um conjunto de valores separados por vírgula.
Seu código está percorrendo estes meses e criar sempre checkbox marcados, afinal, no foreach abaixo:
$months[$key] é a mesma coisa que $value.
Se você quer monstrar 12 meses, mas marcar apenas aqueles que estão em $months, então faz assim:
Seu código está percorrendo estes meses e criar sempre checkbox marcados, afinal, no foreach abaixo:
foreach($months as $key => $value) {
Se você quer monstrar 12 meses, mas marcar apenas aqueles que estão em $months, então faz assim:
$nomes_meses = array(1 => 'Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'); $id = mysql_real_escape_string($_POST['id']); $result = mysql_query("select MONTH from calendar where CALID= ".$id.""); $row = mysql_fetch_array($result); $months = explode(',',$row['MONTH']); for ($m = 1; $m <= 12; $m++) { $checked = in_array($m, $months) ? ' checked="checked"' : ''; echo '<label>'; echo "<input type='checkbox' name='months[]' id='{$m}' value="{$m}"{$checked} /> "; echo $nomes_meses[$m]; echo '</label>'; }