I am creating a calendar in which I have to mark all the dates between two given dates. But the dates are not static they are taken from database. For example:
<?php
$dateYear = ($year != '')?$year:date("Y");
$dateMonth = ($month != '')?$month:date("m");
$date = $dateYear.'-'.$dateMonth.'-01';
$currentMonthFirstDay = date("N",strtotime($date));
$totalDaysOfMonth = cal_days_in_month(CAL_GREGORIAN,$dateMonth,$dateYear);
$totalDaysOfMonthDisplay = ($currentMonthFirstDay == 7)?($totalDaysOfMonth):($totalDaysOfMonth + $currentMonthFirstDay);
$boxDisplay = ($totalDaysOfMonthDisplay <= 35)?35:42;
?>
<div id="calender_section">
<h2>
<<
<select name="month_dropdown" class="month_dropdown dropdown"><?php echo $this->getAllMonths($dateMonth); ?></select>
<select name="year_dropdown" class="year_dropdown dropdown"><?php echo $this->getYearList($dateYear); ?></select>
>>
</h2>
<div id="event_list" class="none"></div>
<div id="calender_section_top">
<ul>
<li>Mon</li>
<li>Tue</li>
<li>Wed</li>
<li>Thu</li>
<li>Fri</li>
<li>Sat</li>
<li>Sun</li>
</ul>
</div>
<div id="calender_section_bot">
<ul>
<?php
$dayCount = 1;
for ($cb = 1; $cb <= $boxDisplay; $cb++) {
if (($cb >= $currentMonthFirstDay || $currentMonthFirstDay == 7) && $cb <= ($totalDaysOfMonthDisplay - 1)) {
// Current date
$currentDate = $dateYear.'-'.$dateMonth.'-'.$dayCount;
$eventNum = 0;
// Include db configuration file
// Get number of events based on the current date
$sql = "SELECT date_from, date_to FROM booking_2";
$result = $this->connect()->query($sql);
/*die(var_dump($result));*/
$eventNum = $result->num_rows;
if ($eventNum > 0) {
while ($row = $result->fetch_assoc()) {
$date_from = $row['date_from'];
$date_to = $row['date_to'];
$time_from = strtotime($date_from);
$time_fromm = idate('d', $time_from);
$time_to = strtotime($date_to);
$time_too = idate('d', $time_to);
}
$period = new DatePeriod(
new DateTime($date_from),
new DateInterval('P1D'),
new DateTime($date_to)
);
if ($time_from == $currentDate) {
/*echo '<li style="background-color:#FF3232 !important;" date="'.date("Y-m-d", strtotime($currentDate)).'" class="date_cell"><span>'.date("d", strtotime($currentDate)).'</span>'; */
foreach ($period as $key) {
echo '<li style="background-color:#FF3232 !important;"'.$key->format('Y-m-d');
}
} else {
echo '<li date="'.$currentDate.'" class="date_cell">';
}
}
// Date cell
echo '<span>';
echo $dayCount;
echo '</span>';
echo '</li>';
$dayCount++;
?>
<?php } else { ?>
<li><span> </span></li>
<?php } } ?>
</ul>
</div>
</div>
How do I make the dates that are pulled from data base gets marked up in a different colour? I have tried for loops and it works mostly but then again it ends up taking only the last row from database, I need the calendar to display all the taken dates not just the last one that is in the database
Related
I want to create a calendar that displays a single month. Users can only see the current month and next month. The calendar has two buttons that allow going to the next month or when the current month. I want to prevent (by PHP) the possibility of going to the other month when you type in the URL number of the month which is too distant or previous than current. When you type the wrong month in the URL the PHP should redirect you to the current or next month.
I noticed that when the user enters the wrong month and when the redirection header should work then there is an error:
"(output started at
C:\xampp\htdocs\php\page--xampp--phpmailer\subpages\profile__dates.php:97)
in C:\xampp\htdocs\php\page--xampp--phpmailer\php\profile_dates.php on
line 15". "profile__dates.php:97"
returns from database base64 profile image. When I change the length src of the image then everything is working very well but I don't see the user's avatar.
How can I fix it without changing the method of saving a user's avatar in the database and in PHP?
$userInfo['profile_image'] - returns over 6k length string, when I short it up to 30 chars then it's working
<?php
session_start();
if(isset($_SESSION['isLoggedIn'])){
if(!$_SESSION['isLoggedIn']){
header("Location: ../index.php");
exit();
}else{
if(isset($_GET['month']) || isset($_GET['year'])){
if(!empty($_GET['month']) || !empty($_GET['year'])){
include('../php/getuserinfo.php');
include('../php/is_profile_activated.php');
include('../php/profile_dates.php');
}
}else{
$month = date('m');
$year = date('Y');
header("Location: http://localhost/php/page--xampp--phpmailer/subpages/profile__dates.php?month=$month&year=$year");
exit();
}
}
}else{
die(header("Location: ./login.php"));
}
?>
<!DOCTYPE html>
<html lang="pl-PL">
<head>
<title>Rezerwacja terminu | Bartek OSK</title>
<meta charset="UTF-8">
<meta name="description" content="Od lat profesjonalnie uczymy naszych kursantów nauki jazdy. Posiadamy bardzo wysoką zdawalność. Posiadamy łączone kursy obniżając przy tym łączną cenę. ">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="theme-color" content="#ffffff">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="../styles/basic.css">
<link rel="stylesheet" href="../styles/profile__dates.css">
<link rel="apple-touch-icon" sizes="180x180" href="../favicons/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="../favicons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="../favicons/favicon-16x16.png">
<link rel="manifest" href="../favicons/site.webmanifest">
<link rel="mask-icon" href="../favicons/safari-pinned-tab.svg" color="#5bbad5">
</head>
<body>
<nav>
<div id="navbar">
<div class="nav-logo flexbox-row-center">
<img class="nav-logo-img" src="../imgs/logo.png" alt="BartekOSK logo">
</div>
<div class="nav-links flexbox-row-center">
<ul class="flexbox-row-center">
<li class="nav--elem">Strona Główna</li>
<li class="nav--elem">Cennik</li>
<li class="nav--elem">Galeria</li>
<li class="nav--elem">Kontakt</li>
<?php
if(isset($_SESSION['isLoggedIn']) && $_SESSION['isLoggedIn']){
echo('<li class="nav__account--elem"><a class="nav__account--link" href="../subpages/profile__home.php"><img src="'.$userInfo['profile_image'].'" alt="User profile image"></a>
<ul class="nav__account__dd--list">
<li class="nav__account__dd--elem">Informacje o użytkowniku</li>
<li class="nav__account__dd--elem">Informacje o kursie</li>
<li class="nav__account__dd--elem">Terminy</li>
<li class="nav__account__dd--elem">Wyloguj się</li>
</ul></li>');
}else{
echo '<li class="nav__signup--elem">Zapisz się</li>';
echo '<li class="nav__login--elem">Zaloguj się</li>';
}
?>
</ul>
</div>
</div>
<div class="navigation__rwd">
<button class="hamburger">
<span class="hamburger__box">
<span class="hamburger__inner"></span>
</span>
</button>
<div class="nav-list-wrapper">
<ul class="nav-list">
<li><img class="rwd-nav-logo-img" src="../imgs/logo.png" alt="BartekOSK logo"></li>
<li>Strona Główna</li>
<li>Cennik</li>
<li>Galeria</li>
<li>Kontakt</li>
<?php
if(isset($_SESSION['isLoggedIn']) && $_SESSION['isLoggedIn']){
echo '<li class="rwd__nav__signup--elem">Konto</li>';
echo '<li class="rwd__nav__logout--elem">Wyloguj się</li>';
}else{
echo '<li class="rwd__nav__signup--elem">Zapisz się</li>';
echo '<li class="rwd__nav__login--elem">Zaloguj się</li>';
}
?>
</ul>
</div>
</div>
</nav>
<section id="content">
<h1>REZERWACJA TERMINU</h1>
<div class="home__btn--container">
<img class="home__btn--img" src="../imgs/home_icon.png" alt="Home icon" title="Profil">
</div>
<?php echo generateCalendar(); ?>
<div class="profile--nav flexbox-row-center">
<ul class="nav--list">
<li class="nav__list--item"><img class="nav__list__item--img" src="../imgs/user_icon_small.png" alt="User icon" title="Informacje o użytkowniku"></li>
<li class="nav__list--item"><img class="nav__list__item--img" src="../imgs/student_cap_icon_small.png" alt="Student cap icon" title="Informacje o kursie"></li>
<li class="nav__list--item"><img class="nav__list__item--img active" src="../imgs/calendar_icon_small.png" alt="Calendar icon" title="Terminy"></li>
</ul>
</div>
</section>
<div class="header-shape-one">
<img src="../svgs/shape1.svg" alt="Background Shape1">
</div>
<div class="header-shape-two">
<img src="../svgs/shape2.svg" alt="Background Shape2">
</div>
<footer class="flexbox-column-center">
<div class="footer-contact flexbox-column-center">
<img src="../imgs/logo.png" alt="BartekOSK logo">
<ul>
<li><img src="../imgs/marker_white-32px.png" alt="Marker image">ul. Sokolska 34, 40-121 Katowice</li>
<li><img src="../imgs/mail_white-32px.png" alt="Mail image">bartekosk#gmail.com</li>
<li><img src="../imgs/phone_white-32px.png" alt="Phone image">+48 501-546-408</li>
</ul>
</div>
<div class="important__documents--container">
Regulamin
Polityka prywatności
RODO
</div>
<div class="footer-copyright flexbox-row-center">
<p>© Bartek OSK. Wszelkie prawa zastrzeżone. | Zaprojektowane przez Kamil Krukowski.</p>
</div>
</footer>
<?php
if(!isset($_COOKIE['cookieAgree'])){
echo('<section class="cookies__notification--container">
<p class="cookies__info">Ta strona wykorzystuje pliki <strong>cookies</strong> w celu polepszenia doświadczeń z korzystania naszej strony.</p>
Więcej informacji
<br>
<button class="cookies__agree--btn">Zrozumiałem/am</button>
</section>');
}
?>
<script
src="https://code.jquery.com/jquery-3.5.1.js"
integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc="
crossorigin="anonymous"></script>
<script src="../js/dates.js"></script>
<script src="../js/script.js"></script>
</body>
</html>
<?php
ob_start();
function generateCalendar(){
//Get basic info about date and calendar
$typeOfCalendar = CAL_GREGORIAN;
$month = $_GET['month'];
$year = $_GET['year'];
$monthName = date('M', mktime(0,0,0,$month,1,$year));
//If user wants to show two months forward or previous month
if(date('m') == 12){
if($month > 1 && $year == date('Y')+1){
$month = 1;
$year = date('Y')+1;
die(header("Location: ../subpages/profile__dates.php?month=$month&year=$year"));
}
}else{
if($month > date('m')+1){
$month = date('m')+1;
}else if($month < date('m')){
$month = date('m');
}
}
$daysInTheMonth = cal_days_in_month($typeOfCalendar, $month, $year);
$firstDayOfTheMonth = date("N", mktime(0,0,0,$month,1,$year));
//Days of previous month
if($month == 1){
$daysInThePrevMonth = cal_days_in_month($typeOfCalendar, 12, $year-1);
$prevMonthDay = $daysInThePrevMonth - $firstDayOfTheMonth+2;
}else{
$prevMonth = $month-1;
$daysInThePrevMonth = cal_days_in_month($typeOfCalendar, $prevMonth, $year);
$prevMonthDay = $daysInThePrevMonth - $firstDayOfTheMonth+2;
}
//Days of forward month
if($month == 12){
$fwdMonthDay = date("j", mktime(0,0,0,1,1,$year+1));
echo($fwdMonthDay);
}else{
$fwdMonth = $month+1;
$fwdMonthDay = date("j", mktime(0,0,0,$fwdMonth,1,$year+1));
echo($fwdMonthDay);
}
//Create table
echo('<table class="calendar--container">');
//Info
echo('<tr>');
echo('<td colspan="2"><button class="calendar__back--btn"><</button></td>');
echo('<td colspan="3"><p class="calendar__month--text">'.$monthName.'</p></td>');
echo('<td colspan="2"><button class="calendar__next--btn">></button></td>');
echo('</tr>');
//Days
echo('<tr>');
echo('<td><p>Pon</p></td>');
echo('<td><p>Wt</p></td>');
echo('<td><p>Śro</p></td>');
echo('<td><p>Czw</p></td>');
echo('<td><p>Pią</p></td>');
echo('<td><p>Sob</p></td>');
echo('<td><p>Nie</p></td>');
echo('</tr>');
$dateInLoop = 0;
for($i = 1; $i<=6; $i++){
echo("<tr>");
for($j = 1; $j<=7; $j++){
if($i === 1 && ($j === $firstDayOfTheMonth-1)){
echo("<td><p class='other__month__day--text'>$prevMonthDay</p></td>");
$dateInLoop = 1;
}else if($i === 1 && ($j >= $firstDayOfTheMonth)){
echo("<td data-day='$dateInLoop'><button class='calendar__day--btn'>$dateInLoop</button></td>");
$dateInLoop++;
}else if($i === 1 && ($j < $firstDayOfTheMonth)){
echo("<td><p class='other__month__day--text'>$prevMonthDay</p></td>");
$dateInLoop++;
$prevMonthDay++;
}else if($i != 1 && ($dateInLoop <= $daysInTheMonth)){
echo("<td data-day='$dateInLoop'><button class='calendar__day--btn'>$dateInLoop</button></td>");
$dateInLoop++;
}else if($i != 1 && ($dateInLoop >= $daysInTheMonth)){
echo("<td><p class='other__month__day--text'>$fwdMonthDay</p></td>");
$dateInLoop++;
$fwdMonthDay++;
}
}
echo("</tr>");
}
echo("</table>");
}
ob_end_flush();
?>
As per the comment I made, what you could try would be to get the generateCalendar method to return the HTML string rather than output it directly and then call that function earlier than you do currently.
For example:
function generateCalendar(){
if( isset( $_GET['month'], $_GET['year'] ) ){
$html=array();
$month = $_GET['month'];
$year = $_GET['year'];
if( !is_numeric( $month ) or !is_numeric( $year ) ){
return false;
}
$typeOfCalendar = CAL_GREGORIAN;
$monthName = date('M', mktime(0,0,0,$month,1,$year));
//If user wants to show two months forward or previous month
if( date('m') == 12 ){
if( $month > 1 && $year == date('Y')+1 ){
$month = 1;
$year = date('Y')+1;
die( header( "Location: ../subpages/profile__dates.php?month=$month&year=$year" ) );
}
}else{
if($month > date('m')+1){
$month = date('m')+1;
}else if($month < date('m')){
$month = date('m');
}
}
$daysInTheMonth = cal_days_in_month($typeOfCalendar, $month, $year);
$firstDayOfTheMonth = date("N", mktime(0,0,0,$month,1,$year));
//Days of previous month
if($month == 1){
$daysInThePrevMonth = cal_days_in_month($typeOfCalendar, 12, $year-1);
$prevMonthDay = $daysInThePrevMonth - $firstDayOfTheMonth+2;
}else{
$prevMonth = $month-1;
$daysInThePrevMonth = cal_days_in_month($typeOfCalendar, $prevMonth, $year);
$prevMonthDay = $daysInThePrevMonth - $firstDayOfTheMonth+2;
}
//Days of forward month
if( $month == 12 ){
$fwdMonthDay = date("j", mktime(0,0,0,1,1,$year+1));
$html[]=$fwdMonthDay;
}else{
$fwdMonth = $month+1;
$fwdMonthDay = date("j", mktime(0,0,0,$fwdMonth,1,$year+1));
$html[]=$fwdMonthDay;
}
//Create table
$html[]='
<table class="calendar--container">
<tr>
<td colspan="2"><button class="calendar__back--btn"><</button></td>
<td colspan="3"><p class="calendar__month--text">'.$monthName.'</p></td>
<td colspan="2"><button class="calendar__next--btn">></button></td>
</tr>
<tr>
<td><p>Pon</p></td>
<td><p>Wt</p></td>
<td><p>Śro</p></td>
<td><p>Czw</p></td>
<td><p>Pią</p></td>
<td><p>Sob</p></td>
<td><p>Nie</p></td>
</tr>');
$dateInLoop = 0;
for($i = 1; $i<=6; $i++){
$html[]='<tr>;
for( $j = 1; $j<=7; $j++ ){
if( $i === 1 && ($j === $firstDayOfTheMonth-1) ){
$html[]="<td><p class='other__month__day--text'>$prevMonthDay</p></td>";
$dateInLoop = 1;
}else if( $i === 1 && ($j >= $firstDayOfTheMonth) ){
$html[]="<td data-day='$dateInLoop'><button class='calendar__day--btn'>$dateInLoop</button></td>";
$dateInLoop++;
}else if($i === 1 && ($j < $firstDayOfTheMonth)){
$html[]="<td><p class='other__month__day--text'>$prevMonthDay</p></td>";
$dateInLoop++;
$prevMonthDay++;
}else if( $i != 1 && ($dateInLoop <= $daysInTheMonth) ){
$html[]="<td data-day='$dateInLoop'><button class='calendar__day--btn'>$dateInLoop</button></td>";
$dateInLoop++;
}else if( $i != 1 && ($dateInLoop >= $daysInTheMonth) ){
$html[]="<td><p class='other__month__day--text'>$fwdMonthDay</p></td>";
$dateInLoop++;
$fwdMonthDay++;
}
}
$html[]="</tr>";
}
$html[]="</table>";
return implode( PHP_EOL, $html );
}
return false;
}
And then, in the main page:
<?php
session_start();
if(isset($_SESSION['isLoggedIn'])){
if(!$_SESSION['isLoggedIn']){
exit(header("Location: ../index.php"));
}else{
if(isset($_GET['month']) || isset($_GET['year'])){
if(!empty($_GET['month']) || !empty($_GET['year'])){
include('../php/getuserinfo.php');
include('../php/is_profile_activated.php');
include('../php/profile_dates.php');
#call the calendar that now returns HTML string
$calhtml=( function_exists('generateCalendar') ) ? generateCalendar() : false;
}
}else{
$month = date('m');
$year = date('Y');
exit( header( "Location: http://localhost/php/page--xampp--phpmailer/subpages/profile__dates.php?month=$month&year=$year)" );
}
}
}else{
die(header("Location: ./login.php"));
}
?>
Later, in that same page ( where the generateCalendar method was originally called )
<?php
# echo the calendar data
if( $calhtml ) echo $calhtml;
?>
how can i change the first day in the first column of weeks into Monday.
here's the code i got from a website, and I've been trying to change the position of the days but still it displays the first day of the week as Sunday. how can i change it to Monday, thanks in advance
if(isset($_POST['func']) && !empty($_POST['func'])){
switch($_POST['func']){
case 'getCalender':
getCalender($_POST['year'],$_POST['month']);
break;
case 'getEvents':
getEvents($_POST['date']);
break;
default:
break;
}
}
/*
* Get calendar full HTML
*/
function getCalender($year = '',$month = '')
{
$dateYear = ($year != '')?$year:date("Y");
$dateMonth = ($month != '')?$month:date("m");
$date = $dateYear.'-'.$dateMonth.'-01';
$currentMonthFirstDay = date("N",strtotime($date));
$totalDaysOfMonth = cal_days_in_month(CAL_GREGORIAN,$dateMonth,$dateYear);
$totalDaysOfMonthDisplay = ($currentMonthFirstDay == 7)?($totalDaysOfMonth):($totalDaysOfMonth + $currentMonthFirstDay);
$boxDisplay = ($totalDaysOfMonthDisplay <= 35)?35:42;
?>
<div id="calender_section">
<h2>
<<
<select name="month_dropdown" class="month_dropdown dropdown"><?php echo getAllMonths($dateMonth); ?></select>
<select name="year_dropdown" class="year_dropdown dropdown"><?php echo getYearList($dateYear); ?></select>
>>
</h2>
<div id="event_list" class="none"></div>
<div id="calender_section_top">
<ul>
<li>Po</li>
<li>Út</li>
<li>St</li>
<li>Čt</li>
<li>Pá</li>
<li>So</li>
<li>Ne</li>
</ul>
</div>
<div id="calender_section_bot">
<ul>
<?php
$dayCount = 1;
for($cb=1;$cb<=$boxDisplay;$cb++){
if(($cb >= $currentMonthFirstDay+0 || $currentMonthFirstDay == 7) && $cb <= ($totalDaysOfMonthDisplay)){
//Current date
$currentDate = $dateYear.'-'.$dateMonth.'-'.$dayCount;
$eventNum = 0;
//Include db configuration file
include 'dbConfig.php';
//Get number of events based on the current date
$result = $db->query("SELECT title FROM events WHERE date = '".$currentDate."' AND status = 1");
$eventNum = $result->num_rows;
//Define date cell color
if(strtotime($currentDate) == strtotime(date("Y-m-d"))){
echo '<li date="'.$currentDate.'" class="grey date_cell">';
}elseif($eventNum > 0){
echo '<li date="'.$currentDate.'" class="light_sky date_cell">';
}else{
echo '<li date="'.$currentDate.'" class="date_cell">';
}
//Date cell
echo '<span>';
echo $dayCount;
echo '</span>';
//Hover event popup
echo '<div id="date_popup_'.$currentDate.'" class="date_popup_wrap none">';
echo '<div class="date_window">';
echo '<div class="popup_event">Events ('.$eventNum.')</div>';
echo ($eventNum > 0)?'view events':'';
echo '</div></div>';
echo '</li>';
$dayCount++;
?>
<?php }else{ ?>
<li><span> </span></li>
<?php } } ?>
html:
<select class="col-lg-4 col-xs-12 col-sm-5" name="fromYear" ><?php $starting_year =date('Y', strtotime('-50 year'));$ending_year = date('Y', strtotime('+4 year'));$current_year = date('Y');$selected_year = date('y',$profile->fromYear);for($starting_year; $starting_year <= $ending_year; $starting_year++) { echo '<option value="'.$starting_year.'"';if( $selected_year ) {echo ' selected="selected"'; }echo ' >'.$starting_year.'</option>';}?><select>
this code dynamically generates Dropdown for Year. How can I get year selected from the database in this code? for example,if i select 2009 in databse than this code display 2009 as selected
You don't need to do "$selected_year = date('Y',$profile->fromYear);" please check my code
<?php
$starting_year = date('Y', strtotime('-50 year'));
$ending_year = date('Y', strtotime('+4 year'));
$current_year = date('Y');
$selected_year = $profile->fromYear; //previosly selected year
?>
<select class="col-lg-4 col-xs-12 col-sm-5" name="fromYear" >
<?php
for($starting_year; $starting_year <= $ending_year; $starting_year++) {
echo '<option value="'.$starting_year.'"';
if($selected_year == $starting_year){
echo ' selected="selected"';
}
echo ' >'.$starting_year.'</option>';
}?>
I think you want the selected year as the current year please check my code
<select class="col-lg-4 col-xs-12 col-sm-5" name="fromYear" >
<?php
$starting_year =date('Y', strtotime('-50 year'));
$ending_year = date('Y', strtotime('+4 year'));
$current_year = date('Y');
$selected_year = date('Y',$profile->fromYear);
for($starting_year; $starting_year <= $ending_year; $starting_year++)
{
echo '<option value="'.$starting_year.'"';
if( $selected_year == $starting_year)
{
echo ' selected="selected"';
}
echo ' >'.$starting_year.'</option>';
}
?>
<select>
I'm building a calendar - I'm making the buttons to change the month and the year.
Every time that the button to go forward is clicked, the variable that contains the months, receives more 1 value.
$id = preg_replace('#[^0-9]#i', '', $_GET['id']); //the ID contains the months
$next= $id + 1; //forward button
if($id < 12){
}else{
$id = 1; //puts the id variable back to 1 again
$next = $id;
}
Button code:
<button>Next</button>
Calling the function:
echo get_date($id,2014);
Now here's the problem: I'm having some problems changing the year when the id reaches december(12).
I tried this:
$years = date('Y');
$back = $id - 1;
$next= $id + 1;
if($id < 12){
}else{
$id = 1;
$next= $id;
$years++;
}
And I called the function:
echo get_date($id,$years);
get_date function:
<?php function get_date($month, $year){
switch ($month) {
case "1":
$ex_month = 'January';
break;
default:
$ex_month = 'January';
}
?>
<div id="calendar-wrap">
<div class="month-selection"><span><?= $ex_month . ' ' . $year; ?></span></div>
<<</td>
</div>
<div class="weeks">
<?php $weeks = array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');?>
<div class="weeks-begin"><span><?= $weeks[0]; ?></span></div>
<div><span><?= $weeks[1]; ?></span></div>
<div><span><?= $weeks[2]; ?></span></div>
<div><span><?= $weeks[3]; ?></span></div>
<div><span><?= $weeks[4]; ?></span></div>
<div><span><?= $weeks[5]; ?></span></div>
<div><span><?= $weeks[6]; ?></span></div>
<?php
$day = date('d');
$running_day = date('w',mktime(0,0,0,$month,0,$year));
$days_in_month = date('t',mktime(0,0,0,$month,1,$year));
$days_in_this_week = 1;
?>
</div>
<br>
<div class="c-col-1">
<?php
for($x = 0; $x < $running_day; $x++):
?>
<div class="c-empty"></div>
<?php
endfor;
?>
<?php for($list_day = 1; $list_day <= $days_in_month; $list_day++):
if($list_day == $day){
$div = '<div style="background: red;">';
}else{
$div = '<div>';
}
?>
<?= $div ?><span> <?= $list_day ?> </span><span class="resp-week"></span></div>
<?php
endfor;
?>
</div>
</div>
<?php }
?>
i already did it, here the solution:
I created a new parameter to get the year.
<?php }
$id = preg_replace('#[^0-9]#i', '', $_GET['id']);
$get_year = preg_replace('#[^0-9]#i', '', $_GET['year']);
$teste = 1;
$back = $id - 1;
$next= $id + 1;
if($id < 12){
}else{
++$teste;
++$get_year;
$id = 1;
$next= $id;
}
?>
<button class="offersbtn">Next</button>
<?php
echo get_date($id,$get_year);
?>
I am trying to outputting data from a SQL table
Table cols are:
sheduleID, userID, empID, timeSlot, WeekSlot, daySlot
Connecting to DB
$schedQ = "SELECT * FROM seo_schedule WHERE empID=1 AND weekSlot=1";
$Em1Wk1Res = mysql_query($schedQ) or die(mysql_error());
Displaying Data
echo "<div class='week1'>";
while ($Em1WkRow = mysql_fetch_array($Em1Wk1Res)) {
$clientQ = "SELECT * FROM clients WHERE userID=".$Em1WkRow["userID"]."";
$clientRes = mysql_query($clientQ) or die(mysql_error());
$clientRow = mysql_fetch_array($clientRes);
echo "<div class='day".$Em1WkRow["daySlot"]."'>";
if ($Em1WkRow["timeSlot"] == "am") {
echo "<span class='".$Em1WkRow["timeSlot"]."'>";
echo $clientRow["company"];
echo "</span>";
}
else if ($Em1WkRow["timeSlot"] == "pm") {
echo "<span class='".$Em1WkRow["timeSlot"]."'>";
echo $clientRow["company"];
echo "</span>";
}
echo "</div>";
}
echo "</div>";
Current Output
<div class="week1">
<div class="day1">
<span class="am">Company 1</span>
</div>
<div class="day1">
<span class="pm">Company 1</span>
</div>
<div class="day2">
<span class="am">Company 2</span>
</div>
<div class="day2">
<span class="pm">Company 2</span>
</div>
...etc fir rest of days in week 1
</div>
What I want to be displayed is:
<div class="week1">
<div class="day1">
<span class="am">Company 1</span>
<span class="pm">Company 1</span>
</div>
<div class="day2">
<span class="am">Company 2</span>
<span class="pm">Company 2</span>
</div>
...etc fir rest of days in week 1
</div>
How do I go about doing this....?
You need a nested while to go through the days of the week rendering <span />s inside the week container. I'm not a php dev so can't help you with the implementation, sorry.
The question is do these events depend on a specific time or are you just trying to throw them in 1 company event per day AM and PM? In which case, you can just do:
$arr = array(0 => "am", 1 => "pm");
echo "<div class='week1'>";
while($Em1WkRow = mysql_fetch_array($Em1Wk1Res))
{
$clientQ = "SELECT * FROM clients WHERE userID='" . $Em1WkRow["userID"] . "'";
$clientRes = mysql_query($clientQ) or die(mysql_error());
$i = 0;
$out .= "<div class='day" . $Em1WkRow["daySlot"] . "'>"; // start day
while($clientRow = mysql_fetch_array($clientRes) && $i < 2)
{
// add current day's event
$out .= "<span class='" . $arr[$i++] . "'>";
$out .= $clientRow["company"];
$out .= "</span";
}
$out .= "</div>" // end day
}
echo $out; // display all week's info
echo "</div>"; // end week
This is what I ended up doing...
function emp_schedule($empID) {
$weeks = array(1, 2, 3, 4);
foreach ($weeks as $i => $week) {
$schedQ = "SELECT * FROM seo_schedule WHERE empID=$empID AND weekSlot=$week";
$Em1WkRes = mysql_query($schedQ) or die(mysql_error());
echo "<div class='week'>";
echo "<div class='head'><span class='ts'>Wk ".$week."</span> <span>Monday</span> <span>Tuesday</span> <span>Wednesday</span> <span>Thursday</span> <span>Friday</span></div>";
echo "<div class='ts'><span><strong>AM</strong></span><span><strong>PM</strong></span></div>";
while ($Em1WkRow = mysql_fetch_array($Em1WkRes)) {
$clientQ = "SELECT * FROM clients WHERE userID='".$Em1WkRow["userID"]."'";
$clientRes = mysql_query($clientQ) or die(mysql_error());
while($clientRow = mysql_fetch_array($clientRes)) {
$schd = "<div class='".$Em1WkRow["timeSlot"]."'>";
$schd .= "<span class='client'>".$clientRow["company"]."</span>";
$schd .= "</div>";
$days = array(1, 2, 3, 4, 5);
foreach ($days as $i => $day) {
if ($Em1WkRow["daySlot"] == $day && $Em1WkRow["timeSlot"] == "am" ) {
echo "<div class='day ".$Em1WkRow["daySlot"]."'>";
echo $schd;
}
if ($Em1WkRow["daySlot"] == $day && $Em1WkRow["timeSlot"] == "pm" ) {
echo $schd;
echo "</div>";
}
}
}
}
echo "</div>";
}
}
Mess I Know but it works.