Probleme mit sql-query auslesen der letzten 7 Tage

spikaner

Quereinsteiger @ php
Ich will aus der Datenbank Preise der letzten 7 Tage von verschiedenen Orten herausholen , die Preise werden durch einen cronjob täglich eingetragen, aber ich bekomme beim auslesen nur 1 Tag zurück (den letzten), wo ist mein denkfehler ?
PHP:
$region[0] = "Jita";
$region[1] = "Yuzier";
$region[2] = "Amarr";
$region[3] = "Hek";

for ($i = 0; $i < count ($region); $i++)
{
	$sql = "
	SELECT 
		*
	FROM
		mineraliean
	WHERE
		Ort = '".$region[$i]."'
	ORDER BY
		Time
	DESC
	LIMIT 0,7
	";
	$result = mysql_query($sql) or die(mysql_error());
	while($dat=mysql_fetch_array($result))
    	{
		$data[$i]['preis'] = $dat[$mineral];
		$data[$i]['ort'] = $dat['Ort'];
	}
}
ausgegeben bekomme ich
Code:
Array
(
    [0] => Array
        (
            [preis] => 3.15
            [ort] => Jita
        )

    [1] => Array
        (
            [preis] => 2.90
            [ort] => Yuzier
        )

    [2] => Array
        (
            [preis] => 3.24
            [ort] => Amarr
        )

    [3] => Array
        (
            [preis] => 3.18
            [ort] => Hek
        )

)
Irgendwie sehe ich heute den Wald vor lauter Bäumen nicht :(

mfg
 
LIMIT 7 limitiert nicht die anzahl der unterschiedlichen wheres sondern die anzahl der datensätze.

Du musst also nur das limit weg machen und die where bedingung erweiters:
für mysql timestamp/datetime
SQL:
SELECT * FROM table WHERE ort = .... AND time > DATE_SUB(NOW(), INTERVAL 7 DAY) ORDER BY time DESC
respektive für unix time
SQL:
SELECT * FROM table WHERE ort = .... AND time > (UNIX_TIMESTAMP(NOW())-(60*60*24*7)) ORDER BY time DESC
Leider schreibst du nicht welches datumsformat deine time spalte hat


Ausserdem solltest du überprüen ob deine datenbank auch die gewünschten daten enthält. sonst kann sie natürlich nix ausgeben.
 
Zuletzt bearbeitet:
joo, ausserdem sollte ich die Daten in der while nicht überschreiben :D soweit so gut jetzt ich bekomme jetzt ein array zurück was mich halbwegs glücklich macht, jetzt müsste ich nur das array noch "spiegeln" und falls keine 7 werte vorhanden sind von vorne mit 0 auffüllen.
bsp ich bekomme zurück array(4,3,2,1) daraus soll jetzt ein array (0,0,0,1,2,3,4) werden , wie stelle ich das am besten an ?

mfg
 
PHP:
$test = array(4,3,2,1);
$totalcount = 7;

for($i = count($test); $i < $totalcount; $i++)
    $test[] = 0;
$test = array_reverse($test);
 
Zurück