2011-12-30 5 views
1

PHPとMySQLで日付を扱うときはいつも混乱します。私は他の投稿を見ても解決策を見つけることができませんでした。PHPが複数の行に1つの日付しか返さないクエリを実行する

質問があったときにレコードをエコーする簡単なブログがデータベースに保存されています。私は複数のエントリを持つ複数の行を取得しますが、日付はすべて同じです。

日付は、タイムスタンプと呼ばれる列にMySQLタイムスタンプとともに保存され、データベースで次のようにフォーマットされます。 2011-12-29 21:16:55(たとえば)。なぜ私は1つの日付を取得しています

$set_select_sql = "SELECT * 
    FROM `table` 
    ORDER BY `table`.`TimeStamp` DESC 
    LIMIT 0 , 30"; 
$set_query = mysql_query($set_select_sql); 
$HowMany=mysql_num_rows($set_query); 
$time = date("g:i a", strtotime(mysql_result($set_query,0,'TimeStamp'))); 
$date = date("F j, Y ", strtotime(mysql_result($set_query,0,'TimeStamp'))); 
$blogpost = mysql_result($set_query,0,'blogpost'); 

mysql_data_seek($set_query, 0); 
$r = 0; 
while ($r <= $HowMany) { 
    $row = mysql_fetch_assoc($set_query); 
    if ($row == FALSE) { 
    } else { 
     extract($row); 

     echo "It was $time on $date when I posted this.<br/>"; 
     echo "$blogpost" 
    } 
    $r++ 

:ここ

は、クエリですか? 私は何が欠けていますか?

ありがとうございます!

+1

ソリューションとして、ループ内でこれらの変数を取得することです。その後、レコードをループしますが、ループ内の時間と日付の変数は更新されません。 – Jrod

+0

'if($ row == FALSE){}'を 'if($ row!== FALSE)'に置き換えることができますので、ロジックを 'else'に入れなくてもいいです – jprofitt

答えて

2

あなたの行のループ内に取り込まれたが、それ以前に右ないでいたその$timeあなたが出力するのでと$dateそれはあります。あなたが最初の行の値にあなたの時間と日付の変数を設定している

while ($row = mysql_fetch_assoc($set_query)) { 
    $time = date("g:i a", strtotime($row['TimeStamp'])); 
    $date = date("F j, Y ", strtotime($row['TimeStamp'])); 
    $post = $row['blogpost']; 

    echo "It was " . $time . " on " . $date . " that I posted this. <br />"; 
    echo $post; 
} 
+0

ありがとう。私はそれが何か簡単だと分かっていました。 – mckinselberg

+0

あなたは大歓迎です! :) – Jules

0

にのみ、このラインで見つかった最初の行の日付を取得している:

$date = date("F j, Y ", strtotime(mysql_result($set_query,0,'TimeStamp'))); 

すべての行の日付を取得するには、whileループではなく前の日付を取得する必要があります。

関連する問題