Gästebuch Seiten verkürzt posten

Tualex hat gesagt.:
Wie kann ich mache, dass oben die Seiten nicht alle angezeigt werden sondern ca. so?:
Seiten: [1] [2] [3] ... [11] [12] [13]
Indem du die dazwischenliegenden Seitenlinks nicht ausgibst.

Aber mal ehrlich: wie sollen wir deine Frage beantworten, ohne den relevanten Quellcode zu kennen?
 
Das von dir Erwähnte wird allgemein als Blätterfunktion bezeichnet. Benutze mal die Suchfunktion dieses Forums, dort wirst du sicherlich fündig.
 
Ach ja sorry der Quellcode ist:
PHP:
Seiten: <? $seiten =ceil(mysql_num_rows($query)/5);
	 $i = 0;
	 while($i < $seiten)
	 {?>
	  [<a href="index.php?file=gbook.php&gbook=lesen&seite=<? echo $i ;$i++;?>"><? echo $i ?></a>]
	  <? } ?>
	  <?
	if(isset($_GET['seite'])){
  $seite = ceil($_GET['seite']*5);
  }else{
  $seite = 0;
  }
  $query2 = mysql_query("SELECT * FROM `gbook` ORDER BY `ID` DESC LIMIT $seite, 5");
  while($news = mysql_fetch_array($query2)){

$sql = "SELECT * FROM `gbook` ORDER BY `ID` DESC LIMIT $seite, 5";
$total = mysql_result(mysql_query("SELECT COUNT(1) FROM gbook "),0);
 
Naja im Prinzip ist das doch gar nicht so schwer.

1. ale Einträge aus der Datenbziehen.
2. gesammt zahl der Seiten erben sich aus count($array);
3. ein gewisse Anzahl pro Seite festlegen Array Element [0] == 1 bis Array Element[9] == 10 , [10] -> [19] etc etc.
4. Mit dem Modulo Operator die Seiten ausgeben.
5. Einfach eine Anweisung machen , wenn bereits 3 mal ausgebeben dann , 3 Punkte ausgeben und gehe zu Array Element count($array) - 30 , und fang an diese neu auszugeben.

So ca wäre mein Ablauf bei sowas , muss man noch optimieren dann wenn zum beispiel 4 Seiten existieren wäre es quatsch nochmal 0 einträge im Array zuzurückzugehen dann.

Ich hab das mal mittels einer riesigen switch-case gemacht , sieht zwar ein wenig übel aus aber geht.

PHP:
 function get_mysql_entities(){
  global $database;
  global $session;
  
  /**********************/
  /** die letzten 30 Tage **/
  
  $last_days = mktime(0,0,0,date("n"), date("d")-30 , date("Y") );
 
  $query = "SELECT * FROM sms WHERE user_id = ".$session->getUserId($session->username)." AND timestamp > $last_days ORDER BY timestamp DESC";
  if($Data = $database->get_mysql_data_array($query)){
    return $Data;
  }else{
    return FALSE;
  }
 }
 
  /*======================================- Inhalte anzeigen -=========================================*/   
     
  function show_history($start ,$end , $Data){
    require_once("show_history.php");
    return $show_history;
  }
  
  /*======================================- Seiten Ziffern anzeigen -=========================================*/
  
     function show_sites($Data){  // Data wäre ein Array 
     
       $URL = "www.deineseite.de/index.php?action=history";
       $ziffern  = "<table width=60% border=0 style='font-size:10pt;'><tr><td align=center>";
     
       if( ceil((count($Data)/10)) > 3 ){
       // mehr als 3 Seiten existent
     	if(isset($_GET['site']) ){
     			
     	  switch ($_GET['site']){
     	
     		/*===============- erste Seite-===============*/
     	  
     		case 1:
     		  $ziffern .="<b>1</b>&nbsp;";  
     		  for($i = 2 ; $i <= 3;$i++){
     			$ziffern .="<a class='SeitenHistory' href='http://".$URL."&site=".$i."'>".$i."</a>&nbsp;";  
     		  }
     		  $ziffern .= "...&nbsp;<a class='SeitenHistory' href='http://".$URL."&site=".ceil(count($Data)/10)."'>".chr(187)."</a>";
     		 break;
     		
     		case 2:
     		/*===============-zweite Seite-===============*/
     		  $ziffern .= "<a href='http://".$URL."&site=1'>1</a>&nbsp;";
     			$ziffern .= "<b>2</b>&nbsp;"; 
     		  $ziffern .= "<a href='http://".$URL."&site=3'>3</a>&nbsp;...";
     		  $ziffern .= "<a  href='http://".$URL."&site=".ceil(count($Data)/10)."'>".chr(187)."</a>";
     		  break;
     		
     		/*===============- vorletzte Seite-================*/
     		
     		case (ceil(count($Data)/10)-1):
     		  $ziffern .= "<a href='http://".$URL."&site=1'>".chr(171)."</a>&nbsp;...&nbsp;";
     		  $ziffern .= "<a href='http://".$URL."&site=".(ceil(count($Data)/10)-2)."'>".(ceil(count($Data)/10)-2)."</a>&nbsp;";
     		  $ziffern .= "<b>".(ceil(count($Data)/10)-1)."</b>&nbsp;";
     		  $ziffern .= "<a  href='http://".$URL."&site=".ceil(count($Data)/10)."'>".ceil(count($Data)/10)."</a>";
     		  break;
     
     		/*===============- letzte Seite-===============*/
     		
     		case ceil(count($Data)/10):
     
     		   $ziffern .="<a class='SeitenHistory' href='http://".$URL."&site=1'>&nbsp;".chr(171)."</a>&nbsp;...&nbsp;";
     			  
     		   for($i = (ceil(count($Data)/10)-2) ; $i <= (ceil(count($Data)/10)-1) ;$i++){
     			 $ziffern .= "<a href='http://".$URL."&site=".$i."'>".$i."</a>&nbsp;";  
     		   }
     		   $ziffern .= "<b>".ceil(count($Data)/10)."</b>";
     		break;
     		   
     		/*===============- alle anderen Seiten-===============*/		
     		
     		default:
     			  $ziffern .= "<a href='http://".$URL."&site=1'>".chr(171)."</a>&nbsp;...&nbsp;";
     			$ziffern .= "<a href='http://".$URL."&site=".(($_GET['site'])-1)."'>".(($_GET['site'])-1)."</a>&nbsp;";
     			$ziffern .= "<b>".$_GET['site']."</b>&nbsp;";
     			$ziffern .= "<a href='http://".$URL."&site=".(($_GET['site'])+1)."'>".(($_GET['site'])+1)."</a>&nbsp;";
     			$ziffern .= "...<a  href='http://".$URL."&site=".ceil(count($Data)/10)."'>".chr(187)."</a>";
     			break;
     	  }
     	  
     	}else{
     	   $ziffern .= "<b>1</b>&nbsp;";
     	   for($i = 2 ; $i <= 3;$i++){
     		 $ziffern .= "<a href='http://".$URL."&site=".$i."'>".$i."</a>&nbsp;";  
     	   }
     	   $ziffern .= "...&nbsp;<a href='http://".$URL."&site=".ceil(count($Data)/10)."'>".chr(187)."</a>&nbsp;";
     	}
       
       }else{
       // 3 oder weniger Seiten
     	for($i = 1 ; $i <= ceil(count($Data)/10);$i++){
     	   $ziffern .= "<a href='http://".$URL."&site=".$i."'>".$i."</a>&nbsp;";  
     	}
       }
       
       $ziffern .="</td></tr></table>";
       
       return $ziffern;
     } // function show_sites schliessen
  
  if(isset($_GET['site'])){
     $output_middle = show_history( (($_GET['site']*10)-10),(($_GET['site']*10)-1) ,get_mysql_entities() );
     $output_middle .= show_sites(get_mysql_entities() );
  }else{
    if(get_mysql_entities() ){  
  	 $output_middle = show_history( 0,9,get_mysql_entities() );
  	 $output_middle .= show_sites(get_mysql_entities() );	 
    }else{
  	$output_middle = "Keine Einträge vorhanden";
    }
  }
  ?>

Ich will dazu sagen das Dieses Script noch woanders eingebunden wird wo dann einfach $output_middle ausgegeben wird , was aber nocht von Interesse sein dürfte soweit ;)
 
Zuletzt bearbeitet:
Zurück