0

現在、MySQLを使用している次のPHPファイルがあり、00:00から23:00までの結果が返されるはずです(これは時刻表です)が、01:00から23:00までしか返されません。

<?PHP
 include("../panel/config.php");
 #// Timetable Clearup Variabls

$yesterday = strtotime('yesterday');
$yesterdow = date('l',$yesterday);
$order = "SELECT * FROM timetable WHERE day = '$yesterdow' ORDER BY time LIMIT 0 , 30";
$result = mysql_query($order);
$yesterdayd = date('F jS, Y', time()-86400);

    //SET XML HEADER
    header('Content-type: text/xml');

    //CONSTRUCT RSS FEED HEADERS
    $output = '<rss version="2.0">';
    $output .= '<channel>';
    $output .= "<title>Timetable - {$yesterdayd} </title>";
    $output .= '<description>Timetable.</description>';
        $output .= '<link>http://www.site.com</link>';
     while ($row = mysql_fetch_array($result)) {
    //BODY OF RSS FEED

   $output .= "<item><title>Timetable - {$yesterdayd}</title>
   <description>";
while ($row=mysql_fetch_array($result))
{
        $rowset[] = $row;
  //BODY OF RSS FEED
  $output .= htmlspecialchars($row['time']) . " " . htmlspecialchars($row['username']) . "<br/>";
}
$output .= '</description></item> ';
 }
    //CLOSE RSS FEED
   $output .= '</channel>';
   $output .= '</rss>';

    //SEND COMPLETE RSS FEED TO BROWSER
$filename = "timetable.xml";

                if (!$handle = fopen($filename, 'w')) {
            echo "Cannot open file ($filename)";
            exit;
            }

            // Write $somecontent to our opened file.
            if (fwrite($handle, $output) === FALSE) {
            echo "Cannot write to file ($filename)";
            exit;
            }

            if (fwrite($handle, $total) === FALSE) {
            echo "Cannot write to file ($filename)";
            exit;
            }

            echo "Success, wrote {$content}{$total} to file ($filename)";

            fclose($handle);


?>

誰かが光を当てることができますか

4

1 に答える 1

1

二重の while ループにより、最初の結果を上書きしています。

while ($row = mysql_fetch_array($result)) {
    //BODY OF RSS FEED

    $output .= "<item><title>Timetable - {$yesterdayd}</title><description>";
    while ($row=mysql_fetch_array($result))
    {
        // First $row result is now overwritten before you used it
        // ...

また、date('Y-m-d')の代わりに使用することもできますdate('l')。あなたの日の列に何が含まれているのかわかりませんが、date('l')昨日の火曜日と先週の火曜日、5 年前の火曜日を区別しない曜日の名前を返します。

必要なのは 2 つでwhile($row = mysql_fetch_array($result))はなく 1 つだけです。

于 2012-04-12T00:41:48.970 に答える