17. oktober 2004 - 23:21Der er
25 kommentarer og 1 løsning
Hent nummer X sorteret efter DATETIME
Hej.
Jeg har et lille problem. Min tabel ser således ud, den skal indeholde en euversion og en dkversion og en plversion af noget tekst, og så en datetime (rimeligt åbenlyst :)):
id int(5) auto_increment PRIMARY KEY, euver text, dkver text, plver text, dato datetime
Så vil jeg ellers hente 5 ind på en side af gangen. Men jeg vil ikke bruge id'et, da det er auto_increment - og der derfor kan være huller, hvis en post er blevet slettet. Jeg har så skrevet dette:
function getStoriesCount() { openDatabase(); $result = mysql_num_rows(mysql_query("SELECT * FROM cempstories")); return $result; }
og funktionen printStory ser sådan her ud:
function printStory($nummer, $language) { openDatabase(); $languagever = $language."ver"; $result = mysql_query("SELECT $languagever FROM cempstories ORDER BY dato DESC LIMIT $nummer, 1") or die(mysql_error()); $row = mysql_fetch_row($result) or die(mysql_error()); return $row[$languagever]; closeDatabase(); }
Det er så denne smukke SQL sætning, der skulle sortere efter datetime og give mig nummer x i denne sortering... Men det virker ikke :( Jeg får ingen fejl, men intet resultat. Det sidste html på siden bliver nemlig:
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Men du gør det nu osse mere indviklet end du behøver. Du kan jo nøjes en forespørgsel for at hente de 5 nyeste rækker, istedet for at hente alle rækker først.
$result = mysql_query("SELECT $languagever FROM cempstories ORDER BY dato DESC LIMIT 5") or die(mysql_error()); while ($row = mysql_fetch_assoc($result)) { // udskriv de 5 resultater }
har $language i printStory($nummer, $language) en værdi og skal det ikke være: print printStory($i,$language); ellers printer du vel ikke det den returnerer
$start = isset($_GET['tal']) ? $_GET['tal'] : 0; $result = mysql_query("SELECT $languagever FROM cempstories ORDER BY dato DESC LIMIT $start,5") or die(mysql_error());
function printStory($nummer, $language) { print "<script>alert(\"hva så der\");</script>"; openDatabase(); $languagever = $language."ver"; $result = mysql_query("SELECT $languagever FROM cempstories ORDER BY dato DESC LIMIT $nummer, 1") or die(mysql_error()); $row = mysql_fetch_assoc($result) or die(mysql_error()); return "HEJSA"; //$row[$languagever]."hejsa"; closeDatabase(); }
Jeg kan godt se ideen, naturligvis. Det er lidt plat jeg åbner databasen, henter een og lukker igen 5 gange... Men jeg vil gerne have det som funktioner i sit eget dokument, som jeg har det nu :) Så kan min printStory evt. returnere et array med 5 historier i stedet for ...
function printStory($nummer, $language) { $languagever = $language."ver"; $result = mysql_query("SELECT $languagever FROM cempstories ORDER BY dato DESC LIMIT $start,5") or die(mysql_error()); while ($row = mysql_fetch_row($result)) { $arr[] = $row[0]; } return $arr; }
function printStory($nummer, $language) { $languagever = $language."ver"; $result = mysql_query("SELECT $languagever FROM cempstories ORDER BY dato DESC LIMIT $nummer,5") or die(mysql_error()); while ($row = mysql_fetch_row($result)) { $arr[] = $row[0]; } return $arr; }
Ps: Jeg vil anbefale at du skiller dig af med dit font tag og bruge color: blue; enten i din class eller inline. <font> er ikke længere en del af html.
Nu kommer der tekst fra databasen på siden (endelig) Det er fordi min getStoriesCount returnerer 2, og det er jo rigtigt. Det er fordi jeg før gik "baglæns" fra dette tal. Nu har jeg set at du satte den til 0, beklager at jeg ikke så det tidligere. og i din næstseneste kommentar har du naturligvis også ret i at $i skal være $tal (du har dog omdøbt den til $start)... <font> tagget er midlertidigt, jeg har ikke lavet css'en endnu, da dette standsede mig helt :)
Jeg tror det kører nu - så endnu en gang tak for hjælpen, trods forvirringen :)
Når jeg så går til næste liste af "historier" og sender tallet 5 med i URL'en skal den vise 6-10 i rette sortering (efter dato DESC uanset hvad). Men det tror jeg også den gør.
Du må endelig svare :) Og tak for hjælp og INFO :)
Beklager det tog så lang tid. Jeg havde næsten glemt det :)
Synes godt om
Ny brugerNybegynder
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.