Too long string causes error - "Cannot modify header information" - php

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;
?>

Related

How to display all dates between two given dates?

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

php calendar first day monday

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 } } ?>

PHP Pagination removes search term and reverts back to displaying all results, fix?

After searching for a specific course the results are displayed correctly but once I change page it reverts back to displaying all of the available results. How do I keep the search term results?
Here's the code
<?php
$con = mysqli_connect("localhost", "root", "root", "courses");
// $total = mysqli_query($con, "SELECT count(title) as total")->fetch()['total']);
if(isset($_GET['searchword'])){
$searchword = $_GET['searchword'];
}
else {
$searchword = "";
}
$result = mysqli_query($con, "SELECT count(title) FROM course WHERE title LIKE '$searchword%'");
$row = mysqli_fetch_row($result);
// Total rows.
$rowstotal = $row[0];
//pages
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$perPage = isset($_GET['per-page']) && $_GET['per-page'] <= 100 ? (int)$_GET['per-page'] : 10;
$start = ($page > 1) ? ($page * $perPage) - $perPage : 0;
$pages = $rowstotal / $perPage;
$sql = "SELECT * FROM course WHERE title LIKE '%$searchword%' ORDER BY title ASC LIMIT {$start},{$perPage}";
$query = mysqli_query($con, $sql);
$resultsText = "$rowstotal results";
$resultsList = '';
while($row = mysqli_fetch_array($query, MYSQLI_ASSOC)){
$courseId = $row["id"];
$courseAward = $row["award"];
$courseName = $row["title"];
$courseDetails = $row["summary"];
$resultsList .= ''.$courseAward.' '.$courseName.' <br>'.$courseDetails.'<br/>';
}
mysqli_close($con);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Courses</title>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<nav class="navbar navbar-default navbar-static-top navbar-inverse">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="#">
<img alt="Napier" src="">
</a>
</div>
</div>
</nav>
<div class="container">
<!-- Search -->
<form method="GET">
<input type="text" class="form-control" name="searchword" placeholder="Search" value="<?php echo $searchword ?>" style="width:30%;"><br>
</form>
<!-- Results -->
<div class="results">
<p></p>
<p>Showing <?php echo $perPage; ?> of <?php echo $resultsText; ?></p>
<p id="content"><?php echo $resultsList; ?></p>
</div>
<div class="pagination">
<?php for($x = 1; $x <= $pages; $x++): ?>
<a href="?page=<?php echo $x; ?>&per-page=<?php echo $perPage; ?>"<?php if($page === $x) { echo ' class="selected"'; } ?>><?php echo $x; ?></a>
<?php endfor; ?>
</div>
</div>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.3.min.js"></script>
</body>
</html>
Your page links don't preserve the searchword parameter. Change this:
<a href="?page=<?php echo $x; ?>&per-page=<?php echo $perPage; ?>"<?php if($page === $x) { echo ' class="selected"'; } ?>><?php echo $x; ?></a>
to this:
<a href="?page=<?php echo $x; ?>&per-page=<?php echo $perPage; ?>&searchword=<?php echo $searchword; ?>"<?php if($page === $x) { echo ' class="selected"'; } ?>><?php echo $x; ?></a>

PHP Day of the Week used as conditional link

Using this question I was able to build forward/backward functionality based on the current day of the week using a href links. I also wanted to be able to have a a href link for a specific day so you'll notice I added the $link_7 for example and built a Sunday a href. Here is where the crazyness comes in. You'll Notice $link_7 is Specified and is for Sunday but I have to make the actual href a 2 for Sunday. Today is Friday so I think my routine is doing a +2 and throwing off the value. What is the best way to circumvent this when going direct to a Day of the week?
if (array_key_exists('day', $_GET)) {
$add_day = $_GET['day'];
} else {
$add_day = 0;
}
$yesterday = $add_day - 1;
$tomorrow = $add_day + 1;
$link_yesterday = $_SERVER['PHP_SELF'] . '?day=' . $yesterday ;
$link_tomorrow = $_SERVER['PHP_SELF'] . '?day=' . $tomorrow ;
$link_7 = $_SERVER['PHP_SELF'] . '?day=7' ;
$link_1 = $_SERVER['PHP_SELF'] . '?day=1' ;
$link_2 = $_SERVER['PHP_SELF'] . '?day=2' ;
$link_3 = $_SERVER['PHP_SELF'] . '?day=3' ;
$link_4 = $_SERVER['PHP_SELF'] . '?day=4' ;
$link_5 = $_SERVER['PHP_SELF'] . '?day=5' ;
$link_6 = $_SERVER['PHP_SELF'] . '?day=6' ;
$display_day = mktime(0, 0, 0, date("m") , date("d") + $add_day, date("Y"));
$today = date('N', $display_day);
<a style="color:white" href="<?php echo $link_yesterday;?>">See Yesterday</a>
<a style="color:white" href="<?php echo $link_tomorrow;?>">See Tomorrow</a> |
<a style="color:white" href="<?php echo $link_2;?>">Sunday</a>
<a style="color:white" href="<?php echo $link_3;?>">Monday</a>
<a style="color:white" href="<?php echo $link_4;?>">Tuesday</a>
<a style="color:white" href="<?php echo $link_5;?>">Wednesday</a>
<a style="color:white" href="<?php echo $link_6;?>">Thursday</a>
<a style="color:white" href="<?php echo $link_7;?>">Friday</a>
<a style="color:white" href="<?php echo $link_1;?>">Saturday</a>
if( $today == 7) { ?>
<th class="WADAResultsTableHeader">Sunday</th>
<?php } elseif( $today == 1 ) { ?>
<th class="WADAResultsTableHeader">Monday</th>
<?php } elseif( $today == 2 ) { ?>
<th class="WADAResultsTableHeader">Tuesday</th>
<?php } elseif( $today == 3 ) { ?>
<th class="WADAResultsTableHeader">Wednesday</th>
<?php } elseif( $today == 4 ) { ?>
<th class="WADAResultsTableHeader">Thursday</th>
<?php } elseif( $today == 5 ) { ?>
<th class="WADAResultsTableHeader">Friday</th>
<?php } elseif( $today == 6 ) { ?>
<th class="WADAResultsTableHeader">Saturday</th>
<?php } ?>

How can i change the year from the calendar when the months value passes december?

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);
?>

Categories