Avatar billede ppb Nybegynder
31. marts 2007 - 21:19 Der er 9 kommentarer og
1 løsning

Nyheds arkiv

Jeg har en nyhedsside, hvor de fem nyeste nyheder bliver vist fra min database.
På min arkiv side, skal alle nyheder vises, dog minus de fem nyeste.
Hvordan gør jeg det?

Mit script til, at vise nyhederne fra databasen er følgende:
$nyhed = mysql_query("SELECT * FROM nyhedssystem ORDER BY id DESC limit 5") or die(mysql_error());
Avatar billede sjh Nybegynder
01. april 2007 - 02:32 #1
<?php
  $sqlResult = mysql_query("SELECT id FROM nyhedssystem ORDER BY id DESC LIMIT 5;");
  if ($sqlResult)
  {
    unset($notid);
   
    while (list($id) = mysql_fetch_row($sqlResult))
    {
      $notid .= "$id,";
    }
   
    if ($notid)
    {
      $notid = substr($notid, 0, -1);
      $nyhed = mysql_query("SELECT * FROM nyhedssystem WHERE id NOT IN ($notid); ORDER BY id DESC;");
      /*
        ..osv..
        .......
        .......
      */
    }
  }
?>
Avatar billede sjh Nybegynder
01. april 2007 - 02:54 #2
hvis du bruger MySQL 5.. så kan du gøre sådan:

$nyhed = mysql_query("SELECT * FROM nyhedssystem WHERE id NOT IN (SELECT id FROM nyhedssystem ORDER BY id DESC LIMIT 5);");
Avatar billede sjh Nybegynder
01. april 2007 - 03:38 #3
ha ha LIMIT 5 virker ikke under en subselect endnu.. men det kommer vel med på et tidspunkt.. har lige tested det i MySQL 5.2.. :(

så du skal bare glemme : Kommentar: sjh 01/04-2007 02:54:20
Avatar billede sjh Nybegynder
01. april 2007 - 04:07 #4
en lille fejl.. fjern ";" efter ($notid);

Lav den her om..
$nyhed = mysql_query("SELECT * FROM nyhedssystem WHERE id NOT IN ($notid); ORDER BY id DESC;");

Så den ser sådan ud..
$nyhed = mysql_query("SELECT * FROM nyhedssystem WHERE id NOT IN ($notid) ORDER BY id DESC;");
Avatar billede ppb Nybegynder
01. april 2007 - 18:17 #5
Hmmm...kan ikke få det til at virke. Kan heller ikke gennemskue dit script.
Der skal vel ikke stå "LIMIT 5".
Hvad mener du med osv...
Avatar billede sjh Nybegynder
01. april 2007 - 19:08 #6
hvad er det som ikke virker.. du skal jo have mere end 5 nyheder før du kan se det..

<?php
  /* Her henter vi de sidste 5 som ikke skal udskrives. (dog minus de fem nyeste) */
  $sqlResult = mysql_query("SELECT id FROM nyhedssystem ORDER BY id DESC LIMIT 5;");
  while (list($id) = mysql_fetch_row($sqlResult))
  {
    /* Her opsamler vi de ID som ikke skal udskrives */
    $notid .= "$id,";
  }
  $notid = substr($notid, 0, -1);

  /* Nu kan vi udskrive alle nyheder. (dog minus de fem nyeste) */
  $nyhed = mysql_query("SELECT * FROM nyhedssystem WHERE id NOT IN ($notid); ORDER BY id DESC;");
?>
Avatar billede ppb Nybegynder
01. april 2007 - 19:50 #7
Jeg har også mere end fem nyheder.
Nu har jeg prøvet at kopier scriptet ind på min side igen, men det virker ikke.
Jeg får bare beskeden "ingen nyheder"
Avatar billede sjh Nybegynder
02. april 2007 - 04:17 #8
ahhh nu fik jeg også kopiret den samme fejl igen.. -> fjern ";" efter ($notid);

nu køre du vel også den som opsamler ID ? ellers virker det ikke..
Avatar billede ppb Nybegynder
02. april 2007 - 16:22 #9
Så virker det. Burde selv have set det. Du havde jo skrevet det tidligere.

Tak for hjælpen.
Avatar billede sjh Nybegynder
02. april 2007 - 17:58 #10
Selv tak ;)
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