Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Sivutusongelma

Sivun loppuun

Alepale [04.04.2009 19:25:34]

#

Olen saanut tehtyä tavallisen sivutuksen, joka näyttää kaikki sivunumerot. Ajattelin kuitenkin, että jos sivuja tulee todella paljon, olisi ne järkevämpää pistää muotoon:
[Ensimmäinen] [<] ... 3 4 5 6 7 8... [>] [Viimeinen]
tai jtn muuta vastaavaa. Olen nyt tässä pähkäillyt monta tuntia, miten homman saisi yksinkertaisimmin tehtyä. Oletteko te tehneet tällaista systeemiä tai onko teillä ideoita?

Grez [04.04.2009 20:10:25]

#

Olen tehnyt tuollaisen, eikä siinä ollut mitään ongelmaa.

Mikä tuossa nyt tuottaa tuskaa?

punppis [04.04.2009 21:40:58]

#

Tuohon on vaikka kuinka monta eri vaihtoehtoa, mutta esim. näin:

<?php
$sivumaara = 100;
$nykyinen = 5; // nykyinen sivu
for($sivu=$nykyinen;$sivu<=$nykyinen+5;$sivu++) {
  if($sivu > $sivumaara) {
    break;
  }
  echo $sivu;
}
?>

Tuo siis näyttää nykyisen ja seuraavat 5 sivua. Parempi olisi kyllä tehdä sillain että näkyy niitä sivuja vaikka 3 ennen ja jälkeen nykyisen sivun, mutta tee miten teet. Tämä on sen verta yksinkertaista koodia että jos olet sivutuksen saanut toimimaan niin ei tämänkään pitäisi tuottaa ongelmia.

Alepale [04.04.2009 22:14:59]

#

Juu, tuo nyt ei ole ongelma eikä mikään, mutta entäs sitten kun halutaan näyttää myös esim. 3 ensimmäistä ja 3 viimeistä sen mukaan missä mennään? Eli jos sivuja on 15 ja ollaan sivulla 7, näkyy:
1 2 3 ... 5 6 7 8 9 ... 13 14 15
Ja sivulla 4:
1 2 3 4 5 6 ... 13 14 15
15:
1 2 3 ... 13 14 15
jne...

Smuliii [04.04.2009 22:25:28]

#

Nettutsissa oli hyvä artikkeli/opas juuri sivujen numeroinnista. Kannattaa tsekata, jos siitä olisi apua.

Alepale [04.04.2009 23:07:52]

#

Pitää näköjään tutustua olio-ohjelmointiin, koska tuossa oppaassa homma tehdään olioilla. Kiitoksia vinkistä!

kinnala [05.04.2009 01:29:53]

#

Enpä oikein tiedä kannattaako olio-ohjelmointia sekoittaa näin simppeliin juttuun.

Tässä raakile, jonka väänsin parissa minuutissa:

<?php

define('MID_OFFSET',2);
define('EDGE_OFFSET',3);

$current = $_GET['n'];
$max_pages = 36;

if($current!=1) echo "<a href=\"?n=".($current-1)."\">[<]</a> ";

$echo_dots = false;

for($i=1;$i<=$max_pages;$i++)
{
  if($i==$current) echo "$i ";
  else if($i<=EDGE_OFFSET||$i>$max_pages-EDGE_OFFSET) echo "<a href=\"?n=$i\">$i</a> ";
  else if(abs($current-$i)<=MID_OFFSET)
  {
    echo "<a href=\"?n=$i\">$i</a> ";
    $echo_dots = false;
  }
  else if(!$echo_dots)
  {
    echo " ... ";
    $echo_dots = true;
  }
}

if($current!=$max_pages) echo "<a href=\"?n=".($current+1)."\">[>]</a>";

?>

Etköhän saa tuosta puukotettua itsellesi sopivan.

tsuriga [05.04.2009 03:38:26]

#

Paitsi, että se olioversio on tuota sotkuista versiota huomattavasti dynaamisempi. Olkoonkin, että nettutsin versio on PHP4:lle ja kieltämättä aivan yhtä sotkuisa. Valmiita löytyy myös muita, esim. PEAR - Pager.

peg [05.04.2009 10:05:20]

#

katsoitteko tuota Antin vinkkiä.
https://www.ohjelmointiputka.net/koodivinkit/24487-php-sivutus


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta