kostenloser Webspace werbefrei: lima-city


Seiten Blättern Funktion

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    boobox

    boobox hat kostenlosen Webspace.

    Hallo

    ich möchte eine Seiten Blättern Funktion erstellen, bei der man quasi unendlich weiter blättern kann,
    aber immer nur 5 Seiten-Links angezeigt werden, wobei immer mit Seite:01 ganz vorne steht
    und - wenn Seitenzahl groß genug - man auch immer direkt eine Seite zurück kann.

    Also wenn man auf Seite 1 ist dann ist es ja einfach:
    -- Seite:01 --- Seite:02 --- Seite:03 --- Seite:04 --- Seite:05 ---


    ... wenn man auf Seite 04 ist, dann soll es so aussehen:
    --- Seite:01 -- Seite:03 --- Seite:04 --- Seite:05 --- Seite:06 ---


    ... wenn man auf Seite 15 ist, dann soll es so aussehen:
    --- Seite:01 -- Seite:14 --- Seite:15 --- Seite:16 --- Seite:17 ---


    usw. ... also immer mit Seite:01, immer eine Seite zurück möglich und Gesamt max. 5 Links

    Wie kann ich das mit einer /eigenen) PHP Funktion lösen,
    bei der ich als Argument (Parameter) nur die aktuelle Seite übergebe ?!



  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Ich verstehe jetzt nicht was dein Problem ist. Kannst du überhaupt PHP? Es wäre hilfreich wenn du mal dein Problem formulierst und zeigst wie du es bisher versucht hast!
    Wenn ich deinen Wunsch richtig verstanden habe ist das wirklich nicht schwer vllt. solltest du nochmal ein paar Tutorials für PHP durcharbeiten!

    Trozdem hier mal kurz ein Beispiel (nochmal mach ich das nicht!)
    <?php
    	$page = 1;
    	if (isset($_GET['page']) && is_numeric($_GET['page']) && is_int($_GET['page'] *1)) {
    		$page = $_GET['page'];
    	}
    	function getPages($id) {
    		if ($id == 1) {
    			$html = "<a>Seite 1</a>";
    		} else {
    			$html = "<a href='pages.php?page=1'>Seite 1</a>";
    			if ($id > 2) {
    				$html .= " --- <a href='pages.php?page=" . ($id -1) . "'>Seite " . ($id -1) . "</a>";
    			}
    			$html .= " --- <a>Seite " . ($id) . "</a>";
    		}	
    		$html .= " --- <a href='pages.php?page=" . ($id +1) . "'>Seite " . ($id +1) . "</a> --- <a href='pages.php?page=" . ($id +2) . "'>Seite " . ($id +2) . "</a>";
    		return $html;
    	}
    ?>
    <!DOCTYPE html>
    <html>
    	<head>
    	
    	</head>
    	<body>
    		<div>
    			<?php echo getPages($page); ?>
    		</div>
    	</body>
    </html>
  4. Autor dieses Themas

    boobox

    boobox hat kostenlosen Webspace.

    jo Danke, das sieht schon ganz gut aus.

    ja, ein bishcne PHP kann ich schon ... habe das Beispiel noch ein bischen erweitert / verbessert

    + auch 5 Links zeigen, wenn aktuelle Seite noch kleiner als 3 ... vorher waren da zu wenige
    + mit Übergabe eines Suchwort (Query-String) aus Formular (POST) und in Links (GET)
    + mit "formatiereten" Zahlen bei Seiten-Nummern (immer 3-Stellig mit führenden Nullen)


    <?php 
    // ------------------------------------------------------- 
    
    header('Content-Type: text/html; charset=utf-8');
    
    $runfile = basename($_SERVER['PHP_SELF']); 
    
    // ------------------------------------------------------- 
    
    $page = 1;
    
    $query_string = 'Bücher'; 
    $query_string = utf8_encode($query_string); 
    
    if (isset($_REQUEST['page']) && is_numeric($_REQUEST['page']) && is_int($_REQUEST['page'] *1)) {
    	$page = $_REQUEST['page'];
    }
    
    if (isset($_REQUEST['q']) && !empty($_REQUEST['query'])) {
    	$query_string = $_REQUEST['query'];
    }
    
    
    $query_urlenc = rawurlencode($query_string); 
    
    
    // ------------------------------------------------------- 
    
    function formatNum($id,$len=3) {
    	$nr = str_pad($id,$len,'0',STR_PAD_LEFT); 
    	return $nr; 
    }
    
    
    function getPages($id) {
    	global $runfile, $query_urlstr; 
    	
    	if ($id == 1) {
    		$html = "<a>Seite ".formatNum(1)."</a>";
    	} else {
    		$html = "<a href='".$runfile."?query=".$query_urlstr."&page=1'>Seite ".formatNum(1)."</a>";
    		if ($id > 2) {
    			$html .= " --- <a href='".$runfile."?query=".$query_urlstr."&page=" . ($id -1) . "'>Seite " . formatNum($id -1) . "</a>";
    		}
    		$html .= " --- <a>Seite " . formatNum($id) . "</a>";
    	}
    		
    	$html .= " --- <a href='".$runfile."?query=".$query_urlstr."&page=" . ($id +1) . "'>Seite " . formatNum($id +1) . "</a>"; 
    	$html .= " --- <a href='".$runfile."?query=".$query_urlstr."&page=" . ($id +2) . "'>Seite " . formatNum($id +2) . "</a>";
    	
    	if ($id < 3) {
    		$html .= " --- <a href='".$runfile."?query=".$query_urlstr."&page=" . ($id +2) . "'>Seite " . formatNum($id +3) . "</a>"; 
    	}
    	if ($id < 2) {
    		$html .= " --- <a href='".$runfile."?query=".$query_urlstr."&page=" . ($id +2) . "'>Seite " . formatNum($id +4) . "</a>"; 
    	} 
    	
    	$html .= " --- "; 
    	
    	return $html;
    }
    
    // ------------------------------------------------------- 
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    
    </head>
    <body>
    
    
    <div style="text-align:center;">
    
    <br />
    <br />
    
    <form name="form1" method="post" action="<?php print $runfile; ?>">
      Suchwort(e): <input type="text" name="q" size="40" maxlength="150" value="<?php print $query_string; ?>" />
      &nbsp; OK: <input type="submit" name="run" value="Suchen" />
      <input type="hidden" name="p" value="1" />
    </form>
    
    <br />
    <br />
    
    <p>Suchwort: <strong><?php echo $query_string; ?></strong></p>
    <p>Aktuelle Seite: <strong><?php echo $page; ?></strong></p>
    
    <hr />
    
    <?php 
    echo "<p>".getPages($page)."</p>\n"
    ?>
    
    <hr />
    
    
    <br />
    <br />
    
    </div>
    
    </body>
    </html>


    schon ganz nett, aber es funktioniert damit halt nur für 5 Links in der Seiten-Navigation

    nur zum herumspielen und lernen ... wie machen, wenn man Anzahl der Links dynamisch haben will ?
    also als zusätzliches Argument (Parameter) bei Funktions-Aufruf ... z.B: getPages($page,7) für 7 Links

  5. boobox schrieb:
    habe das Beispiel noch ein bischen erweitert / verbessert


    Ja das ist ja alles nur nebensache!

    boobox schrieb:
    wie machen, wenn man Anzahl der Links dynamisch haben will ?


    Mit Schleifen - z.B. for-Schleife

    Guck dir doch bitte nochmal so grundlegende Sachen an!
  6. Wie macht man eine Seitenblätter Funktion :scared:
  7. hier noch eine Seiten-Blättern Funktion,

    // ---------------------------------------------------------- 
    
    function navigationsLeiste($MaxSeiten,$seiteAktuell,$extVariables,$pagevar='seite',$navSize=7) { 
    
    	$NavCeil = floor($navSize / 2);
    	$string = ''; 
    
    	if($seiteAktuell > 1){
    		$string .= '<a href="?'.$pagevar.'=1'.$extVariables.'"><<</a>&nbsp;&nbsp;';
    		$string .= '<a href="?'.$pagevar.'='.($seiteAktuell-1).$extVariables.'"><</a>&nbsp;&nbsp;';
    	}
    	else { 
    		$string .= '<<&nbsp;&nbsp;';
    		$string .= '<&nbsp;&nbsp;';
    	}
    
    	if ($seiteAktuell > $MaxSeiten-$NavCeil) { $startp = ($seiteAktuell-($NavCeil+($NavCeil-($MaxSeiten-$seiteAktuell)))); } 
    	else { $startp = $seiteAktuell-$NavCeil; } 
    	
    	if ($seiteAktuell <= $NavCeil) { $endp = $NavCeil + ($seiteAktuell + ($NavCeil-$seiteAktuell) +1); } 
    	else { $endp = $seiteAktuell+$NavCeil; } 
    	
    	$xnrsize = strlen($MaxSeiten); 
    	$xnrsize = ($xnrsize < 3) ? 3 : $xnrsize;
    	
    	for($x=$startp;$x<=$endp;$x++){
    	
    		$xnr = str_pad($x,$xnrsize,'0',STR_PAD_LEFT); 
    		
    		if(($x>0 && $x<$seiteAktuell) || ($x>$seiteAktuell && $x<=$MaxSeiten))
    		$string .= '<a href="?'.$pagevar.'='.$x.$extVariables.'">'.$xnr.'</a>&nbsp;&nbsp;';
    	
    		if($x==$seiteAktuell)
    		$string .= $xnr . '&nbsp;&nbsp;';
    		
    	}
    
    	if($seiteAktuell < $MaxSeiten){
    		$string .= '<a href="?'.$pagevar.'='.($seiteAktuell+1).$extVariables.'">></a>&nbsp;&nbsp;';
    		$string .= '<a href="?'.$pagevar.'='.$MaxSeiten.$extVariables.'">>></a>&nbsp;&nbsp;';
    	}
    	else { 
    		$string .= '>&nbsp;&nbsp;';
    		$string .= '>>&nbsp;&nbsp;';
    	}
    	
    	
    	return $string;
    
    }
    
    // ----------------------------------------------------------


    und für das Auslesen aus MySQL mit LIMIT hier noch ein Tipp wie man den LIMIT-START Wert bekommt:


    $pagesize = 10;  // ----- Ergebnisse pro Seite 
    
    $limitstart = (($seiteAktuell * $pagesize) - $pagesize);   // ----- Offset = ueberspringt n Zeilen 
    
    $sql = "SELECT * FROM tabelle WHERE feld='bedingung' LIMIT ".$limitstart.",".$pagesize.""


    somit beginnt die SQL Abfrage bei Seite:1 mit Offset 0 (Null) ... überspringt 0 Zeilen
    und bei Seite:2 mit Offset 10, bei Seite:3 mit Offset 20, bei Seite:4 mit Offset 30, usw. ...
    und es werden immer nur (hier) 10 Ergebnisse nach dem Offset ausgelesen.

    ... damit kann man prima durch größere MySQL Tabellen auf Seiten durch-blättern :)


    Beitrag zuletzt geändert: 12.6.2013 18:24:59 von katalogbox
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!