2

まず、私はPHPの経験がまったくありません。最小圧力と最大圧力の2つのアレイがあります。これらは両方ともデータベースからのデータにアクセスし、以下に示すように単純なxmlファイルを作成します。-

<pressuremaxhourly>1010,1009,1009,1009,1008,1008,1007,1005,1004,1003,1002,1002,1002,1002,1002,1002,1002,1002,1002,1002,1002,1001,1001,1001</pressuremaxhourly>
<pressureminhourly>1001,1009,1009,1008,1008,1006,1005,1004,1003,1002,1002,1002,1002,1002,1002,1002,1002,1002,1002,1001,1001,1001,1001,1001</pressureminhourly>

問題は、ご覧のとおり、最小配列の最初の値が常に最大配列の最後の値(この場合は「1001」)と等しいことです。これらの配列は30分ごとに新しい値で上書きされますが、問題は依然として存在します。これが私が使用するコードです:-

$MaxPressure="select hour(datetime) AS hour, max(BarometricPressure) as MAXBP from minute WHERE DATETIME
BETWEEN (CURDATE() + INTERVAL (SELECT hour(NOW())) hour - INTERVAL 24 hour)
AND ((CURDATE() + INTERVAL (SELECT hour(NOW()))hour))
group by hour
order by (CURDATE() + INTERVAL (SELECT hour(NOW())) hour - INTERVAL 24 hour)";
$MaxPressureResult = mysql_query($MaxPressure) or  die('Failed to query'.mysql_error());

while ($row = mysql_fetch_object($MaxPressureResult)) {
    $maxpressure[]=$row->MAXBP;
}

$MinimumPressure="select hour(datetime) AS hour, min(BarometricPressure) as MINBP from minute WHERE DATETIME
BETWEEN (CURDATE() + INTERVAL (SELECT hour(NOW())) hour - INTERVAL 24 hour)
AND ((CURDATE() + INTERVAL (SELECT hour(NOW()))hour))
group by hour
order by (CURDATE() + INTERVAL (SELECT hour(NOW())) hour - INTERVAL 24 hour)";
$MinimumPressureResult = mysql_query($MinimumPressure) or  die('Failed to query'.mysql_error());


while ($minrow = mysql_fetch_object($MinimumPressureResult)) {
    $minimumpressure[]=$minrow->MINBP;
}

そして、xmlファイルの作成に使用されるコードは次のとおりです。-

$dom = new DOMDocument(); 
$root = $dom->createElement( "weatherdata" );
$dom->appendChild( $root );  
$item = $dom->createElement( 'item', "" );  
$root->appendChild($item);

$maxpressure = $dom->createElement( 'pressuremaxhourly', "$maxpressure[0],$maxpressure[1],$maxpressure[2],$maxpressure[3],$maxpressure[4], etc....for all values );  
$item ->appendChild($maxpressure);
$minimumpressure = $dom->createElement( 'pressureminhourly', "$minimumpressure[0],$minimumpressure[1],$minimumpressure[2],$minimumpressure[3],$minimumpressure[4], etc....for all values );  
$item ->appendChild($minimumpressure);
$dom->formatOutput = true;
$dom->save('Hourly.xml') 

注:データベース内のデータを確認しましたが、それは正しいので、問題となっているのは明らかにスクリプトです。長い質問とコードサンプルで申し訳ありませんが、誰かが助けてくれることを願っています。

#####$$$$$更新$$$$$$####### SQLスクリプトは問題ではないようです。間隔を24のままにしましたが、SQLワークベンチでSQLスクリプトを実行すると、正しい結果が読み込まれます。

ただし、上記のスクリプトから実行すると、最初の要素は常に最後の要素と等しくなります。IE。(minpressure [0] == minpressure [23])

それ以上の考えはありますか?

4

1 に答える 1

3

このようなxmlファイルを作成するのはどうですか?

$dom = new DOMDocument(); 
$root = $dom->createElement( "weatherdata" );
$dom->appendChild( $root );  
$item = $dom->createElement( 'item', "" );  
$root->appendChild($item);

$maxpressure = $dom->createElement( 'pressuremaxhourly', implode(",",$maxpressure) );  
$item ->appendChild($maxpressure);
$minimumpressure = $dom->createElement( 'pressureminhourly', implode(",",$minpressure));  
$item ->appendChild($minimumpressure);
$dom->formatOutput = true;
$dom->save('Hourly.xml') 
于 2012-05-07T20:56:19.453 に答える