Avatar billede jalmer Nybegynder
01. juli 2004 - 14:48 Der er 7 kommentarer

Sortering af id af seneste poster

Jeg har et lille nyhedssystem som jeg gerne vil have modificeret lidt, så det fylder en smule mindre på skærmen. Som det er nu henter den blot nyhederne fra db'en i en lang (nærmest endeløs) række. Men jeg vil gerne have ændret så den kun henter den seneste nyhed frem i stort perspektiv (altså med billede og indledning osv.) og så henter de sidste fx 10 seneste nyheder blot med en titel ned i nogle rækker. Man skal vel på en eller anden måde få systemet til "skrive ned" hvad den første nyhed der bliver vist har for en id, og så tage de 10 seneste nedenunder, og så finde deres id, ved at sige id - 1. Lidt rodet snak, men jeg kan ikke helt tænke mig til hvordan jeg gør det.
Min kode til det jeg har nu:
$sql = "select * from tgvnyheder ORDER BY id DESC limit 0,2";
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query)) {
extract($row);
echo'
<table cellpading="0" cellspacing="0" border="1" align="left" width="50%" height="100">
<tr>
  <td><p align="top">Nyhed, '.$platform.'</p>
  </td>
</tr>
<tr>
  <td><p align="top"><a href="vis_nyhed.php?id='.$id.'">'.$titel.'</a><br>'.$undertitel.'</p>
  </td>
</tr>
</table>
';

Det var den korte version, men jeg er sikker på der er nogen der kan få noget ud af den alligevel :)
Avatar billede jakobdo Ekspert
01. juli 2004 - 14:54 #1
Du kunne jo lave noget i stil med:

SELECT * FROM tgvnyheder ORDER BY id DESC LIMIT 11
(antager at ID er størst på den nyeste nyhed)

Så kan du jo lave Skriv nyhed med størst ID ud her....

Løb resten igennem her og udskrig overskrift...
Avatar billede codebase Praktikant
01. juli 2004 - 14:54 #2
$sql = "select * from tgvnyheder ORDER BY id DESC limit 0,10"; // henter de 10 nyeste, start fra 1. række.

$sql = "select * from tgvnyheder ORDER BY id DESC limit 10,10"; // henter de 10 nyeste, start fra 10. række.
Avatar billede jaw Nybegynder
01. juli 2004 - 14:56 #3
$sql = "select * from tgvnyheder ORDER BY id DESC limit 1";
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query)) {
$id1 = $id;
extract($row);
echo'
<table cellpading="0" cellspacing="0" border="1" align="left" width="50%" height="100">
<tr>
  <td><p align="top">Nyhed, '.$platform.'</p>
  </td>
</tr>
<tr>
  <td><p align="top"><a href="vis_nyhed.php?id='.$id.'">'.$titel.'</a><br>'.$undertitel.'</p>
  </td>
</tr>
</table>
';



$query = mysql_query("SELECT *,CONCAT(LEFT(felt_med_nyhed,150),'...') as kort_tekst FROM tvgnyheder WHERE id != '$id1' ORDER BY id DESC") or die(mysql_error());
while($row = mysql_fetch_array($q)) {
echo $row['kort_tekst'];


Vil give dig den sidste nye nyhed med hele svineriet, og så de næste nyheder udtrykket så man kan se 150 tegn og så evt. lave dem klikbare hvis man er mere interesserede...
Avatar billede codebase Praktikant
01. juli 2004 - 14:56 #4
$sql = "select * from tgvnyheder ORDER BY id DESC limit 111,10"; // henter de 10 nyeste, start fra 111. række.
10,10 kan jo godt blive misforstået. :)
Avatar billede jaw Nybegynder
01. juli 2004 - 14:56 #5
skal lige byttes om på de her 2 linier:
$id1 = $id;
extract($row);
Avatar billede jaw Nybegynder
01. juli 2004 - 15:01 #6
Tror faktisk du kan nøjes med:
$query = mysql_query("SELECT *,CONCAT(LEFT(felt_med_nyhed,15),'...') as kort_tekst FROM tvgnyheder WHERE id != '$id1' ORDER BY id DESC") or die(mysql_error());
$query = mysql_query($sql);
while ($row = mysql_fetch_array($query)) {
extract($row);
if(!$storid) {
//her udskriver vi alt
$storid = $id;
}
else{
echo'
//her bruger vi $kort_tekst
';
}
Avatar billede jalmer Nybegynder
01. juli 2004 - 15:58 #7
Superb! Det funger! Brugte codebase's eksempel, da det var omringet af mest simpelthed. Smid endelig et svar!
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