У меня есть таблица базы данных с именем столбца (события) и «день» (в полном объеме, так: «Понедельник,« Вторник »и т. Д.). В цикле while
, отображающем событие, за которым следует его день в скобках, довольно просто.Подставляя значения из полей MySQL при печати в PHP
Есть ли способ систематически подставлять каждый день на дату, когда этот день выпадает на следующий? Так что в понедельник будет 11 июня, вторник - 12 июня и т. Д.
Я пробовал что-то в этих строках, но переменная остается неизменной для каждой строки 'name' - ретроспективно это имеет смысл.
$today = date("l");
$todays_date = date("j M");
if ($row['day'] == $today) {
$date = $todays_date;
}
else if (day == date("l", strotime("+1 day")) {
$date = date("j M", strotime("+1 day"));
}
echo "<option>" . $row['name'] . " (" . $date . ")</option>";
EDIT
Вот что у меня теперь есть:
function getClubs() {
connect();
date_default_timezone_set('Europe/London');
$day = date("l");
$time = date("G");
if ($time >= 21) {
$day = date('l', strtotime($day .' +1 day'));
}
if ($day == Monday) {
$query = "SELECT * FROM nights WHERE city = 'Cambridge' ORDER BY FIELD(day, 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY')";
}
else if ($day == Tuesday) {
$query = "SELECT name FROM nights WHERE city = 'Cambridge' ORDER BY FIELD(day, 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY', 'MONDAY')";
}
else if ($day == Wednesday) {
$query = "SELECT name FROM nights WHERE city = 'Cambridge' ORDER BY FIELD(day, 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY', 'MONDAY', 'TUESDAY')";
}
else if ($day == Thursday) {
$query = "SELECT name FROM nights WHERE city = 'Cambridge' ORDER BY FIELD(day, 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY', 'MONDAY', 'TUESDAY', 'WEDNESDAY')";
}
else if ($day == Friday) {
$query = "SELECT name FROM nights WHERE city = 'Cambridge' ORDER BY FIELD(day, 'FRIDAY', 'SATURDAY', 'SUNDAY', 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY')";
}
else if ($day == Saturday) {
$query = "SELECT name FROM nights WHERE city = 'Cambridge' ORDER BY FIELD(day, 'SATURDAY', 'SUNDAY', 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY')";
}
else if ($day == Sunday) {
$query = "SELECT name FROM nights WHERE city = 'Cambridge' ORDER BY FIELD(day, 'SUNDAY', 'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY')";
}
$result = mysql_query($query);
$items = array();
if($result && mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_array($result)) {
// $items[] = array($row['name']);
$day = $row['day'];
function getDateString($day){
if (date("l")==$day){
return date("j M");
}
else {
$date = strtotime("next $day");
return date("j M",$date);
}
}
echo "<option>" . $row['name'] . " (" . getDateString($row['day']) . ")</option>";
}
}
}
Спасибо за ваш ответ. Как это соответствует моему коду? Не нужно ли быть каким-то массивом, чтобы он не давал одинаковое значение для каждого события, которое было напечатано в выпадающем списке? – Sebastian
Когда вы повторяете все свои даты, в своем выражении эха вы просто измените его на это: «echo» "; ' – Timm
Это имеет смысл, спасибо большое. Только одно: не будет ли getDateString ($ row ['day'])? – Sebastian