сортиране по оставащо време

obqvi_in

Registered
Здравейте, в база данни имам дадени събития, които са в минало и предстоящи в бъдеще. Как да сортирам събитията в 'select' които предстоят най-скоро и от миналото(колко години) и от бъдещето. Например днес сме 31.07.2017 събитие 1 на 31.08.2017; 2 на 30.09.2016; 3 на 31.10.2017;
Съответно да бъдат подредени така съб. 1(остава 1 месец), съб. 2(остават 2 мес. и е изминала 1 год.) и съб. 3(остават 3 мес.)
 
Как записваш датите?


Код:
<?php

//Ако датите са ти в такъв формат
$dates = ['31.07.2017', '31.08.2017', '30.09.2016', '31.10.2017'];

//ги обръщаме на date обекти
$dateObjects = array_map(function($date) {
  return DateTime::createFromFormat('d.m.Y', $date);
}, $dates);

//сортираме
usort($dateObjects, function($a, $b) {
    return $a->getTimestamp() - $b->getTimestamp();
});

foreach($dateObjects as $date) {
  echo $date->format('d.m.Y').PHP_EOL;
}

Ето демо - https://3v4l.org/ELJG4
 
Формат в база данни е 'Y-m-d' Благодаря ти, че си направил демо, но не разбирам как ще стане в моя 'select'. Не знам дали си ме разбрал, защото и аз не го обясних както трябва, че не се взема под внимание годината ако събитията са в минало време. Тоест събитие с дата 01.08.1990(рожден ден) трябва да бъде най-скоро подредено. Сещам се за едно нещо, но не знам дали е правилно. Всички събития в минало датите им да се преобразуват на сегашната година и с функцията strtotime(date('Y-m-d')) да се подредят до края на годината, но пък в края и началото на другата годината може да се объркат нещата. А и не знам как да вкарам променлива в 'select', за да са в цикъл и двете и дали е правилно.
 
Най-лесно да ти дам кода, и сега оправяй се.
PHP:
<?php 
$sql = mysqli_qery($db_link, 'Select * from `tablica` order by `KOLONA_S_DATATA` ASC ');
?>

<select>
    <?php while($row = $sql->fetch_assoc()): ?>
 <option><?php echo $row['KOLONA_S_DATATA'];?></option>
    <?php endwhile; ?>
</select>

Кажи това ми е таблицата има тези, тези и тези полета, тука записвам датата в ейтакъв формат, как да сортирам резултатите. И да дадеш имената на таблиците - толкова ли е трудно?

Сега 3-4 поста гадаем какво имаш и какво да ти покажем като пример :) :idea:
 
joTunkiq каза:
Най-лесно да ти дам кода, и сега оправяй се.
PHP:
<?php 
$sql = mysqli_qery($db_link, 'Select * from `tablica` order by `KOLONA_S_DATATA` ASC ');
?>

<select>
    <?php while($row = $sql->fetch_assoc()): ?>
 <option><?php echo $row['KOLONA_S_DATATA'];?></option>
    <?php endwhile; ?>
</select>

Кажи това ми е таблицата има тези, тези и тези полета, тука записвам датата в ейтакъв формат, как да сортирам резултатите. И да дадеш имената на таблиците - толкова ли е трудно?

Сега 3-4 поста гадаем какво имаш и какво да ти покажем като пример :) :idea:
той ако знаеше как да си зададе въпроса щеше да търси в стака.
 
Fakeheal каза:
uphero каза:
той ако знаеше как да си зададе въпроса щеше да търси в стака.

Най-полезния потребител на web-tourist.net, дами и господа!

Ивайло Костов RULES!

Най-полезния от година и повече ми праща 15лв :D Още ги чакам :D
 
obqvi_in каза:

Хей, да разбираме ли, че си се справил със задачката? :)


lam3r4370 каза:
Fakeheal каза:
uphero каза:
той ако знаеше как да си зададе въпроса щеше да търси в стака.

Най-полезния потребител на web-tourist.net, дами и господа!

Ивайло Костов RULES!

Най-полезния от година и повече ми праща 15лв :D Още ги чакам :D

Смятай...

Не ми се мисли за хората от http://dostavetemi.com/
 
Fakeheal каза:
lam3r4370 каза:
Fakeheal каза:
Най-полезния потребител на web-tourist.net, дами и господа!

Ивайло Костов RULES!

Най-полезния от година и повече ми праща 15лв :D Още ги чакам :D

Смятай...

Не ми се мисли за хората от http://dostavetemi.com/

По-забавното е, че той сам предложи да ми ги даде :D

извинявам се за спама
 

Горе