Avatar billede tobiassen Nybegynder
30. januar 2008 - 11:58 Der er 34 kommentarer og
1 løsning

Mange sider

jeg kalder 12 poster pr side ud fra min database, mit problem er at der kommer alt for mange sider:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

jeg vil herne ha det til at se f.eks. sådan her ud:

<- 1 2 3 4 5 6 7 8 9..10 ->

nogen der kan hjælpe ?

$tael = mysql_query("SELECT COUNT(*) AS antal FROM statistik") or die (mysql_error());
$antal = mysql_result($tael,0);


if ($offset >= $pr_side) {
    $forrige = $offset-$pr_side;
    echo " <a href='?offset=$forrige'>Forrige</a> ";
}
else
{
echo " Forrige ";
}


$page = 1;
for($start=0; $antal > $start; $start=$start+$pr_side){
    if ($start != $offset) {
        echo " <a href='?offset=$start'>$page</a> ";
    } else {
        echo " <u>$page</u> ";
    }
    $page++;
}
if ($antal > $offset+$pr_side) {
    $naeste = $offset+$pr_side;
    echo " <a href='?offset=$naeste'>Næste</a> ";
}
else
{
echo " Næste ";
}
?>
Avatar billede jakobdo Ekspert
30. januar 2008 - 20:30 #1
Hvad betyder .. mellem 9 og 10 ?
Avatar billede tobiassen Nybegynder
30. januar 2008 - 21:46 #2
at der bare skal ud skrive den sidste side, nok bedre at illustrere det med

<- 1 2 3 4 5 6 7 8 9..34 ->

og den anden vej

<- 1..26 27 28 29 30 31 32 33 34 ->

sådan så jeg ikke får en million antal sider udskrevet hvis nu der er mange poster i min database
Avatar billede jakobdo Ekspert
31. januar 2008 - 20:50 #3
Avatar billede tobiassen Nybegynder
01. februar 2008 - 12:21 #4
ja næsten sådan, begge pile sku bare være der fra start af.
og så skal der ik kun komme en side af gange, men i stedet de næste 10 poster
Avatar billede tobiassen Nybegynder
01. februar 2008 - 12:24 #5
altså li nu ser det sådan her ud:

Forrige 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 Næste

og der skal så kun vises 9 sider af gangen
Avatar billede jakobdo Ekspert
01. februar 2008 - 12:38 #6
Sådan måske?
Avatar billede tobiassen Nybegynder
01. februar 2008 - 13:26 #7
jaa, men tallene skal ku flytte sig når man trykker på pilene ?
Avatar billede jakobdo Ekspert
01. februar 2008 - 18:55 #8
Tallene skal flytte sig?
Når du har 1 - 50
Så vil 1 og 50 altid vises.
Men tallene imellem hopper jo også.
Så må du forklare bedre.
Avatar billede tobiassen Nybegynder
02. februar 2008 - 11:17 #9
den skal være som den er nu, bare med ligeså med antal sider i starten som når man trykker videre.

så der ik ku står

1 2 3 4 5 6 ...50 -->

men i stedet:

<-- 1 2 3 4 5 6 7 8 9 10 ...50 -->

og nu når jeg tænkder mig er det nok bedre hvis der ikke står <- 1..6 7 8 ovs.

men i stedet bare  <- 6 7 8 osv

hvis du forstår ?
Avatar billede jakobdo Ekspert
03. februar 2008 - 17:08 #10
Prøv at se siden nu?

Det med du vil have 10 sider.
Så skal du forklare hvordan den skal vise siderne.
Som jeg har lavet det nu, tager jeg offset - og + 5.
Avatar billede tobiassen Nybegynder
03. februar 2008 - 22:26 #11
men den viser da 10 sider, på nær lige i starten, derviser den kun fra 1-6 ?
Avatar billede jakobdo Ekspert
04. februar 2008 - 06:40 #12
Hvad er 1 - 5 og 1 + 5?

Du må forklare hvordan den skal vise 10.
Hvis man står på side 1, skal den så vise 10 frem?
Hvis ja, hvad så når man står på sidste side?
Så vil den vise 50 + 10
Men der er kun 50 sider, så det giver ingen ide at vise de sidste 10.
Avatar billede tobiassen Nybegynder
04. februar 2008 - 12:12 #13
den skal vise dem sådan her

1 2 3 4 5 6 7 8 9..50 ->

og når man trykker på pilen skal den så vise de næste 10
Avatar billede tobiassen Nybegynder
04. februar 2008 - 12:12 #14
eller 9 er det jo
Avatar billede jakobdo Ekspert
04. februar 2008 - 12:44 #15
Hvad så når man står på side 49 ?
Avatar billede tobiassen Nybegynder
04. februar 2008 - 12:46 #16
jamen hvis det ik er nok til sidst til at vise de 9 sider, skal den bare vise de resterende :)
Avatar billede jakobdo Ekspert
04. februar 2008 - 12:56 #17
Noget i stil med det som er der nu?
Avatar billede tobiassen Nybegynder
04. februar 2008 - 13:02 #18
den behøves ik at hoppe ned til den man trykker på?

den skal bare vise siden hvis man trykker på tallet, men det behøves ikke at hoppe så det bliver det første tal i rækken, det skal bare blive stående
Avatar billede jakobdo Ekspert
04. februar 2008 - 13:22 #19
Sådan?
Avatar billede tobiassen Nybegynder
04. februar 2008 - 13:48 #20
den hopper stadig ned.. f.eks. hvis jeg trykker på 36 kommer det til at se sådan her ud:

36 37 38 39 40 41 42 43 44 45

og der skal det bare blive ved med at se sådan her ud:

31 32 33 34 35 36 37 38 39 40
Avatar billede jakobdo Ekspert
04. februar 2008 - 14:34 #21
Så må du fortælle hvordan systemet skal være klik for klik.
For du blander rundt hele tiden. :o)
Avatar billede tobiassen Nybegynder
04. februar 2008 - 15:50 #22
tror bare vi har misforstået hinanden,

men den skal såmen bare vise 10 antal sider af gangen.

i starten sådan her hvor et skal være understreget:

<- 1 2 3 4 5 6 7 8 9 10...50 ->

hvis jeg så trykker på pilen skal 2 være understreget, ognår jeg så har trykket 10 gangen så jeg skal se side 11 skal de næste 10 så komme. sådan her:

<- 11 12 13 14 15 16 17 18 19 20...50 ->

og der skal os være en pil i starten selv om man ikke kan gå længere tilbage, den skal bare deaktiveret,..

håver jeg har forklaret det ordentlig nu :)
Avatar billede jakobdo Ekspert
04. februar 2008 - 15:57 #23
Hvad med nu?
Avatar billede tobiassen Nybegynder
04. februar 2008 - 16:03 #24
næsten tallene ska bare ik ryke sig..

der skal kun komme nye tal når man er ved hver tiende
Avatar billede tobiassen Nybegynder
05. februar 2008 - 16:31 #25
eller endnu mere simpelt,

<- viser side 1 af 10 ->

og så ti poster pr side ?
Avatar billede jakobdo Ekspert
05. februar 2008 - 20:33 #26
Sådan ?
Avatar billede tobiassen Nybegynder
05. februar 2008 - 20:40 #27
lige præcis, den er som den skal være nu :)
Avatar billede jakobdo Ekspert
05. februar 2008 - 21:13 #28
Kig på siden, og sourcen er der...
Avatar billede tobiassen Nybegynder
05. februar 2008 - 21:30 #29
og hvordan så hvis det skal passes ind i det gamle jeg havde skrevet, ?

$offset = (isset($_GET['offset'])) ? $_GET['offset'] : 0; // Hvis ikke $offset er sat, sættes den til 0
$pr_side = 12; // Antal resultater pr. side

// Henter poster fra databasen
$query = mysql_query("SELECT * FROM statistik ORDER BY id DESC LIMIT $offset,$pr_side") or die (mysql_error());
while($raekke = mysql_fetch_array($query)) {


// Tæller antal poster i databasen
$tael = mysql_query("SELECT COUNT(*) AS antal FROM statistik") or die (mysql_error());
$antal = mysql_result($tael,0);


if ($offset >= $pr_side) {
    $forrige = $offset-$pr_side;
    echo " <a href='?offset=$forrige'>Forrige</a> ";
}
else
{
echo " Forrige ";
}


$page = 1;
for($start=0; $antal > $start; $start=$start+$pr_side){
    if ($start != $offset) {
        echo " <a href='?offset=$start'>$page</a> ";
    } else {
        echo " <u>$page</u> ";
    }
    $page++;
}
if ($antal > $offset+$pr_side) {
    $naeste = $offset+$pr_side;
    echo " <a href='?offset=$naeste'>Næste</a> ";
}
else
{
echo " Næste ";
}
Avatar billede jakobdo Ekspert
05. februar 2008 - 21:38 #30
DU burde næsten kunne rette $pages ud med:

$tael = mysql_query("SELECT COUNT(*) AS antal FROM statistik") or die (mysql_error());
$antal = mysql_result($tael,0);

Og selvfølgelig rette lidt til i visningen under <hr />
Avatar billede tobiassen Nybegynder
06. februar 2008 - 18:49 #31
ka simpelthen ik få det til at passe,
den skriver sådan her når jeg prøver:

<-- Viser side 264 af 572 -->

det er den her kode eg skal ha tilpasset:

$offset = (isset($_GET['offset'])) ? $_GET['offset'] : 0; // Hvis ikke $offset er sat, sættes den til 0
$pr_side = 12; // Antal resultater pr. side

// Henter poster fra databasen
$query = mysql_query("SELECT * FROM statistik ORDER BY id DESC LIMIT $offset,$pr_side") or die (mysql_error());
while($raekke = mysql_fetch_array($query)) {
    $strTekstStart = "<tr>";
    $strTekstSlut = "</tr>";

    echo $strTekstStart;



echo "<td style='border-bottom:1px solid black; padding:5px;'>".$raekke['hostname']."</td>";

echo "
<td style='border-left:1px solid black; border-bottom:1px solid black; padding:5px;'>".$raekke['date']."</td>
<td style='border-left:1px solid black; border-bottom:1px solid black; padding:5px;'>".$raekke['time']."</td>
<td style='border-left:1px solid black; border-bottom:1px solid black; padding:5px;'><center><a href='vis.php?id=".$raekke['id']."'>Vis</a></center></td>";


    echo $strTekstSlut."\n";
}

echo "<tr><td colspan='4' style='border-top:0px; padding:5px;'><center>";

// Tæller antal poster i databasen
$tael = mysql_query("SELECT COUNT(*) AS antal FROM statistik") or die (mysql_error());
$antal = mysql_result($tael,0);


if ($offset >= $pr_side) {
    $forrige = $offset-$pr_side;
    echo " <a href='?offset=$forrige'>Forrige</a> ";
}
else
{
echo " Forrige ";
}


$page = 1;
for($start=0; $antal > $start; $start=$start+$pr_side){
    if ($start != $offset) {
        echo " <a href='?offset=$start'>$page</a> ";
    } else {
        echo " <u>$page</u> ";
    }
    $page++;
}
if ($antal > $offset+$pr_side) {
    $naeste = $offset+$pr_side;
    echo " <a href='?offset=$naeste'>Næste</a> ";
}
else
{
echo " Næste ";
}
?>
Avatar billede jakobdo Ekspert
07. februar 2008 - 21:04 #32
Hvad med noget i denne stil:

<?php
//http://www.eksperten.dk/spm/817217

// Tæller antal poster i databasen
$tael = mysql_query("SELECT COUNT(*) AS antal FROM statistik") or die (mysql_error());
$antal = mysql_result($tael,0);

$limit = 12;
$pages = ceil($antal/$limit);

if(isset($_GET['offset']) && is_numeric($_GET['offset'])){
    if($_GET['offset'] < 1){
        $offset = 1;
    }elseif($_GET['offset'] > $pages){
        $offset = $pages;
    }else{
        $offset = intval($_GET['offset']);
    }
}else{
    $offset = 1;
}


if($offset > 1)
    echo '<a href="?offset='.($offset-1).'"><--</a>';

echo '&nbsp;Viser side ' . $offset . ' af ' . $pages . '&nbsp;';

if($offset < $pages)
    echo '<a href="?offset='.($offset+1).'">--></a>';

echo '<hr />';

$end  = $offset * $limit;
$start = $end - $limit;

// Henter poster fra databasen
$query = mysql_query("SELECT * FROM statistik ORDER BY id DESC LIMIT $start,$pr_side") or die (mysql_error());
while($raekke = mysql_fetch_array($query)) {
    $strTekstStart = "<tr>";
    $strTekstSlut = "</tr>";

    echo $strTekstStart;

    echo "<td style='border-bottom:1px solid black; padding:5px;'>".$raekke['hostname']."</td>";

    echo "
        <td style='border-left:1px solid black; border-bottom:1px solid black; padding:5px;'>".$raekke['date']."</td>
        <td style='border-left:1px solid black; border-bottom:1px solid black; padding:5px;'>".$raekke['time']."</td>
        <td style='border-left:1px solid black; border-bottom:1px solid black; padding:5px;'><center><a href='vis.php?id=".$raekke['id']."'>Vis</a></center></td>";

    echo $strTekstSlut."\n";
}

echo "<tr><td colspan='4' style='border-top:0px; padding:5px;'><center>";

?>
Avatar billede tobiassen Nybegynder
10. februar 2008 - 21:30 #33
det virker :)
tak forhjælpen, og kom med et svar :)
Avatar billede jakobdo Ekspert
10. februar 2008 - 21:39 #34
Svar!
Avatar billede jakobdo Ekspert
11. februar 2008 - 08:01 #35
Takker for point.
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