Grejen är att jag inte vet hur många veckor det finns i databasen och det kan bli ganska många och då blir det ju en väldig massa frågor till databasen.
Jag hade tänkt mig ett sätt så att jag kan hämta all data från databasen och sedan räkna ut medelvärdet för varje vecka.
Om du ställer den frågan så blir det bara en post som resultat.
$result = mysql_query ("SELECT avg(Status) as snitt from tabell WHERE Vecka='12'");
$row = mysql_fetch_array($result);
echo Snittet för vecka 12 är " . $row["snitt"] . "timmar <br>";
Däremot om du har
$result = mysql_query ("SELECT vecka,avg(Status) as snitt from tabell group by vecka");
while ($row = mysql_fetch_array($result)) {
echo Snittet för vecka " . $row["vecka"] . " är " . $row["snitt"] . "timmar <br>";
}
så får du en post per vecka.
------------------ essentitia preter non sans multiplicandum
Det gick lite för fort där i mitt förra inlägg, men det ordnade sig.
Limit och order by borde vara alldeles utmärkt för paging
Skicka sidnummer med querystring
//räkna ut antal sidor
$sql = "select count(distinct vecka) as veckor from tabellen";
//...
if (!isset($pageno)) $pageno = 1;
if ( $pageno == "" ) $pageno = 1;
$pagesize = 20;
$offset = $pagesize*($pageno-1);
$sql = "SELECT vecka,avg(Status) as snitt from tabell group by vecka order by vecka limit $offset,$pagesize");
//etc
------------------ essentitia preter non sans multiplicandum
Det är inte "min dag" i den här tråden :)
Jag skulle förslå en viss omstrukturering... stoppa in den första veckan du vill visa info för i querystring-variabeln first_display, så att foo.php?first_display=141 visar veckorna 141 till 150, eller något.
define('STEP_WEEK', 10); // antal veckor per sida
$last_display = $first_display + STEP_WEEK - 1; // sista veckan att visa data för
$conn = mysql_connect('databasserver');
mysql_select_db('tors_databas');
$res = mysql_query('SELECT MIN(vecka) as first, MAX(vecka) AS last FROM tabell'); // plocka fram första resp. sista veckan
$row = mysql_fetch_assoc($res);
mysql_free_result($res);
define('FIRST_WEEK', $row['first']);
define('LAST_WEEK', $row['last']);
# steg 1: visa data
$weekAvgs = mysql_query("SELECT vecka, AVG(status) FROM tabell WHERE vecka BETWEEN $first_display[/red] AND $last_display", $conn);
while($row = mysql_fetch_assoc($weekAvgs)){
# skriv ut raden
}
mysql_free_result($weekAvgs);
mysql_close($conn);
# steg 2: skriv ut navigeringshjälp
for($i = FIRST_WEEK; $i <= LAST_WEEK; $i += STEP_WEEK){
if($i != FIRST_WEEK)
echo ', ';
$linkDesc = ($i == LAST_WEEK) ? $i : $i . '-' . min($i + STEP_WEEK - 1, LAST_WEEK);
if($i >= $first_display && $i <= $last_display)
echo $linkDesc;
else
echo "<a href='$PHP_SELF?first_display=$i'>$linkDesc</a>"
}
Typ ;)
------------------ You can't be young forever, but you can be immature indefinitely.
$weekAvgs = mysql_query("SELECT vecka, AVG(status) FROM tabell WHERE vecka BETWEEN $first_display AND $last_display group by vecka", $conn) or die (mysql_error());
------------------ essentitia preter non sans multiplicandum