1
I have this code that creates the calendar and checkbox:
<?php
# PHP Calendar (version 2.3), written by Keith Devens
function generate_calendar($year, $month, $days = array(), $day_name_length = 3, $month_href = NULL, $first_day = 0, $pn = array()){
$first_of_month = gmmktime(0,0,0,$month,1,$year);
#remember that mktime will automatically correct if invalid dates are entered
# for instance, mktime(0,0,0,12,32,1997) will be the date for Jan 1, 1998
# this provides a built in "rounding" feature to generate_calendar()
$day_names = array(); #generate all the day names according to the current locale
for($n=0,$t=(3+$first_day)*86400; $n<7; $n++,$t+=86400) #January 4, 1970 was a Sunday
$day_names[$n] = ucfirst(gmstrftime('%A',$t)); #%A means full textual day name
$mes_pt = array('', 'Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro');
list($month, $year, $month_name, $weekday) = explode(',',gmstrftime('%m,%Y,%B,%w',$first_of_month));
$weekday = ($weekday + 7 - $first_day) % 7; #adjust for $first_day
//$title = htmlentities(ucfirst($month_name)).' '.$year; #note that some locales don't capitalize month and day names
$title = htmlentities(ucfirst($mes_pt[(int)$month])).' '.$year;
#Begin calendar. Uses a real <caption>. See http://diveintomark.org/archives/2002/07/03
@list($p, $pl) = each($pn); @list($n, $nl) = each($pn); #previous and next links, if applicable
if($p) $p = '<span class="calendar-prev">'.($pl ? '<a href="'.htmlspecialchars($pl).'">'.$p.'</a>' : $p).'</span> ';
if($n) $n = ' <span class="calendar-next">'.($nl ? '<a href="'.htmlspecialchars($nl).'">'.$n.'</a>' : $n).'</span>';
$calendar = '<table class="calendar">'."\n".
'<caption class="calendar-month"><h1><center><strong>'.$p.($month_href ? '<a href="'.htmlspecialchars($month_href).'">'.$title.'</a>' : $title).$n."</strong></center></h1></caption>\n<tr>";
if($day_name_length){ #if the day names should be shown ($day_name_length > 0)
#if day_name_length is >3, the full name of the day will be printed
//foreach($day_names as $d)
//$calendar .= '<th abbr="'.htmlentities($d).'">'.htmlentities($day_name_length < 4 ? substr($d,0,$day_name_length) : $d).'</th>';
$calendar .= "<th bgcolor='silver' align='center'>Domingo</th>";
$calendar .= "<th bgcolor='silver' align='center'>Segunda</th>";
$calendar .= "<th bgcolor='silver' align='center'>Terça</th>";
$calendar .= "<th bgcolor='silver' align='center'>Quarta</th>";
$calendar .= "<th bgcolor='silver' align='center'>Quinta</th>";
$calendar .= "<th bgcolor='silver' align='center'>Sexta</th>";
$calendar .= "<th bgcolor='silver' align='center'>Sábado</th>";
$calendar .= "</tr>\n<tr>";
}
if($weekday > 0) $calendar .= '<td colspan="'.$weekday.'"> </td>'; #initial 'empty' days
for($day=1,$days_in_month=gmdate('t',$first_of_month); $day<=$days_in_month; $day++,$weekday++){
if($weekday == 7){
$weekday = 0; #start a new week
$calendar .= "</tr>\n<tr>";
}
if(isset($days[$day]) and is_array($days[$day])){
@list($link, $classes, $content) = $days[$day];
if(is_null($content)) $content = $day;
$calendar .= '<td'.($classes ? ' class="'.htmlspecialchars($classes).'">' : '>').
($link ? '<a href="'.htmlspecialchars($link).'">'.$content.'</a>' : $content).'</td>';
}
else
$calendar .= "<td bgcolor='#F5F5F5' align='center' data-semana=''><center><font size='2px'/>
<input type='checkbox' name='DataRegisto[]' value='$year-$month-$day'> $year-$month-$day <br />
<input type='checkbox' name='Pequeno[]' value='Peq. Almoço'> Peq. Almoço <br />
<input type='checkbox' name='Almoco[]' value='Almoço'> Almoço <br />
<input type='checkbox' name='Dieta[]' value='Almoço Dieta'> Almoço (Dieta)<br />
<input type='checkbox' name='Lanche[]' value='Lanche'> Lanche<br />
<input type='checkbox' name='Jantar[]' value='Jantar'> Jantar<br />
<input type='checkbox' name='JantarDie[]' value='Jantar Dieta'> Jantar (Dieta)</font></center></td>";
}
if($weekday != 7) $calendar .= '<td colspan="'.(7-$weekday).'">
</td>'; #remaining "empty" days
return $calendar."</tr>\n</table>\n";
}
date_default_timezone_set('Europe/Lisbon');
$dates = date('Y/m/d');
$hoje = getdate(strtotime($dates));
//Monta o calendário
if(isset($_POST["data"])){
?>
<form name="form2" id="mainForm2" method="post" enctype="multipart/form-data" action="">
<?php
list($dia, $mes, $ano) = explode('/', $_POST["data"]);
echo generate_calendar($ano,$mes,$dia);
?>
<input type="submit" name="registar" value="Marcar">
</form>
<?php } else { ?>
<form name="form3" id="mainForm3" method="post" action="">
<?php echo generate_calendar($hoje["year"], $hoje["mon"], $hoje["mday"]); ?>
<input type="submit" name="registar" value="Marcar">
</form>
<?php } ?>
I use this code to enter into the database:
<?php
if(isset($_POST['registar']))
{
for ($i=0;$i<count($_POST["DataRegisto"]);$i++) {
$data = $_POST['DataRegisto'][$i];
$pequeno = $_POST['Pequeno'][$i];
$almoco = $_POST['Almoco'][$i];
$dieta = $_POST['Dieta'][$i];
$lanche = $_POST['Lanche'][$i];
$jantar = $_POST['Jantar'][$i];
$jantardie = $_POST['JantarDie'][$i];
$sql="INSERT INTO testeteste (DataRegisto,Pequeno,Almoco,Dieta,Lanche,Jantar,JantarDie) VALUES ('$data','$pequeno','$almoco','$dieta','$lanche','$jantar','$jantardie')";
$r = mysqli_query($conn,$sql);
}
}
?>
Now I want the checkbox to be selected according to the database table data and for that I am using this code:
<?php
$result_cursos = "SELECT DataRegisto,
Pequeno,
Almoco,
Dieta,
Lanche,
Jantar,
JantarDie
FROM centrodb.testeteste";
$resultado_cursos = mysqli_query($conn, $result_cursos);
foreach ($resultado_cursos as $row) {
$data = $row['DataRegisto'];
$pequeno = $row['Pequeno'];
$almoco = $row['Almoco'];
$dieta = $row['Dieta'];
$lanche = $row['Lanche'];
$jantar = $row['Jantar'];
$jantardie = $row['JantarDie'];
$marcado = '';
if(in_array($data, $pequeno, $almoco, $dieta, $lanche, $jantar, $jantardie))
$marcado = 'checked';
$option.='<label class="checkbox-inline"><input type="checkbox" name="DataRegisto[]" value="'.$data.'" ></label>';
$option.='<label class="checkbox-inline"><input type="checkbox" name="Pequeno[]" value="'.$pequeno.'" ></label>';
$option.='<label class="checkbox-inline"><input type="checkbox" name="Almoco[]" value="'.$almoco.'" ></label>';
$option.='<label class="checkbox-inline"><input type="checkbox" name="Dieta[]" value="'.$dieta.'" ></label>';
$option.='<label class="checkbox-inline"><input type="checkbox" name="Lanche[]" value="'.$lanche.'" ></label>';
$option.='<label class="checkbox-inline"><input type="checkbox" name="Jantar[]" value="'.$jantar.'" ></label>';
$option.='<label class="checkbox-inline"><input type="checkbox" name="JantarDie[]" value="'.$jantardie.'" ></label>';
}
?>
But the code to show selected checkbox is not working.
You wanna know about
data
exists in any of these variables?$pequeno, $almoco, $dieta, $lanche, $jantar, $jantardie
– Sam
I put up an image with my calendar and checkbox. I intend that after registering the meals in the database, when I open the calendar again appear the checkbox already selected with the appointments I have already registered. What I want is what you said in your comment above
– Bruno
In the
$option.='<label class="checkbox-inline"><input type="checkbox" name="DataRegisto[]" value="'.$data.'" ></label>';
only has the checkbox ofDataRegisto[]
... and the others?– Sam
The others are
$almoco, $dieta, $lanche, $jantar, $jantardie
and I have the same way that I have this$option.='<label class="checkbox-inline"><input type="checkbox" name="Pequeno[]" value="'.$pequeno.'" ></label>';
,$option.='<label class="checkbox-inline"><input type="checkbox" name="Pequeno[]" value="'.$pequeno.'" ></label>';
and so on. I will edit the question and put all.– Bruno
I understood the following: you are creating the options by pulling the values of the Bank. Until then quiet. But to mark the boxes, you need to buy with something, and that’s what I don’t understand. Where will you get the valuables to make this comparison?
– Sam
I give the initial value to each of the checkboxes, which are
DataRegisto, Pequeno, Almoço, Dieta, Lanche, Jantar e JantarDie
and then I have to compare with the database table, if on that date there is that value in the table then it puts the selected checkbox.– Bruno
Let’s go continue this discussion in chat.
– Sam
@dvd, can we continue this discussion in chat? I needed to take some questions with you
– Bruno