Mysql tarihe göre

5 Cevap php

Ben bugüne kadar benim sonuç formu mysql sıralamak istiyorum. Bu gibi sorguyu kullanabilirsiniz:

<?php
$date = $db->get_query("select distinct created_date from comments");
$condate = '';
for($i=0; $i < count($date); $i++)
{
  $condate = $date[$i]['created_date'];
  $data = $db->get_query("select id,created_date from comments where created_date='$condate' order by created_date");
  ?>
  <table border='1' style="float: left; margin-left: 5px;">
    <?php
    for($j=0; $j<count($data); $j++)
    {
      echo '<tr><td>';
      echo $data[$j]['id'] ;
      echo '</td><td>';
      echo $data[$j]['created_date'];
      echo '</td></tr>';
    }
    ?>
  </table>
<?php
}
?>

Bu gibi bu sorgu üretmek sonuç:

2009-07-10 
2009-07-10
2009-08-21
2009-07-29
2009-08-15

The result is not sorted.
I want to see the result is:

2009-07-10
2009-07-10
2009-07-29
2009-08-15
2009-08-29

with separated table order by created-date.
I want to know sorting date in mysql result .In this case $condate is variable for validate condition.The value of $condate is all created_date in comments table. I produce this as within loop and set the value is.
Please help me!

5 Cevap

Yalnızca tek bir tarihten itibaren sonuçları seçerek ediyorsanız, o zaman göre sıralamak için bir şey yok. WHERE durum tam olarak ne yapıyor?

Edit: Şimdi kod gönderdiniz ettik, ben bir öneri sunabilir. Orijinal kod her biri farklı tarih için ayrı bir sorgu çalışıyor. Gerçekten istediğin all tarihlerde sonuçları döndüren tek bir sorgu, ama kodu sorgu altında ne olduğu belirli bir düzen içinde. Bunun yerine bu deneyin:

<?php     

    $data = $db->get_query("select id,created_date from comments order by created_date");
?>
<table border='1' style="float: left; margin-left: 5px;">
   <?php


        for($j=0; $j<count($data); $j++)
        {

             echo '<tr><td>';
             echo $data[$j]['id'] ;
             echo '</td><td>';
             echo $data[$j]['created_date'];
             echo '</td></tr>';
        }

   ?>
</table>

Zaten orijinal kodu tüm bu vardı unutmayın! Sadece görevi aslında daha karmaşık olduğuna kendinizi ikna etmeyi başardı. :)

Eğer nerede yan tümcesi = koymak Çünkü, böylece tüm kayıtlar aynı gün içinde olacak ve sıralama yararlı olmayacaktır.

Edit

Eğer created_date alan için date alan türü veya string kullanıyor musunuz? Bu sorunu neden olabilir bu yüzden dize eğer ...

Belki tarih alan bir "dize" ve datetime gibi bir şey saklanır mı?

: Eğer kontrol ederseniz

describe table_name;

Nasıl tarih saklanır?

Eğer ikinci sorgu için soruyorsunuz tarihleri ​​oluşturmak için sipariş verilmez sonuçları döngü vardır. Eğer sorgulama edildi en yakın Up:

$date = $db->get_query("select distinct created_date from comments");
// should be (and excuse the keyword capitalization, I just think its easier to read)
$date = $db->get_query("SELECT DISTINCT created_date FROM comments ORDER BY created_date");

Sadece yanlış sorguda ORDER BY madde koymak.

I dont think you need to execute 2 queries. Try executing $data = $db->get_query("select DISTINCT id,created_date from comments where created_date='$condate' order by created_date"); I think you had all built-in in your code but you just got confused a little.

Bana bu sorunu çözülmüş olup olmadığını bilmek izin vermeyin.