2012-05-07 4 views
2

Во-первых, у меня нет опыта с PHP. У меня есть 2 массива - минимальное давление и максимальное давление. Они оба доступа к данным из базы данных и создать простой файл XML, как вы можете увидеть ниже: -PHP - проблема с элементом массива

<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»). Эти массивы перезаписываются каждые полчаса с новыми значениями, но проблема все еще существует. Вот код, я использую: -

$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') 

Примечание: Я проверил данные в базе данных, и это правильно, так что ясно, что сценарий является проблемой. Извините за длинный вопрос и образец кода, надеюсь, кто-то может помочь.

##### $$$$$ $$$$$$ Update ####### Кажется SQL скрипт это не проблема. Я оставил интервал в 24, и когда я запускаю SQL-скрипт в своем рабочем столе SQL, он загружает правильные результаты.

Однако, когда он запускается из сценария выше, первый элемент всегда равен последнему элементу. IE. (min pressure [0] == min pressure [23])

Любые дальнейшие мысли?

+0

В SQL являются возвращающегося правильные результаты и массивы содержат правильные элементы правильно? Вы можете проверить это? –

+0

Хорошо, я запустил SQL, и они возвращают тот же результат, что и выше, так что это, очевидно, SQL-скрипт ... Опять же, не очень опытный SQL, но у меня есть чувство «час - INTERVAL 24 часа», должно быть вместо 23? – mmmbaileys

+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') 
+0

Я использую выше, чтобы создать файл xml сейчас, поскольку это не так долго, но это все еще не помогает моей проблеме. Я обновил свой вопрос, не могли бы вы посмотреть? благодаря – mmmbaileys