art-d-sign
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 30.03.2008, 18:55   #1
TP-Moderator
 
Benutzerbild von StephanF
 
Registriert seit: Feb 2003
Ort: Erfurt
StephanF ist ein richtiges Arbeitstier - DANKEStephanF ist ein richtiges Arbeitstier - DANKEStephanF ist ein richtiges Arbeitstier - DANKEStephanF ist ein richtiges Arbeitstier - DANKE

Blätternavigation – leicht anpassbar


Hier hab ich eine Blätternavigation für alle, die schon immer mal ne schnelle Lösung für Ihr Problem wie "In Datensätzen navigieren", "Navigation wie bei Google", "Blatternavigation", "eine Seite weiter", "Seite x von n" usw. gesucht haben.

Mit diesem kleinem Script erhaltet Ihr für Eure Datensätze, z.B. News, Gästebuch, Blogbeiträge, Adressenausgabe usw. eine Navigation in der Art von:

984 Datensätze Seite 10 von 99 | « Erste < 6 7 8 9 [10] 11 12 13 14 > Letzte »

Die Links lassen sich ganz leicht auch durch Bilder ersetzen, oder durch CSS an das eigene Layout anpassen.

Weiterhin habt Ihr, bzw. Euer Sitebesucher die Möglichkeit, die Anzahl der auszugebenden Datensätze auf einer Seite für die jeweilige Sitzung selbst zu bestimmen. Es kann hier zwischen den Werten 10, 20, 50 und 100 gewählt werden. Auch diese können natürlich bei bedarf geändert oder ganz entfernt werden.

Auch habt Ihr die Möglichkeit, durch klicken auf die Spaltenköpfe, die Spalte zu wählen, nach der die Ausgabe sortiert werden soll. Auf- und Absteigend.

Das Ur-Ur-Ur-Ur-Script zu Berechnung der Links habe ich vor ein paar Jahren mal im Netz gefunden und im Laufe der Zeit an meine Bedürfnisse angepasst und um oben beschriebene Funktionen erweitert. Von hieraus noch mal dank an Unbekannt.

Am Ende findet Ihr eine zip-Datei. Sie beinhaltet nochmals alle benötigten Dateien und einen sql-Dump um sofort probieren zu können.

Eine Live-Vorschau seht Ihr hier:
Funke & Funke Blätternavigation

Weitere Erklärungen findet Ihr in den Dateien auskommentiert:

Zuerst benötigen wir eine Datenbankverbindung. Diese steht in der
Datei dbConnection.inc.php
PHP-Code:
    // Datenbank Variablen
    
$dbserver     "localhost";        //localhost //
    
$dbname     "Funkes_Datenbank";            //Funkes_Datenbank            //
    
$dbuser     "root";                 // // root
    
$dbpass        "";               //
    
    
$db = @mysql_connect($dbserver$dbuser$dbpass);
    if(!
$db){die ("Konnte keine Verbindung zur Datenbank herstellen");}
    
mysql_select_db("$dbname",$db); 
Die Datei index.php für die gesamte Ausgabe
PHP-Code:
<?php
//Session starten
@session_start(); 
//Einbinden der Datenbankverbindung und der Funktion zum "weiter blättern"
@include('dbConnection.inc.php');
@include(
'blaetterNavigation.php');
//Die Seite, auf die sich die Links in unserer Blätternavigation beziehen soll, in unserem Fall immer die aktuelle Seite
$seite $_SERVER["PHP_SELF"];
//
//Kleine Funktion, um jede zweite Zeile der Ausgabetabelle mit einer anderen Hintergrundfarbe zu versehen
 
function rowcolor($zeile) { 
  if ((
$zeile/2)==floor($zeile/2)) { 
    
$retval="bgcolor='#999999'"
  } else { 
    
$retval="bgcolor='#666666'"
  }; 
  return 
$retval
};
    
//
//Anzahl Datensätze pro Seite
//++++++++++++++++++/    
if(!isset($_SESSION['perpage'])){
    
$_SESSION['perpage'] = 10;
}
//Wenn ein Button zum Ändern der Datensatzanzahl geklickt wurde
if(isset($_GET['datensatzAnzahl'])){
    
//Durch (int) Manipulationen unterdrücken
    
$_SESSION['perpage'] = (int)$_GET['datensatzAnzahl'];
    
$_GET['page'] = 1;
}
//Durch (int) Manipulationen unterdrücken
$perpage = (int)$_SESSION['perpage'];
//Whitelistprüfung der erlaubten Anzahl der Ausgabe von Datensätzen
$anzArr = array(10,20,50,100);
if(!
in_array($perpage,$anzArr)){ $perpage $spalten[0];}
//++++++++++++++++++/
//
//++++++++++++++++++/
if(!isset($_GET['order'])){
    
$order "ASC";
    
$orderN "DESC";
}
else{
    
$order = (string) $_GET['order'];
    
//Whitelistprüfung der Sortierreihenfolge
    
if($order !== "DESC" && $order !== "ASC") {$order "DESC";}
}
//++++++++++++++++++/
//Sortierung der Spalten und umgekehrte Reihenfolge in var $orderN speichern

if($order == "ASC"){
    
$orderN "DESC";
}
if(
$order == "DESC"){
    
$orderN "ASC";
}

//Bild für ASC und DESC
$bild "<img src=\"details.png\" border=\"0\" align=\"absmiddle\" />";
//++++++++++++++++++/
//Eine Spalte zum sortieren festlegen, falls keine angegeben ist, z.B. beim ersten Aufruf der Seite
if(!isset($_GET['s'])){
    
$s "stadt";
}
else{
    
$s = (string) $_GET['s'];
    
//Whitelistprüfung der erlaubten Spalten
    
$spalten = array('stadt','id','land','ew');
    if(!
in_array($s,$spalten)){ $s $spalten[0];}
}
//++++++++++++++++++/
//$page darf nur Integerwerte haben
//Wenn $page nicht gestzt oder 0, dann ist $page = 1
$page = (int) $_GET['page'];
if (!empty(
$page)) {
 if (
$page == 0$page 1;
} else 
$page 1;
//
//Abfrage der DB nach allen Datensätzen
$sql_alle = @mysql_query("SELECT id FROM deutschlandregionen");
//Anzahl aller ermittelten Datensätze in var $gesamt speichern
$gesamt = @mysql_num_rows($sql_alle);
//und Varibale $page auf 1 setzen, wenn mehr Datensätze vorhanden sind, als auszugebende Datensätze für eine Seite festgelegt wurden
if($perpage>$gesamt) {$page=1;}
//##############################################################
//Nun detailierte Abfrage für die jeweilige aktuell angeforderte Seite erstellen
//z. B.: "SELECT * FROM deutschlandregionen ORDER BY stadt DESC LIMIT 200, 10" ;
//Ausgesprochen: Hole 10 Datensätze aus Tabelle "deutschland", beginne ab dem 200. Datensatz und  sortiere nach Stadt absteigend
$sql="SELECT * FROM deutschlandregionen ORDER BY $s $order LIMIT ".($perpage*($page-1)).",".($perpage);
$ergebnis=mysql_query($sql,$db);
//Anzahl aller Seiten ermitteln, mit ceil wird auf die nächste Ganzzahl aufgerundet
//Beispiel: 302 Datensätze in Variable $gesamt, 10 Datensätze sind in Variable $perpage für die Ausgabe vorgesehen, 
//dann hat $page den Wert 31 (30 Seiten á 10 Datensätze, und eine letzte Seite 31 mit den restlichen beiden Datensätzen)
$pages ceil($gesamt/$perpage);
//Blätternavigation nur anzeigen wenn mehr als eine Seite erforderlich
if ($pages >){
 
//Die aktuelle Seite, welche die Blätternavigation enthält wird zusammen mit den $_GET-Parametern in der Variablen $link gespeichert
 //und der Funktion zur Ausgabe der Blätternavigation übergeben.
 //Auch werden oben generierte Varibalen $gesamt, $page, $perpage an die Funktion mit übergeben
 
$link $_SERVER["PHP_SELF"]."?order=$order&s=$s&"
 
$pagelink =pagelink($gesamt,$link,$page,$perpage);
 }
?>    
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Funke & Funke Tutorial Blätter-Navigation</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<?php
//Erzeugung der HTML Ausgabe
$ausgabe "<div id=\"inhalt\">\n";
$ausgabe .= "<h1>Deutschlands gr&ouml;&szlig;te St&auml;dte und Regionen</h1>\n";
$ausgabe .= "<div id=\"buttonDIV\">\n";
$ausgabe .= "<ul>\n";
//Den Links der Buttons 10,20,50,100 setzen sich zusammen aus der 
//aktuellen Seite ($seite), aktueller Sortierreihenfolge ( $order ), die sortierte Spalte ( $s ), die aktuelle Datensatz-Seite ( $page )
//und dem Wert den sie übergeben sollen ( $datensatzAnzahl )
$linkStringButtons $seite."?order=".$orderN."&s=".$s."&page=".$page;
$ausgabe .= "<li><a href=\"".$linkStringButtons."&datensatzAnzahl=100\">100</a></li>\n";
$ausgabe .= "<li><a href=\"".$linkStringButtons."&datensatzAnzahl=50\">50</a></li>\n";
$ausgabe .= "<li><a href=\"".$linkStringButtons."&datensatzAnzahl=20\">20</a></li>\n";
$ausgabe .= "<li><a href=\"".$linkStringButtons."&datensatzAnzahl=10\">10</a></li>\n";
$ausgabe .= "</ul>\n";
$ausgabe .= "</div>\n";
$ausgabe .= "<div class=\"naviDIV\">\n";
 
//Ausgabe der Blätternavigation OBEN
 //Blätterausgabe nur anzeigen wenn mehr als eine Seite erforderlich
if ($pages >){
 
//$link = $_SERVER["PHP_SELF"]."?";
 
$link $_SERVER["PHP_SELF"]."?order=".$order."&s=".$s."&"
 
$pagelink =pagelink($gesamt,$link,$page,$perpage);
 }
$ausgabe .= $gesamt." Datensätze &nbsp; ".$pagelink;
$ausgabe .= "</div>\n";
$ausgabe .= "<table id=\"tabelle\">\n";
$ausgabe .= "<tr>\n";
//Hier werden die Links der anklickbaren Spaltenüberschriften erzeugt
//Diese setzen sich zusammen aus 
//aktuellen Seite ($seite), aktueller Sortierreihenfolge ( $order ), die aktuelle Datensatz-Seite ( $page )
//und dem Wert den sie übergeben sollen, die betreffende Spalte ( $s )
//Die anschließende if-Abfrage sorgt dafür, dass das kleine Bild in der angeklickten und aktuellen Spalte erscheint.
$linkStringSpalten $seite."?order=".$orderN."&page=".$page;
$ausgabe .= "<th><a href=\"".$linkStringSpalten."&s=id\" >ID</a> "; if($s=="id") {$ausgabe .= $bild;} $ausgabe .= "</th>\n";
$ausgabe .= "<th><a href=\"".$linkStringSpalten."&s=stadt\" >Stadt</a> "; if($s=="stadt") {$ausgabe .= $bild;} $ausgabe .= "</th>\n";
$ausgabe .= "<th><a href=\"".$linkStringSpalten."&s=ew\" >Einwohner</a> "; if($s=="ew") {$ausgabe .= $bild;} $ausgabe .= "</th>\n";
$ausgabe .= "<th><a href=\"".$linkStringSpalten."&s=land\" >Bundesland</a> "; if($s=="land") {$ausgabe .= $bild;} $ausgabe .= "</th>\n";
$ausgabe .= "</tr>\n";
//Hier erfolgt die Ausgabe der Datensätze
while ($zeile=@mysql_fetch_array($ergebnisMYSQL_ASSOC)){
$ausgabe .= "<tr ".rowcolor($i)." onMouseover=\"this.bgColor='#FF9900'\" onMouseout=\"this.bgColor=".rowcolor($i)."\">\n";
$ausgabe .= "<td>".$zeile[id]."</td>\n";
$ausgabe .= "<td>".$zeile[stadt]."</td>\n";
$ausgabe .= "<td>".number_format($zeile[ew],0,".",".")."</td>\n";
$ausgabe .= "<td>".$zeile[land]."</td>\n";
$ausgabe .= "</tr>\n";
  
$i++;
  }
$ausgabe .= "</table>\n";
$ausgabe .= "</div>\n";
echo 
$ausgabe;
?>
<!-- ENDE <div id="inhalt">-->
</body>
</html>
und die Datei, welche die "Blätterfunktion" beinhaltet, blaetterNavigation.php
PHP-Code:
<?php
//####################################### Blätternavigation###################
function pagelink($results$address$page$perpage){

    
$curpage 0;
    
$pagenav '';
    
$firstlink '';
    
$prevlink '';
    
$lastlink '';
    
$nextlink '';
    
//Anzahl der Links rechts und links von der aktuellen Seite, inkl. "eine weiter" bzw. "eine zurück"
    
$pagelinkpages=5
    
//Wert 5 erzeugt z.B. folgende Ausgabe
    //<  4  5  6  7  [ 8 ]  9  10  11  12  >

    
$total $results;
    
//Berechnung aller Seiten
    
$totalpages ceil($results $perpage);
    
//Variablendeklaration für die Links erste, nächste, vorherige und letzte Seite
    
$showprev "0";
    
$shownext "0";
    
$showfirst "0";
    
$showlast "0";

    
//Wenn mehr als eine Seite vorhanden ist
    
if ($page 1) {
        
//Berechnung der vorherigen Seite
        
$prevpage $page 1;
        
//links der Aktuellen Seite mit Hilfe der Funktion total_array in Variable $prevnumbers speichern
        
$prevnumbers total_array($prevpage$perpage$results);
        
// Link "vorheriger" sichtbar machen, wenn obige Anweisung true ist
        
$showprev 1;
    }
    
//Wenn aktulle Seite kleiner ist als die gesamtzahl aller Seiten
    
if ($page $totalpages) {
        
//Berechnung der nächsten Seite
        
$nextpage $page 1;
        
//rechts der Aktuellen Seite mit Hilfe der Funktion total_array in Variable $prevnumbers speichern
        
$nextnumbers total_array($nextpage$perpage$results);
        
// Link "nächster" sichtbar machen, wenn obige Anweisung true ist
        
$shownext 1;
    }

    
//Berechnung zur Ausgabe der Links abhängig der aktuellen Seite und der Anzahl der darzustellenden Links ( $pagelinkpages )  
    
while ($curpage++ < $totalpages) {
        
//Wird der Link "Erste" in der Ausgabe benötigt
        
if (($curpage <= $page $pagelinkpages || $curpage >= $page $pagelinkpages) && $pagelinkpages != 0) {
            if (
$curpage == 1) {
                
$firstnumbers total_array(1$perpage$results);
                
$showfirst 1;
            }
            
//Wird der Link "Letzte" in der Ausgabe benötigt
            
if ($curpage == $totalpages) {
                
$lastnumbers total_array($totalpages$perpage$results);
                
$showlast 1;
            }
        } else {
            if (
$curpage == $page) {
                
$numbers total_array($curpage$perpage$results);
                
//Formatierung des Links für die aktuelle Seite
                
$pagelink1 .= "&nbsp;<span class=\"curentPage\">[$curpage]</span>&nbsp;";
            }else {
                
$pagenumbers total_array($curpage$perpage$results);
                
//Formatierung des Links rechts und links der aktuellen Seite
                
$pagelink1 .= "&nbsp;<a href=\"$address"."page=$curpage\" >$curpage</a>&nbsp;";
            }
        }
    }

//Ausgabe der gesamten Navigation
$pagelink "Seite&nbsp;<b>$page</b>&nbsp;von&nbsp;<b>$totalpages</b>&nbsp;|&nbsp;";
//Formatierung für den Link "Erste"
if($showfirst==1$pagelink .="&nbsp;<a href=\"$address"."page=1\">&laquo; Erste</a>&nbsp;";
//Formatierung für den Link "vorherige"
if($showprev==1$pagelink .="&nbsp;<a href=\"$address"."page=$prevpage\">&lt;</a>&nbsp;";
//aktuelle Seite und Zahlenlinks davor und dahinter einfügen
$pagelink .=$pagelink1;
//Formatierung für den Link "nächste"
if($shownext==1$pagelink .="&nbsp;<a href=\"$address"."page=$nextpage\">&gt;</a>&nbsp;";
//Formatierung für den Link "Letzte"
if($showlast==1$pagelink .="&nbsp;<a href=\"$address"."page=$totalpages\">Letzte &raquo; </a>&nbsp;";

return 
$pagelink;
}
//Funktion zur Berechnung von erstem und letztem Wert für die Links
function total_array($pagenumber$perpage$total){
    
$first $perpage * ($pagenumber 1);
    
$last $first $perpage;
    if (
$last $total$last $total;
    
$first++;
    return array(
'first' => $first'last' => $last);
}
//####################################### ENDE  Blätternavigation###################
?>
Ich wünsche allen Viel Spaß und Erfolg damit

P.S. keiner ist vollkommen. Wer Fehler findet, Verbesserungen hat oder sonst ein Problem mit dem Script hat, dann einfach hier posten.
Angehängte Dateien
Dateityp: zip Tutorial-BlaetterNavigation.zip (42,8 KB, 13x aufgerufen)
__________________
Schöne Grüße aus Thüringen
Stephan Page

Stell Dir vor, hier steht was und keiner liest es!! schon entdeckt?? F1 ist ne geile Taste
Ich beantworte keine E-Mails. Bitte alle Fragen ins Forum

schon gehört??? Das Internet ist voll, die lassen keinen mehr rein!!

Geändert von StephanF (31.03.2008 um 18:57 Uhr).
StephanF ist gerade online   Mit Zitat antworten
Linktipp

Alt 30.03.2008, 20:07   #2
TP-Moderator
 
Benutzerbild von Rizzo
 
Registriert seit: Aug 2004
Ort: Kaiserslautern
Rizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine UserRizzo lebt für das TP und seine User
Herzlichen Dank für das Script, Stephan

__________________
#.Viele Grüße, Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
chmod( 'internal.php', 0444 );
Rizzo ist gerade online   Mit Zitat antworten
Alt 02.04.2008, 13:43   #3
Super Moderator
 
Benutzerbild von Robert
 
Registriert seit: Dec 2000
Ort: Lüneburg
Robert hilft, wo's gehtRobert hilft, wo's gehtRobert hilft, wo's gehtRobert hilft, wo's geht
fein fein
__________________
Traum-Projekt.com "Klick zum Know-how"
Fragen/Probleme/Ideen ->rob@traum-projekt.com

"Die neue TP Galerie für unsere Fotografen" >>>
Robert ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik > Traum-Scripts
Blätternavigation – leicht anpassbar Blätternavigation – leicht anpassbar
« Einfacher Formmailer mit Reloadsperre | Pixlie - die schnelle Galerie »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:42 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 RC7 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67