Показать данные из базы данных, в которой дата находится в течение этой недели

У меня есть код, который выбирает данные в базе данных за день в течение этой недели. Например: если сегодня дата 2015-08-27, а столбец date_paid в базе данных имеет значение 2015-08-26 и 2015-08-25, он покажет данные, имеющие любую из этих дат.
Вот код, который я пытался получить на этой неделе:

// set current date
$date = date('Y-m-d');
// parse about any English textual datetime description into a Unix timestamp
$ts = strtotime($date);
// find the year (ISO-8601 year number) and the current week
$year = date('o', $ts);
$week = date('W', $ts);
// print week for the current date
for($i = 1; $i <= 7; $i++) {
// timestamp from ISO week date format
$ts = strtotime($year.'W'.$week.$i);
//shows the date for 7days
$week[$i] = date("Y-m-d", $ts) . "<br>";
}

if($week[1] == $date)
{
$today = $week[1];
}

if($week[2] == $date)
{
$today = $week[2];
}

if($week[3] == $date)
{
$today = $week[3];
}

if($week[4] == $date)
{
$today = $week[4];
}

if($week[5] == $date)
{
$today = $week[5];
}

if($week[6] == $date)
{
$today = $week[6];
}

if($week[7] == $date)
{
$today = $week[7];
}

$transaction = mysqli_query($connection, "SELECT * FROM transaction WHERE date_paid = '$today'");
$counttrans = mysqli_num_rows($transaction);

Этот код предполагает выборку данных, в которых есть день для этой недели. Но это не работает. Кто-нибудь может это исправить?

0

Решение

Сначала вам нужно получить день date_paid. Используйте функцию MySQL ‘WEEKDAY’

Возвращает индекс дня недели для даты (0 = понедельник, 1 = вторник,… 6 = воскресенье).

вот пример.

select users.created_at as day_of_week, WEEKDAY(users.created_at)
from users;
+---------------------+---------------------------+
| day_of_week         | WEEKDAY(users.created_at) |
+---------------------+---------------------------+
| 2015-08-26 05:22:29 |                         2 |
| 2015-08-04 14:14:32 |                         1 |
+---------------------+---------------------------+

выполнив этот запрос, мы выберем пользователей, созданных в первый день

select users.created_at as day_of_week
from users
where WEEKDAY(users.created_at) = '1';
+---------------------+
| day_of_week         |
+---------------------+
| 2015-08-04 14:14:32 |
+---------------------+

в вашем случае ваш запрос должен выглядеть так

"select transaction.date_paid as pay_day
from transaction
where WEEKDAY(transaction.date_paid ) =". $day;
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector