---
title: "Lista inlägg i en dropdown meny"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/129214-lista-inlägg-i-en-dropdown-meny"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "mr.mainline"
published: "2005-05-31T14:03:53.000Z"
updated: "2005-06-08T19:33:35.000Z"
replies: 10
views: 359
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/129214-lista-inlägg-i-en-dropdown-meny"
---

# Lista inlägg i en dropdown meny

## #1 — mr.mainline, 2005-05-31T14:03Z

Jag vill ha på min sida en dropdown meny, där jag vill att inlägg från min gästbok listas.

ex:
inlägg 1-50
inlägg 51-100

Hämtade från en databas.

Permalänk: https://www.webforum.nu/p/129214

## #2 — Duffer, 2005-06-01T13:31Z

Gör en do-loop som kollar finns det fler inlägg än 50\*1, finns det fler än 50\*2 så gör du en utskrift för varje varv...

DONE

Permalänk: https://www.webforum.nu/p/1622712

## #3 — mr.mainline, 2005-06-01T13:58Z

Thanks, ska testa det.

Permalänk: https://www.webforum.nu/p/1622726

## #4 — mr.mainline, 2005-06-02T13:26Z

Duffer eller någon annan...,kan jag få lite kod som jag kan börja med?

Permalänk: https://www.webforum.nu/p/1623053

## #5 — mr.mainline, 2005-06-05T21:40Z

Snälla någon....

Permalänk: https://www.webforum.nu/p/1624553

## #6 — Matte, 2005-06-06T07:12Z

T.ex.

```php
// Antal poster per sida
$limit = 50;

// Beräkna antalet poster
$sql = "SELECT COUNT(*) FROM guestbook";
$result = mysql_query($sql);
$post_num = mysql_result($result, 0);

// Beräkna antalet sidor
$pages_num = ceil($post_num / $limit);

// Hämta önskat sidnummer ur URL-en. Kontrollera
$page = isset($_GET['page']) ? intval($_GET['page']) : 1;
$page = $page > $pages_num || $page < 1 ? 1 : $page;

// Beräkna startpost för SQL-frågan
$offset = ($page - 1) * $limit;

// Gör options
$options = '';
for ($i=1; $i<=$pages_num; $i++) {
   $start = ($i -1) * $limit +1;
   $stop  = $i < $pages_num ? $start + $limit-1 : $post_num;
   $selected = $i == $page ? ' selected="selected"' : '';
   $options .= "<option value=\"$i\"$selected>$start - $stop</option>\n";
}

// Skriv ut din drop-down
echo '
<form action="'.$_SERVER['PHP_SELF'].'" method="get">
<select name="page" onchange="this.form.submit()">
'.$options.'
</select>
<noscript><input type="submit" value="Visa" /></noscript>
</form>
';

// Kör SQL-fråga för att hämta aktuell sida
$sql = "SELECT * FROM guestbook ORDER BY datum DESC LIMIT $offset, $limit";
$result = mysql_query($sql);
```

Permalänk: https://www.webforum.nu/p/1624607

## #7 — mr.mainline, 2005-06-07T15:05Z

Får inte riktigt till det, om ni kollar på <http://www.freddeholm.com/forum.php> så till vänster under bilden finns dropsdown menyn som ska lista ex.1-50 vilket den gör,men den listar inte 50 inlägg utan bara 10 som det är i paging systemet som jag använder, ser ut så här:

```php
// Nu bestämmer vi antal per sida och kollar vi upp totala antalet 
$limit = 10; // Antal per sida 
$result = mysql_query("SELECT count(*) as count FROM forum") 
  or die("Error fetching number in DB<br>".mysql_error()); 
$row = mysql_fetch_array($result); 
$numrows = $row['count']; // Antal i databasen 
 
// Sedan kollar vi om startvariabeln är satt 
if (!isset($_GET['start']) || $_GET['start'] == "") 
  $start = 0; 
else 
  $start = $_GET['start']; 
 
// Då räknar vi ut hur många sidor det blev 
$pages = intval($numrows/$limit); 
if ($numrows%$limit) 
  $pages++; 
 
// Hämta länk till förstasidan och föregående sida 
if ($start > 0) { 
  $numlink = '<a href="?start=0">««</a> '; 
  $numlink .= '<a href="?start='.($start - $limit).'">«</a> '; 
} else { 
  $numlink = '«« '; 
  $numlink = '« '; 
} 
 
// Hämta sidonummer 
for ($i = 1; $i <= $pages; $i++) { 
  $newoffset = $limit*($i-1); 
  if ($start == $newoffset) 
    $numlink .= '['.$i.'] '; 
  else 
    $numlink .= '<a href="?start='.$newoffset.'">'.$i.'</a> '; 
} 
 
// Hämta länk till nästa sida 
if ($numrows > ($start + $limit)) 
  $numlink .= '<a href="?start='.($start + $limit).'">»</a> '; 
else 
  $numlink .= '» '; 
// Hämta sista sidan 
if ($start != $newoffset) 
  $numlink .= '<a href="?start='.$newoffset.'">»»</a> '; 
else 
  $numlink .= '»»' ;
 
// Skriv ut sidorna 
echo $numlink ."<br>"; 
echo "<hr>";

 
// Nu kan vi hämta datan från databasen och skriva ut den 
$result = mysql_query("SELECT * FROM forum ORDER BY id DESC LIMIT ".$start.",".$limit."") 
  or die("Error fetching data".mysql_error());
```

Permalänk: https://www.webforum.nu/p/1625099

## #8 — Matte, 2005-06-07T19:18Z

Dropdownen styr inte din hämtning i den koden.

Antingen kör du med det systemet du har, att i URL-en ha offset för första post, eller kör du som i mitt alternativ, sidnumrering. Det är upp till dig.

Kolla de länkar du skriver ut i ditt exempel. Gör \<option\> av dom istället. Och den som är samma sida sätter du selected på.

Permalänk: https://www.webforum.nu/p/1625162

## #9 — mr.mainline, 2005-06-07T20:31Z

ok, med jag vill både ha som jag har det med sid nummer som listar 10 inlägg i taget, och sen dropdown menyn som listar 1-50 o.s.v.

Permalänk: https://www.webforum.nu/p/1625204

## #10 — Matte, 2005-06-08T18:37Z

Då menar du att när du trycker på en länk ska den visa 10 inlägg, och när du väljer i dropdown ska du visa 50 inlägg ?

Då måste du via en GET-variabel styra hur många som ska visas.
Alternativt använda olika anropsvärden, och översätta dessa för varandra.

Testa något på det här hållet:

```php
/*********************
* Först dropdown
*********************/

// Antal poster per sida
$limit = 50;

// Beräkna antalet poster
$sql = "SELECT COUNT(*) FROM forum";
$result = mysql_query($sql);
$post_num = mysql_result($result, 0);

// Hämta önskat sidnummer ur URL-en. Kontrollera
$start = isset($_GET['start']) && intval($_GET['start']) > 0 ? $_GET['start'] : 0;
$start = $start >= $post_num ? 0 : $start;

// Gör options
$options = '';
for ($i=0; $i<$post_num; $i+=$limit) {
   $from = $i + 1;
   $to   = $i + $limit;
   $selected = $i == $start ? ' selected="selected"' : '';
   $options .= "<option value=\"$i\"$selected>$from - $to</option>\n";
}

// Skriv ut din drop-down
echo '
<form action="'.$_SERVER['PHP_SELF'].'" method="get">
<input type="hidden" name="show" value="'.$limit.'" />
<select name="start" onchange="this.form.submit()">
'.$options.'
</select>
<noscript><input type="submit" value="Visa" /></noscript>
</form>
';

/*********************
* Sedan länkar
*********************/

// Nu bestämmer vi antal per sida och kollar vi upp totala antalet 
$limit = 10; // Antal per sida 

/* $result = mysql_query("SELECT count(*) as count FROM forum") 
  or die("Error fetching number in DB<br>".mysql_error()); 
$row = mysql_fetch_array($result); 
$numrows = $row['count']; // Antal i databasen  */
 
// Sedan kollar vi om startvariabeln är satt 
if (!isset($_GET['start']) || $_GET['start'] == "") 
  $start = 0; 
else 
  $start = $_GET['start']; 
 
// Då räknar vi ut hur många sidor det blev 
$pages = intval($post_num / $limit); 
if ($post_num % $limit) 
  $pages++; 
 
// Hämta länk till förstasidan och föregående sida 
if ($start > 0) { 
  $numlink = '<a href="?start=0">««</a> '; 
  $numlink .= '<a href="?start='.($start - $limit).'">«</a> '; 
} else { 
  $numlink = '«« '; 
  $numlink = '« '; 
} 
 
// Hämta sidonummer 
for ($i = 1; $i <= $pages; $i++) { 
  $newoffset = $limit*($i-1); 
  if ($start == $newoffset) 
    $numlink .= '['.$i.'] '; 
  else 
    $numlink .= '<a href="?start='.$newoffset.'">'.$i.'</a> '; 
} 
 
// Hämta länk till nästa sida 
if ($numrows > ($start + $limit)) 
  $numlink .= '<a href="?start='.($start + $limit).'">»</a> '; 
else 
  $numlink .= '» '; 
// Hämta sista sidan 
if ($start != $newoffset) 
  $numlink .= '<a href="?start='.$newoffset.'">»»</a> '; 
else 
  $numlink .= '»»' ;
 
// Skriv ut sidorna 
echo $numlink ."<br>"; 
echo "<hr>";

/***************************
* Kollan antalet att visa
****************************/

$limit = isset($_GET['show']) && intval($_GET['show']) > 0 ? $_GET['show'] : $limit;

 
// Nu kan vi hämta datan från databasen och skriva ut den 
$result = mysql_query("SELECT * FROM forum ORDER BY id DESC LIMIT ".$start.",".$limit."") 
  or die("Error fetching data".mysql_error());
```

Permalänk: https://www.webforum.nu/p/1628556

## #11 — mr.mainline, 2005-06-08T19:33Z

Ja exakt Matte, det funkar super, tusen tack ska du ha.

Permalänk: https://www.webforum.nu/p/1628573

---

Tråden på webben: https://www.webforum.nu/amne/php/129214-lista-inlägg-i-en-dropdown-meny
