überfuzzMedlem sedan apr. 2006409 inlägg Jag har array-bekymmer. När jag hämtar dagar resp veckor från en sql-tabell vill jag echo:a ut hur många sql-rader som har exakt samma dag och vecka. Alltså, om det finns 5 rader som har dag 3 och vecka 10, vill jag att det ska echo:a ut 5 på platsen för dag 3 vecka 10. Mitt försök blev inte mycket för världen. Det verkar som att inget sparas utan bara skrivs över.
$user=$_SESSION['sess_user'];
$month=date("m");
$sql = mysql_query("SELECT day,week FROM resultat WHERE month = $month AND user = $user") or die(mysql_error("Det gick inte att nå tabellen 'reslutat'"));
while($resultat = mysql_fetch_array($sql)){
$day = $resultat['day'];
$week = $resultat['week'];
$result_day = array();
$result_day[$week][$day] = 1 + $result_day[$week][$day];
foreach ($result_day as $a) {
foreach ($a as $b) {
echo "$b\n";
}
}
}
print_r ($result_day);
print_r ger följande: Array ( [47] => Array ( [5] => 1 ) )
$user=$_SESSION['sess_user'];
$month=date("m");
$sql = mysql_query("SELECT day,week FROM resultat WHERE month = $month AND user = $user") or die(mysql_error("Det gick inte att nå tabellen 'reslutat'"));
$result_day = array();
while($resultat = mysql_fetch_array($sql)){
$day = $resultat['day'];
$week = $resultat['week'];
$result_day[$week][$day]++;
}
foreach ($result_day as $week => $a) {
foreach ($a as $day => $b) {
if ($b > 1){
echo "W: $week D: $day Num: $b\n";
}
}
}
Saker är totalt felplacerade i din kod. Du initierar om arrayen i varje runda, med $result_day = array(); och du försöker skriva ut innan du gått igenom alla element. Din print_r skriver dag 5 i vecka 47, vilket är det sista som hämtas ur databasen, och därmed det enda som överlever.
Koden ovan är otestad men bör fungera.
überfuzzMedlem sedan apr. 2006409 inlägg Gud vad genant. Nu tror jag att jag ska gå och ta lite gift.
Tack!