Profil | Mitglieder | Registrieren | Start | Suche


PHP-Support.de » Programmierung » PHP & MySQL » Codeschnipsel » Erweiterte Blätterfunktion    » Hallo Gast [Login | Registrieren]

Neues Thema | Antworten   

Autor Beitrag
Evermore
Mitglied
Anfänger


Dabei seit: 30.10.2013
Herkunft: Bad Münster am Stein
Posts: 63
      Zitat | Bearbeiten

Hallo zusammen,

ich würde mir auch gerne Inhalte über mehrere Seiten anzeigen lassen nur ich verwende bereits $_GET[] und meine URL's sehen bereits so aus:

Zitat:
include.php?path=start


mal als Beispiel.

Bei den ganzen Postings hier hab ich leider den überblick verloren ob auch schon einer das gleiche wissen wollte wie ich...

Wie muss ich das mit dem Seitenumblättern machen da ich ja dort nicht mehr ? anhängen kann sondern nur noch &. Nur wenn ich das so in die Adresszeile eingebe bekomme ich Error 404...


02.12.2013, 01:18 Profil | PM | E-Mail  
FalkenaugeMihawk
Mitglied
Perfekter User


Dabei seit: 05.06.2010
Herkunft: Schweiz
Posts: 2619
      Zitat | Bearbeiten

include.php?path=start&page=2

Sollte so funktionieren. o.0


02.12.2013, 01:25 Profil | PM | E-Mail  
Evermore
Mitglied
Anfänger


Dabei seit: 30.10.2013
Herkunft: Bad Münster am Stein
Posts: 63
      Zitat | Bearbeiten

Ok getestet... läuft auch...

Klingt nach aber und es gibt auch ein aber xD

Wenn ich auf die Nummer der Seite klicke setzt der immer in das Adressfeld

Zitat:
include.php?seite=2

anstatt

Zitat:
include.php?path=start&seite=2


Ich habe den Quellcode 1:1 aus diesem Thread übernommen (falls die Frage kommen sollte gib mal den Scriptcode)


03.12.2013, 20:32 Profil | PM | E-Mail  
Evermore
Mitglied
Anfänger


Dabei seit: 30.10.2013
Herkunft: Bad Münster am Stein
Posts: 63
      Zitat | Bearbeiten

ich mache mal nen Push da leider die Antworten nicht auf der Übersicht angezeigt werden.


09.12.2013, 10:22 Profil | PM | E-Mail  
RoseRed
Mitglied
Anfänger


Dabei seit: 22.03.2013
Herkunft: keine Angabe
Posts: 59
      Zitat | Bearbeiten

Wenn ich es richtig verstehe, hast du PATH selber festgelegt oder?


Du musst jedes mal beim aufrufen, die Variable neu übergeben sonst vergisst er sie.

Also wäre schon interessant zu sehen wie du deine Variable path einbindest


09.12.2013, 11:32 Profil | PM | E-Mail  
Evermore
Mitglied
Anfänger


Dabei seit: 30.10.2013
Herkunft: Bad Münster am Stein
Posts: 63
      Zitat | Bearbeiten

Richtig.
PATH habe ich selbst gesetzt zum includen von anderen PHP-Dateien und um die Sicherheit etwas zu erhöhen da man nicht sieht wie die PHP-Datei lautet und wo sie liegt.

 PHP 
1:
$site = $_GET['path'];

anschießend nutze ich

 PHP 
1:
switch($site) {

danach nutze ich case um die diversen Seiten zu includen um die in einer DIV mir anzeigen zu lassen. Man kann es vergleichen wie mit FRAMES zu arbeiten nur das es halt keine sind.


09.12.2013, 12:38 Profil | PM | E-Mail  
Evermore
Mitglied
Anfänger


Dabei seit: 30.10.2013
Herkunft: Bad Münster am Stein
Posts: 63
      Zitat | Bearbeiten

Ich habe es geschafft...

sollte man bereits mit folgendem Schnippsel "über eine php seite eine Website aufbauen also sowas wie index.php?id=123" arbeiten so wird es mit diesem Schnippsel für die Blätterfunktion etwas schwerer.
Eure Adresszeile sieht dann so aus:

Zitat:
http://www.domain.tld/datei.php?path=beispiel

Ich habe mal soweit alles editiert und es zum laufen gebracht folgendes bitte dem Code entnehmen:

 PHP 
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:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
<?php
function blaetterfunktion($seite,$maxseite,$url="",$anzahl=4,$get_name="page"// $get_name MUSS gleich mit Zeile 95 sein!!!

    
$url "include.php?path=".$_GET["path"]; // MUSS an die eigene Seite angepasst werden!!!
    
$anhang preg_match('/\&/'$url) ? '?' '&amp;'// !!!Gefixte Version da ereg() und eregi() ab PHP6 nicht mehr funktionieren

    
if(substr($url,-1,1) == "?")
    { 
        
$url substr_replace($url,"",-1,1); 
    } 
    else if(
substr($url,-1,1) == "&")
    { 
        
$anhang "&"
        
$url substr_replace($url,"",-1,1); 
    } 

    if(
$anzahl%!= 0)
    {
        
$anzahl++;
    }

    
$a $seite-($anzahl/2); 
    
$b 0
    
$blaetter = array(); 
    
    while(
$b <= $anzahl
    { 
        if(
$a AND $a <= $maxseite
        { 
            
$blaetter[] = $a
            
$b++; 
        } 
        else if(
$a $maxseite AND ($a-$anzahl-2)>=0
        { 
            
$blaetter = array(); 
            
$a -= ($anzahl+2); 
            
$b 0
        } 
        else if(
$a $maxseite AND ($a-$anzahl-2)<0
        { 
            break; 
        } 

        
$a++; 
    } 
    
    
$return "<b>Seite:</b>"// Kann man ändern in Page, usw. je nach Sprache
    
    
if(!in_array(1,$blaetter) AND count($blaetter) > 1
    { 
        if(!
in_array(2,$blaetter))
        {
            
$return .= "&nbsp;<a href=\"{$url}{$anhang}{$get_name}=1\">erste</a>&nbsp;...";
        }
        else
        {
            
$return .= "&nbsp;<a href=\"{$url}{$anhang}{$get_name}=1\">1</a>&nbsp;";
        }
    } 

    foreach(
$blaetter AS $blatt
    { 
        if(
$blatt == $seite)
        {
            
$return .= "&nbsp;<b>$blatt</b>&nbsp;"
        }
        else
        {
            
$return .= "&nbsp;<a href=\"{$url}{$anhang}{$get_name}=$blatt\">$blatt</a>&nbsp;";
        }
    } 

    if(!
in_array($maxseite,$blaetter) AND count($blaetter) > 1
    { 
        if(!
in_array(($maxseite-1),$blaetter))
        {
            
$return .= "...&nbsp;<a href=\"{$url}{$anhang}{$get_name}=$maxseite\">letzte</a>&nbsp;";
        }
        else
        {
            
$return .= "&nbsp;<a href=\"{$url}{$anhang}{$get_name}=$maxseite\">$maxseite</a>&nbsp;";
        }
    } 

    if(empty(
$return))
    {
        return 
"&nbsp;"
    }
    else
    {
        return 
$return;
    }
}    

@
$seite $_GET["page"];

if(!isset(
$seite))
{
    
$seite 1;
}


$link mysql_connect("localhost","Username","Passwort") or die ("Keine Verbindung moeglich"); 
mysql_select_db("Datenbank") or die ("Die Datenbank existiert nicht");


$eintraege_pro_seite 10//Einträge pro Seite 
$start $seite $eintraege_pro_seite $eintraege_pro_seite;

$abfrage "SELECT * FROM Tabelle LIMIT $start$eintraege_pro_seite"
$ergebnis mysql_query($abfrage); 
while(
$row mysql_fetch_object($ergebnis)) // Es kann auch mysql_fetch_array() verwendet werden

    echo 
$row->id."<br>"// Hier die Ausgabe der Einträge bei mysql_fetch_array() mit $row['id']


$result mysql_query("SELECT COUNT(*) FROM Tabelle"); // MUSS die gleiche Tabelle wie oben angegeben
$menge mysql_fetch_row($result); 
$menge $menge[0];
$wieviele_seiten ceil($menge $eintraege_pro_seite); 

echo 
'<div align="center">'.blaetterfunktion($seite,$wieviele_seiten).'</div>';
?>

Wenn Ihr den Schnippsel dann so verwendet steht nachdem ihr z.B. auf Seite 2 geklickt habt, bei euch in der Adresszeile:

Zitat:
http://www.domain.tld/datei.php?path=beispiel&page=2


PS: Mir ist bekannt das man diverse Codezeilen kürzen kann. Doch selbst ich als Laie komme da manchmal durcheinander und die Anfänger sowieso. Deshalb habe ich alle Zeilen ausführlich gemacht ohne Zeichen zu sparen. Ich selbst packe auch die Funktionen in eine extra Datei und include diese.




Post wurde schon 5x editiert, das letzte mal am 09.12.2013 um 16:42 von Evermore
09.12.2013, 15:35 Profil | PM | E-Mail  
Andreas2014
Mitglied
Neuling


Dabei seit: 12.04.2014
Herkunft: keine Angabe
Posts: 2
      Zitat | Bearbeiten

Hallo,
ich habe gerade die erweiterte Blätterfunktion auf meiner Wordpress-Seite eingebaut. Es funktioniert alles tadellos, danke für das Script :-)

Nun habe ich aber trotzdem ein Problem. Ich möchte statt der dynamischen URL, also ?seite=x, gerne eine statische URL haben, also statt des Parameters lediglich eine Zahl "x" mit Schrägstrich. Das habe ich in Wordpress über rewrite rule auch eingerichtet. In der Blätterfunktion habe ich entsprechend das "?", die Variable "seite" sowie das "=" entfernt, sodass die URL in den Paginierungs-Links etwa so aussieht: "www.mydomain.de/unterverzeichnis/3/".
Die Links werden auch richtig angelegt, jedenfalls wenn man sich noch auf der ersten Seite befindet. In dem Moment, wo ich auf eine der weiteren Seiten klicke, z.B. auf Seite 2, und DANN auf Seite 3 gehen möchte, sieht der entsprechende Link plötzlich so aus: "www.mydomain.de/unterverzeichnis/2/3", die $url enthält also plötzlich am Ende die aktuelle Seite (inkl. "/").
Wie kann ich das Script so modifzieren, dass die Links richtig bleiben?

Vielen Dank für die Hilfe im voraus :-)

Gruß, Andreas


12.04.2014, 20:38 Profil | PM | E-Mail  
Andreas2014
Mitglied
Neuling


Dabei seit: 12.04.2014
Herkunft: keine Angabe
Posts: 2
      Zitat | Bearbeiten

Habe es selbst hinbekommen. Die Zeilen, in denen die Links generiert werden, habe ich folgendermaßen modifiziert:

 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
if(!in_array(1,$blaetter) AND count($blaetter) > 1) 
      { 
      if(!in_array(2,$blaetter)) $return .= "&nbsp;<a href=\"/unterverzeichnis/1\">1</a>&nbsp;..."; 
      else $return .= "&nbsp;<a href=\"/unterverzeichnis/1\">1</a>&nbsp;"; 
      } 

   foreach($blaetter AS $blatt) 
      { 
      if($blatt == $seite) $return .= "&nbsp;<b>$blatt</b>&nbsp;"; 
      else $return .= "&nbsp;<a href=\"/unterverzeichnis/$blatt\">$blatt</a>&nbsp;"; 
      } 

   if(!in_array($maxseite,$blaetter) AND count($blaetter) > 1) 
      { 
      if(!in_array(($maxseite-1),$blaetter)) $return .= "...&nbsp;<a href=\"/unterverzeichnis/$maxseite\">letzte</a>&nbsp;"; 
      else $return .= "&nbsp;<a href=\"/unterverzeichnis/$maxseite\">$maxseite</a>&nbsp;"; 
      }





Post wurde schon 1x editiert, das letzte mal am 14.04.2014 um 09:37 von Andreas2014
14.04.2014, 09:36 Profil | PM | E-Mail  
Htaccess
Mitglied
Sehr guter User


Dabei seit: 22.08.2010
Herkunft: Deutschland
Posts: 738
      Zitat | Bearbeiten

Hallo Andreas2014, in WordPress gibt es schon eine fertige Blätterfunktion. Diese kannst du ganz leicht und ganz einfach einbinden. Hier mal ein Beispiel wie ich es zum Beispiel in der category.php bzw archive.php in meinem WP Template realisiert habe:

 PHP 
1:
2:
3:
4:
5:
6:
<div class="nav-previous alignleft">
    <?php next_posts_link'Ältere Beiträge' ); ?>
</div>
<div class="nav-next alignright">
    <?php previous_posts_link'Neuere Beiträge' ); ?>
</div>



17.04.2014, 16:03 Profil | PM | E-Mail  
Loddar1
Mitglied
Neuling


Dabei seit: 05.06.2022
Herkunft: keine Angabe
Posts: 1
      Zitat | Bearbeiten

Hallo Andavos,
die veröffentlichung deiner erweiterten Blaetterfunction ist aller Ehre wert
und gefällt mir sehr gut.
Ihr benutzt hier im Forum wohl eine Bessere/angepastere Version oder?

Mein Problem, habe eine Download-seite mit Kategorien und Downloads alles in einer Seite.

Wenn ich die Blaetter-funktion nutze sieht mein Link für Kategorien so:
 PHP 
1:
$url = "index.php?sid=".$_GET["sid"];


Für die Downloads aber so:
 PHP 
1:
$url = "index.php?sid=".$_GET["sid"]."&jump=show&cat=".$_GET["cat"]."&catw=".$_GET["catw"];


wie kann ich das bewältigen?




Post wurde schon 1x editiert, das letzte mal am 05.06.2022 um 15:18 von Loddar1
05.06.2022, 15:16 Profil | PM | E-Mail  
Seiten (4):  2  3  4 
PHP-Support.de » Programmierung » PHP & MySQL » Codeschnipsel » Erweiterte Blätterfunktion   

Neues Thema | Antworten   


Powered by Command Board 1.0 - Beta 2.0 © 2004-08 PHP-Einfach | Impressum | Datenschutz