0

私は次のコードでデータベースエントリを出力しています:

<div id="main_area">
<div  id="container">
<div id="php_container" role="main">
<?php
include('connect_it.php');
$sqlget= "SELECT * FROM dbtablename";
$sqldata= mysqli_query ($dbcon,$sqlget) or die('this is an error');
while ($row = mysqli_fetch_array($sqldata, MYSQLI_ASSOC)) {
echo $row[ 'li' ] ;
}
?>
</div>
</div>
</div>

ページの読み込み時に、データベース エントリを日付順に (最新のものから最も古いものへ) 並べ替えたいと思います。これは、DD/MM/YY の形式で「追加」と呼ばれる mysql フィールドに保存されます。

それができるかどうかはわかりませんが、別のオプションとして、日付はによって定義されたスパン内にある<span id="date">date: 27/11/11</span>ので、おそらくこのスパンを使用してデータを並べ替えることができますか?

だから私の質問は、どうすれば最初の出力を日付順に並べ替えて、最新のものから最も古いものにすることができますか?

私が試してみました:

$sqlget= "SELECT * FROM dbtablename ORDER BY added ASC";

しかし、私は予想外の結果を得ました。

ありがとうございました。

4

2 に答える 2

1

最初にいくつかのマイナーなもの(他にもあります)<span id="date">...</span>は、id属性が一意である必要があるため、無効です<span class="date">...</span>。代わりに使用してください。ブラウザはそれをレンダリングし、ほとんどの場合正しくレンダリングしますが、「id」属性の正しい使用法ではありません。

クエリですべての列を選択する必要がありますか?そうでない場合は、必要なものだけを選択してください。

必要なクエリは次のとおりです。

SELECT * FROM dbtablename ORDER BY added DESC

ただし、これによりすべての行とすべての列が選択されます。トリッキーな部分です。データは「dd/mm / yyy」形式で保存されているとのことですが、1年に1か月あたり約30日あるため、このクエリは機能しません。datetime日付データをyyyy-mm-dd 00:00:00形式で保存する列タイプを使用する必要があります。ご覧のとおり、これですべての問題が修正されます。

または、他の誰かが言ったようSTR_TO_DATE(added,'%d/%m/%y')に、データを抽出するために使用します。

次に、抽出したデータで、PHPで($var日付値はどこにありますか)を使用します。

echo date('d/m/y',strtotime($var));

お役に立てば幸いです。

于 2012-11-30T03:58:13.233 に答える
1

追加した列が DATE、DATETIME、または TIMESTAMP タイプの場合、DATE_FORMAT を次のように使用できます。

$sqlget= "SELECT *, DATE_FORMAT(added,'%d/%m/%y') as addedFormated FROM dbtablename ORDER BY added ASC";

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-formatを参照してください。

それ以外の場合は、文字列を試してください (実際には DATE 型である必要があります)。

$sqlget= "SELECT *, STR_TO_DATE(added,'%d/%m/%y') as addedFormated FROM dbtablename ORDER BY STR_TO_DATE(added,'%d/%m/%y') ASC";

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date

于 2012-11-30T03:53:32.627 に答える