Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

Navigatie inkorten?

teacher
4 antwoorden
  • Daar ben ik weer met een vraag over een script. Ik ben druk bezig met het bouwen van een forum voor m'n website. Nu heb ik voor de onderwerpen en berichten een navigatiesysteem gemaakt en een inkortsysteem. Het script werkt perfect, maar ik zit met een probleempje waar ik geen script voor kan bedenken. Stel dat het forum heel populair wordt (de kans is waarschijnlijk niet groot :lol: ) en er komen topics met meer dan 10 pagina's of forums met meer dan 1000 onderwerpen, dan wordt de navigatie lijst enorm, bijvoorbeeld:

    [code:1:8cea732ca2]Vorige 1 2 3 4 5 6 7 8 9 10 11 12 Volgende[/code:1:8cea732ca2]

    Dat wil ik dan vervangen door het volgende:

    [code:1:8cea732ca2]Vorige 1 2 3 … 10 11 12 Volgende[/code:1:8cea732ca2]

    Ik ben nog een noob in php en kan dus niet bedenken hoe ik m'n script moet aanpassen om dit voor elkaar te krijgen. Hier is mijn (zelfgeschreven :) ) script:

    [code:1:8cea732ca2]
    function setposition(){
    if(isset($_GET['pos'])==0){
    $pos=0;
    }else{
    $pos=$_GET['pos'];
    }
    return $pos;
    }

    $count=30;
    $position=setposition();
    $f=$_GET['f'];
    $onderwerpen_sql="SELECT * FROM onderwerpen WHERE forum_id='".$f."' ORDER BY datum DESC LIMIT $position,$count";
    $resultaat=mysql_query($onderwerpen_sql);

    function countpages(){
    $f=$_GET['f'];
    $onderwerpen_sql="SELECT * FROM onderwerpen WHERE forum_id='".$f."'";
    $result=mysql_query($onderwerpen_sql);
    $total=mysql_num_rows($result);

    //Aantal pagina's berekenen
    $mod=$total%30;
    $deelbare_posts=$total-$mod;
    $full_pages=$deelbare_posts/30;
    if($mod>0){
    $num_pages=$full_pages+1;
    }else{
    $num_pages=$full_pages;
    }
    if($num_pages==0){
    $num_pages=1;
    }
    return $num_pages;
    }

    function writenav(){
    $f=$_GET['f'];
    $num_pages=countpages();
    if($num_pages>1){
    if(isset($_GET['pos'])==0){
    $pos=0;
    }else{
    $pos=$_GET['pos'];
    }
    $count=30;

    //Vorige maken
    if($pos>0){
    $prev_pos=$pos-$count;
    $navigatie="<a class=\"structuur\" href=\"viewforum.php?f=$f&pos=$prev_pos\">Vorige</a>";
    }else{
    $navigatie="<span class=\"structuur\">Vorige </span>";
    }

    //Getallen maken
    $num=1;
    $new_pos=0;
    $pages=$num_pages+1;
    while($num<$pages){
    if($new_pos==$pos){
    $navigatie.="<span class=\"structuur\"> $num </span>";
    $num++;
    $new_pos=$new_pos+30;
    }else{
    $navigatie.="<a class=\"structuur\" href=\"viewforum.php?f=$f&pos=$new_pos\"> $num</a>";
    $num++;
    $new_pos=$new_pos+30;
    }
    }

    //Volgende maken
    $num_posts=$num_pages*30;
    if($num_posts-30==$pos){
    $navigatie.="<span class=\"structuur\"> Volgende</span>";
    }else{
    $next_pos=$pos+$count;
    $navigatie.="<a class=\"structuur\" href=\"viewforum.php?f=$f&pos=$next_pos\"> Volgende</a>";
    }

    return $navigatie;
    }
    }
    [/code:1:8cea732ca2]

    Waarschijnlijk moet ik iets met substr doen, maar ik hoop dat jullie als experts me verder kunnen helpen!
  • niemand een idee :-? ?
  • Een paar jaar geleden heb ik zoiets voor mijn site gemaak, maar dat heeft de … aan een kant en niet in het midden.
    [code:1:f85bc432f5]Previous page …[07][08][09][10][11][12][ 13 ][14][15][16][17][18][19]…Next page [/code:1:f85bc432f5]
    Ik wil het script hier wel posten, maar ik weet niet precies meer hoe het werkt.
    wimb
  • kijk s naar de generate_pagination functie van phpbb ;)

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.