Avatar billede jammerlab Nybegynder
13. december 2006 - 18:38 Der er 16 kommentarer og
2 løsninger

While loop med årstal

Har en mysql database der inde holder en masse årstal og flere hvor samme årstal går igen... nu skal jeg lave nogle statestiker så jeg har behov for en while loop der vælger laveste årstal og så ellers arbejder derud af indtil den rammer det sidste... og lig mækre til jeg sagde der er flere indlæg med hvor årstallet går igen :) Jeg kan ikke lige lurer hvordan jeg for den sat iværk..

På forhånd tak.
Avatar billede zynzz Praktikant
13. december 2006 - 19:27 #1
Altså den må ikke udskrive det samme årstal 2 gange ?
Avatar billede jammerlab Nybegynder
13. december 2006 - 19:35 #2
Netop... den skal bare kører ved 2004-2005-2006 osv og ikke 2004-2004-2004-2005 osv. :)
Avatar billede intenz Novice
13. december 2006 - 19:41 #3
Det kommer lidt an hvad den skal udskrive. Er det bare antallet der er for hvert år, eller er det f.eks. alle overskrifter for et år eller andet tekst?

Hvis det bare er antal, kan du bruge f.eks.:
select count(*) as antal group by aar
Og så hente antal variablen ud.

Hvis du skal du skrive tekst kan du bruge:
$res = mysql_query("select * from DB order by aar asc");
$aar_temp = "";
while ($row = mysql_fetch_assoc($res)) {
if ($aar_temp != $row['aar']) {
print "$row['aar']"; // skriv kun år når det er nyt
}

// skriv tekst

$aar_temp = $row['aar'];
}
}
Avatar billede intenz Novice
13. december 2006 - 19:42 #4
hov, der var lige et } for meget til sidst.
Avatar billede jammerlab Nybegynder
13. december 2006 - 19:44 #5
Den skal bare regne en masse når hvert år kører i while loopen det skal jeg nok selv rode med :) Tester den lige
Avatar billede jammerlab Nybegynder
13. december 2006 - 19:47 #6
Hm siden dør bare... prøvede at smide en MySQL error på men den siger intet

$res = mysql_query("select * from kalender_aftale order by aar asc")or die (mysql_error());
$aar_temp = "";
while ($row = mysql_fetch_assoc($res)) {
if ($aar_temp != $row['aar']) {
print "$row['aar']"; // skriv kun år når det er nyt
}

echo "lala";

$aar_temp = $row['aar'];
}
Avatar billede intenz Novice
13. december 2006 - 19:50 #7
Det burde den ikke.
Du har feltet aar i din database? (og ellers burde mysql self. lave fejl, men alligevel)
Avatar billede jammerlab Nybegynder
13. december 2006 - 20:18 #8
ah my bad... men har rettet den og den gør det samme :)

$res = mysql_query("select * from kalender_aftale order by start_aar asc")or die (mysql_error());
$aar_temp = "";
while ($row = mysql_fetch_assoc($res)) {
if ($aar_temp != $row['start_aar']) {
print "$row['aar']"; // skriv kun år når det er nyt
}

echo "lala";

$aar_temp = $row['start_aar'];
}
Avatar billede intenz Novice
13. december 2006 - 20:20 #9
Det er bare underligt.
Hvis der er data i din database, burde den uanset hvad køre while igennem og udskrive "lala" for hver række.
Avatar billede jammerlab Nybegynder
13. december 2006 - 20:21 #10
har prøvet at smide den i toppen af det script koden skal ligge i men den stopper stadig alt... så snart jeg fjerne while loopen så virker alt igen
Avatar billede intenz Novice
13. december 2006 - 20:34 #11
prøv evt at ændre den til:

$res = mysql_query("select * from kalender_aftale order by start_aar asc")or die (mysql_error());
$num = mysql_num_rows($res);
print "$num resultater<br>";
$aar_temp = "";
$count = 0;
while ($row = mysql_fetch_assoc($res)) {
if ($aar_temp != $row['start_aar']) {
print "$row['aar']"; // skriv kun år når det er nyt
}
$count++;

echo "lala";

if ($count > 10) {
exit;
}

$aar_temp = $row['start_aar'];
}


Så kan du se om den overhoved vil udskrive noget (bare de 10 første)
Avatar billede jammerlab Nybegynder
13. december 2006 - 20:44 #12
Hehe niks har tømt hele filen og prøvet at kører den jeg ved ikke lige hvorfor den bare dør :P
Avatar billede zynzz Praktikant
13. december 2006 - 22:18 #13
$result = mysql_query("SELECT * FROM kalender_aftale ORDER BY start_aar ASC");
$gammel_aar = "";
while ($data = mysql_fetch_assoc($result)){
 
if ( $gammel_aar != $data['start_aar'] ){
echo $data['start_aar'];
$gammel_aar = $data['start_aar'];
  }
}
Avatar billede jammerlab Nybegynder
14. december 2006 - 00:55 #14
Hehe det virkede ja :)
Avatar billede zynzz Praktikant
14. december 2006 - 16:25 #15
Hvilken en fik du til at virke ?
Avatar billede jammerlab Nybegynder
14. december 2006 - 18:49 #16
$result = mysql_query("SELECT * FROM kalender_aftale ORDER BY start_aar ASC");
$gammel_aar = "";
while ($data = mysql_fetch_assoc($result)){
 
if ( $gammel_aar != $data['start_aar'] ){
echo $data['start_aar'];
$gammel_aar = $data['start_aar'];
  }
}
Avatar billede zynzz Praktikant
15. december 2006 - 16:07 #17
Her får du svar for den så..., men du bare bare dele med mig og itenz....
Avatar billede jammerlab Nybegynder
16. december 2006 - 13:27 #18
Tak for hjælpen begge 2 :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester