Pampaxius Skrevet 17. mars 2004 Del Skrevet 17. mars 2004 hei! har laget eit lite script som henter informasjon fra en mysql database og putter det inn i ein tabell. jeg bruker "for" til å lage en loop for å få med alt i tabellen i databasen. scriptet funker fint, men siden dette er ett "nyhetsarkiv" ønsker jeg at "for" funksjonen blir reversert, eller med andre ord går i motsatt rekkefølge sånn at det siste innlegget kommer øverst. noen som vet hvordan jeg gjør dette? her er koden på scriptet mitt: <table width="500"> <? $hostname = "localhost"; $user = "********"; $password = "********"; $db = "********"; $connection = @mysql_connect($hostname, $user, $password) or die("Får ikke kontakt med databasen."); @mysql_select_db($db); $sql_result = mysql_query("SELECT * FROM nyhet"); $num_links = mysql_num_rows($sql_result); for ($i=0; $i<$num_links; $i++) { $myrow = mysql_fetch_array($sql_result); $overskrift = $myrow["overskrift"]; $dato = $myrow["dato"]; $nyhet = $myrow["nyhet"]; echo(' <tr> <td width="350" height="20" valign="top"> <font color="#FFFFFF"><b> '); print("$overskrift"); echo(' </b></font> </td> <td width="150" height="20" valign="top"> <font color="#FFFFFF"><b> '); print("$dato"); echo(' </b></font> </td> </tr> <tr> <td width="500" valign="top" colspan="2"> <font color="#FFFFFF"> '); print("$nyhet"); echo(' </font> </td> </tr> <tr> <td width="500" height="20" valign="top" colspan="2"> <hr> </td> </tr> '); } ?> </table> håper det er noen som har peiling og gidder å hjelpe meg !! mvh kristian Lenke til kommentar
???????? Skrevet 17. mars 2004 Del Skrevet 17. mars 2004 (endret) Hvorfor bruker du "for" der? slik snur du den: for ($i=$num_links; $i>0; $i--) - men det hjelper ikke mye da du fortsatt henter resultatet på samme måte. Legg til ORDER BY id DESC i query'en. Endret 17. mars 2004 av ???????? Lenke til kommentar
audunr Skrevet 17. mars 2004 Del Skrevet 17. mars 2004 Du trenger ikke reversere loopen, du trenger bare å endre SQL-koden din. Nå har du: SELECT * FROM nyhet I stedet kunne du ha skrevet: SELECT * FROM nyhet ORDER BY ID ASC Om du vil ha dette i motsatt rekkefølge, så bruker du: SELECT * FROM nyhet ORDER BY ID DESC Du må selvsagt bytte ut ID med navnet på den kolonnen du vil sortere etter. Hvis kolonnen ikke heter ID, da. MVH Audun Lenke til kommentar
Gilbert Skrevet 17. mars 2004 Del Skrevet 17. mars 2004 det er vel igrunn dato han burde sortere etter... SELECT * FROM nyhet ORDER BY dato DESC Lenke til kommentar
Pampaxius Skrevet 17. mars 2004 Forfatter Del Skrevet 17. mars 2004 Hei! takker for alle svar! var akkurat det jeg lette etter! ett lite tilleggsspørsmål siden jeg var så godt igang. viss jeg vil kun hente ut den rekken med informasjon fra tabellen som er nyest hva gjør jeg da? (nå tenker jeg når rekkene blir sortert etter dato sånn som fjartan foreslo).. hilsen kristian Lenke til kommentar
???????? Skrevet 17. mars 2004 Del Skrevet 17. mars 2004 Du har alt i en for funksjon nå, du kan begrense den til å bare kjøre en gang, eventuelt ta bort hele for - for da hentes kun den første. Eller det enkleste du kan gjøre er å legge til LIMIT 1 i query'en. Dersom databasen er stor burde du alltid legge til limit slik at sql serveren slipper å hente så mye data. Lenke til kommentar
Pampaxius Skrevet 17. mars 2004 Forfatter Del Skrevet 17. mars 2004 flotte greier! takk skal du ha Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå