2013-04-16 2 views
1

Эй, ребята, так что я имею некоторые проблемы, используя следующие:Как перечислить на самой высокой даты в PHP

for ($i = 0; $i < count($noncompUsername); $i++) 
{ 
    $tsql ="SELECT firstname,lastname,email,phone,statuschangedate FROM csvdata WHERE username = :username ORDER BY statuschangedate"; 
    $tgetmeminfo=$DBH->prepare($tsql); 
    $tgetmeminfo->execute(array(':username' => $noncompUsername[$i])); 
    while ($trow = $tgetmeminfo->fetch(PDO::FETCH_ASSOC)){ 

     $csvFirst = $trow['firstname']; 
     $csvLast = $trow['lastname']; 
     $csvEmail = $trow['email']; 
     $csvPhone = $trow['phone']; 
     $csvDate = $trow['statuschangedate']; 
     $timediff = strtotime($date) - strtotime($csvDate); 
     $timediff = floor($timediff/86400); 

     $sql ="SELECT MailingAdrs FROM insuranceverificationdisclaimer WHERE TraineeUsername = :tusername"; 
     $getmeminfo=$DBH->prepare($sql); 
     $getmeminfo->execute(array(':tusername' => $noncompUsername[$i])); 
     while ($row = $getmeminfo->fetch(PDO::FETCH_ASSOC)){ 

      $csvAddrs = $row['MailingAdrs']; 
      $change = 1; 
     } 
     if($change != 1) 
     { 
      $csvAddrs = "No address"; 
     } 
     $change = 0; 
     echo "$timediff, $csvFirst $csvLast, $csvEmail, $csvPhone, $csvAddrs"; 
    } 
    echo " 
    <br> 
    "; 
} 

Теперь это работает, но часть я хочу отметить, это $tsql ="SELECT firstname,lastname,email,phone,statuschangedate FROM csvdata WHERE username = :username ORDER BY statuschangedate"; - теперь, когда я это делаю и получить целое число statuschangedate до текущей даты и распечатать его как целое число, оно не упорядочено правильно на основе даты.

Так что мне нужно, чтобы это сделать заказ по самой старой датой на вершине и, как следует ...

Спасибо!

Дэвид

+1

Если вы хотите, чтобы старейший сверху, ваш запрос, похоже, делает именно это. –

+0

Но когда я поворачиваю даты в целые числа, он говорит мне иначе –

+0

Так что, как говорится, дата изменения статуса была с прошлой недели, поэтому теперь будет проверять дату с прошлой недели и превратить ее в целое число, равное 7, поэтому я буду иметь 7 в верхней части, чем 108 дней в середине и только во всем –

ответ

2

Если вы хотите заказать на основе $timediff вы должны изменить положение для того, чтобы это:

ORDER BY DATEDIFF(:date, statuschangedate) 

Конечно, это должно фактически дать тот же самый заказ, который у вас уже был, но вы могли бы хотя бы использовать это выражение для сохранения некоторой обработки в самом PHP :)

+0

Не работает ... что должно: дата быть установленную мной дату $ date? –

+0

@DavidBiga Да, это была идея. Кстати, вы говорите, что '$ timediff' повсюду? –

+0

Нет Я определяю $ timediff внутри каждой итерации для каждого сотрудника, с которым он ассоциируется, поэтому я показываю разницу дат в списке –

3

Заказать дату в порядке убывания (с использованием DESC):

... ORDER BY statuschangedate DESC 
+0

Не работает для меня У меня все еще есть даты для людей, которые превращаются в целые числа, составляющие 100 дней или около того, когда верхние 10 или 8 –

Смежные вопросы