17. november 2005 - 18:32Der er
16 kommentarer og 1 løsning
Sortering af MySQL resultat
Hej,
Jeg har et script der ser på en fødselsdagsdato (F.eks. 24-12-1983) og udskriver hvor mange dage der er til fødselsdagen og hvor gammel personen bliver. (F.eks.: Peter bliver 14 år om 180 dage)
Tabellen med oplysningerne hedder users og fødselsdagen er delt op således: fosdag | fosmaaned | fosaar
Scriptet fungerer fint, men jeg kunne godt tænke mig, at resultatet blev sorteret, så den person der har fødselsdag tættest på, står først. F.eks.: Peter bliver 14 år om 180 dage Helen fylder 35 år om 200 dage Niels fylder 20 år om 250 dage
Det kan du ikke lave via en sql, du skal smide dit resultat i et array. Og du for at gøre det, skal du rette din funktion, da den "bare" returnere en streng.
Men noget i denne stil: array(navn, alder, dage_tilbage); Så kan du lave en sort på dage_tilbage.
Hej igen og tak for jeres foreslag! Jeg har prøvet at lave noget array-sjov. Det virker fint nok på min egen computer, men når jeg uploader det, bliver sorteringen blandet rundt og virker ikke. Det er sikkert noget emd at jeg sorterer alfabetisk, men ved ikke hvordan jeg ændre dette til numerisk:
Hvis det er en hjælp, kan jeg oplyse om, at $row[nick] kan være f.eks. "Peter" Og birthDay($row[fosdag],$row[fosmaaned],$row[fosaar]) kan være f.eks "fylder 14 år om 180 dage"
Derfor: echo "$key $val\n<br>"; //Peter fylder 14 år om 180 dage
Okay tak, men kan stadig ikke finde ud af det? Hvordan sorterer jeg efter $daysleft? Har siddet og tumlet med det to timer nu :( Ved heller ikke hvilket sort-funktion jeg skal bruge. Har prøvet php.net
Funktionen: if ($daysLeft > 1) $VAR= array("year" =>$age,"days"=>$daysLeft); else if ($daysLeft == 1) $VAR= "fylder " . $age . " år <b>imorgen</b>"; else if ($today == $future) $VAR= "fylder " . $age . " år <b>idag!</b>"; else $VAR="Fejl!"; RETURN $VAR;
Arrayet: $bdays=mysql_query("SELECT * FROM users WHERE gruppe='$gruppe' AND fosmaaned!=''")or DIE(mysql_error()); while($row=mysql_fetch_assoc($bdays)){ if(birthDay($row[fosdag],$row[fosmaaned],$row[fosaar])!="Fejl!"){ $fruits[$row[nick]] = birthDay($row[fosdag],$row[fosmaaned],$row[fosaar]); } } asort($fruits); foreach ($fruits as $key => $daysLeft) { echo "$key har fødselsdag om <b>$daysLeft</b> dage\n<br>"; }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.