Logo - MyWebsolution.de
User gesamt  :  2316802
User online  :  1
KubaSeoTräume, PHP Forum, PHP Community and more ... MyWebsolution.de!
   
   
 
Registrieren Login User F.A.Q Suche Home

eingeloggt bleiben

MyWebsolution.de Foren » Anfängerfragen PHP und MYSQL » ausgabe und blättern

Seite: <  1 2 Posts pro Seite: 5 10 20
Autor Thread
28.01.2007 12:15 Uhr
ulmli
Forenuser
registriert 03.01.2007
wohnt in
Beiträge 46
:oops:
jo da hätt ich auch selber drauf kömmen können *schäm*
danke
Gruß
ulmli
Profil ansehen
28.01.2007 12:22 Uhr
ulmli
Forenuser
registriert 03.01.2007
wohnt in
Beiträge 46
:mygod:
funkioniert perfekt
grazie :)
Profil ansehen
28.01.2007 13:36 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Immer wieder gern :D


Profil ansehen Mail senden
26.05.2007 16:33 Uhr
mdean
Forenposter
 
registriert 03.01.2007
wohnt in Schweiz
Beiträge 90
Sry Flitze, dass ich jetzt wieder mit so einem blöden Problem komme, aber ich weiss da nicht weiter. Es die letzte Hürde die ich überwinden muss, bevor ich dann endlich meine Page veröffentlichen kann.

Ich hab sowohl diesen Thread als auch das Tutorial gelesen und ich versteh immernoch Bahnhof:oops:...

Ich brauche eine Blätterfunktion bei meiner Page, bei der man verschiedene Interpreten auswählen kann (siehe meine früheren Posts). Pro Seite sollten etwa 40 Datensätze angezeigt werden. Ich hab versucht den Code anzupassen und dann bei mir reinzukopieren, aber es erschienen einfach die Zahlen als Link ohne irgend etwas zu bewirken.

Hier nochmal alles was an code vorkommt:
Zuerst habe ich ja mit folgendem code eine Buchstabennavigation:
PHP:

<? $_GET['Interpret'] = isset($_GET['Interpret'])?$_GET['Interpret']:'A';
    
    
// Navi-Links erzeugen
    
$alphabet = array("A""B""C""D""E""F""G""H""I""J""K""L""M""N""O""P""Q""R""S""T""U""V""W""X""Y""Z");
    foreach(
$alphabet as $letter)
        echo 
"<a href=\"".$_SERVER['PHP_SELF']."?Interpret=".$letter."\">".$letter."</a> | \n";
    
    if(isset(
$_GET['Interpret'])){
        
// auf ein Zeichen kürzen
        
$_GET['Interpret'] = substr($_GET['Interpret'],0,1);
        
$sql "SELECT
                        NewName,
                        Interpret,
                        Songname,
                       Freigabe
                FROM
                        notes
                WHERE
                        Freigabe IS NOT NULL
               AND        Interpret LIKE '"
.mysql_real_escape_string($_GET['Interpret'])."%'
               GROUP BY Interpret
               ORDER BY Interpret ASC
               "
;
         
$result mysql_query($sql);

    }
?>


So gebe ich die Interpreten dann aus:
PHP:
<?
if (mysql_num_rows($result)==0) {
    echo 
"Keine Datensätze vorhanden";
    }
    while(
$row mysql_fetch_assoc($result)){
            echo 
"<a href=\"detail.php?Int=".$row['Interpret']."\">".$row['Interpret']."</a><br>\n";
        }
?>


Und hier wäre mein etwas angepasster Code der Blätterfunktion:
PHP:
<?php
    
// 1. Prüfen, ob ?seite=.. übergeben wurde, falls nein, Seite 1 laden
    
$_GET['seite']=isset($_GET['seite'])?(int)$_GET['seite']:1;
    
// 3. Durch (int) 'casten' wir $_GET['seite'] auch gleich als Zahl, 
    // also kann auch ein Buchstabe drin stehn, ohne das was passiert

    // 2. höchste Seitenzahl ausrechnen 
    
$sql "SELECT
                    COUNT(*)
            FROM
                    notes
           "
;
    
$result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
    
$anzahl mysql_result($result0);
    
    
$seiten_gesamt ceil($anzahl/10); // Seiten ausrechnen und aufrunden

    // 2. Prüfen, ob der übergeben Wert zu groß oder zu klein ist und
    // wenn das der Fall ist, den Wert anpassen

    
if($_GET['seite'] < 1)
        
$_GET['seite'] = 1;
    if(
$_GET['seite'] > $seiten_gesamt)
        
$_GET['seite'] = $seiten_gesamt;

    
// Seitenzahlen anzeigen
    
for($i=1$i<=$anzahl$i++)
        echo 
"<a href=\"index.php?seite=".$i."\">$i</a> \n";

    
// Starpunkt für das Auslesen berechnen
    
$seite = ($_GET['seite']-1)*10;
    
    
// Datensätze auslesen
    
$sql "SELECT
                        NewName,
                        Interpret,
                        Songname,
                        Freigabe
                FROM
                        notes
                WHERE
                        Freigabe IS NOT NULL
               AND        Interpret LIKE '"
.mysql_real_escape_string($_GET['Interpret'])."%'
               GROUP BY Interpret
               ORDER BY Interpret ASC
               LIMIT
                    "
.$seite.",10
               "
;
    
$result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
?>


Aber wie gesagt der gibt mir einfach die so viele Zahlen aus, wie Datensätze in meiner DB sind, was ja nicht sein sollte, da es ja nur eine nächste Seitenzahl anzeigen sollte, wenn die Datensätze z.B. 40 übersteigt. Und was das ganze ja so kompliziert macht, ist das ich ja eine Buchstabennavigation habe.

Ein Beispiel wie es eigentlich funktionieren sollte:
Der User klickt auf B, alle Interpreten mit dem Buchstaben B werden angezeigt (funktioniert ja auch schon). Sollte es aber jetzt mehr als 40 Interpreten mit Anfangsbuchstabe B haben so sollte der User auf eine 2 klicken können um die Datensätze 40-80 sehen zu können.

Wäre verdammt froh wenn du mir bei dieser letzten Hürde noch helfen könntest. Ist sicher das letzte mal dass ich dich nach code fragen werde. Aber ich weiss da einfach nicht weiter....:oops:

Vielen Dank schon im voraus...
Profil ansehen
27.05.2007 19:14 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Also ich denke mal der Hund liegt bei folgendem Codestück begraben:

PHP:
<?php
    
// 2. höchste Seitenzahl ausrechnen 
    
$sql "SELECT
                    COUNT(*)
            FROM
                    notes
           "
;
    
$result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
    
$anzahl mysql_result($result0);
?>


Du zählst alle Datensätze, die in notes vorhanden sind, was du ja bereits selbst bemerkt hast :

Zitat:
Aber wie gesagt der gibt mir einfach die so viele Zahlen aus, wie Datensätze in meiner DB sind, was ja nicht sein sollte, [...]


Du könntest es mal hiermit versuchen:

PHP:
<?php
    
// 2. höchste Seitenzahl ausrechnen 
    
$sql "SELECT
                    COUNT(Interpret)
            FROM
                    notes
            WHERE 
                    Freigabe IS NOT NULL AND
                    Interpret LIKE '"
.mysql_real_escape_string($_GET['Interpret'])."%'
           "
;
    
$result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
    
$anzahl mysql_result($result0);
?>


Gruß
Flitze


Profil ansehen Mail senden
28.05.2007 10:55 Uhr
mdean
Forenposter
 
registriert 03.01.2007
wohnt in Schweiz
Beiträge 90
Nein funktioniert irgendwie immernoch nicht. Wenn ich die meisten Buchstaben anklicke wid einfach irgendeine Zahl angezeigt, und bei den Buchstaben wo noch keine Datensätze vorhanden sind, kommt da die Fehlermeldung dass ein Fehler in meiner Mysql Syntax besteht.

Ich denke ich muss noch was bei den GET parameter ändern. Hab das gefühl da stimmt was nicht, denn wenn ich auf nen Buchstaben klicke steht in der Adresszeile "Interpret=M" und wenn ich dann aber die Zahl anklicke steht nur noch "seite=5". Aber es sollte doch irgend so was stehen: "Interpret=A&seite=5" oder nicht?

Die Zahlen dies mir ausgibt stimmen ja auch nicht, denn eigentlich sollten ja noch keine angezeigt werden, denn hab noch nicht mehr als 10 Datensätze in der DB und schon gar nicht von dem jeweiligen Anfangsbuchstaben.

Was muss ich noch ändern?
Profil ansehen
28.05.2007 20:39 Uhr RE:
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Zitat:
mdean
Nein funktioniert irgendwie immernoch nicht. Wenn ich die meisten Buchstaben anklicke wid einfach irgendeine Zahl angezeigt, und bei den Buchstaben wo noch keine Datensätze vorhanden sind, kommt da die Fehlermeldung dass ein Fehler in meiner Mysql Syntax besteht.

Was heißt 'die meisten'? Du musst schon sagen, welche das konkret sind und was diese Buchstaben in Bezug auf deine Tabelle gemeinsam haben, sonst kann man keine Rückschlüsse daraus ziehen ;)

Das gleiche gilt für 'irgendeine Zahl' .. wie denn 'irgendeine'?

Zur Fehlermeldung bitte die genaue Meldung mit den dazugehörigen Codezeilen posten, Glaskugel ist grad in Reparatur :P

Zitat:

Ich denke ich muss noch was bei den GET parameter ändern. Hab das gefühl da stimmt was nicht, denn wenn ich auf nen Buchstaben klicke steht in der Adresszeile "Interpret=M" und wenn ich dann aber die Zahl anklicke steht nur noch "seite=5". Aber es sollte doch irgend so was stehen: "Interpret=A&seite=5" oder nicht?

Richtig. Dein gewählter Interpreten-Anfangsbuchstabe muss immer mit übergeben werden, sonst verliert er ja seine Gültigkeit. Also:

PHP:
<?php
    
// Seitenzahlen anzeigen
    
for($i=1$i<=$anzahl$i++)
        echo 
"<a href=\"index.php?Interpret=".$_GET['Interpret']."&seite=".$i."\">$i</a> \n";
?>


Zitat:

Die Zahlen dies mir ausgibt stimmen ja auch nicht, denn eigentlich sollten ja noch keine angezeigt werden, denn hab noch nicht mehr als 10 Datensätze in der DB und schon gar nicht von dem jeweiligen Anfangsbuchstaben.

Was muss ich noch ändern?

Du musst mal Testausgaben machen, denn der Fehler liegt wohl darin, dass dein Script nicht das macht, was du von ihm erwartest. Also lass dir doch mal so Sachen wie $anzahl ausgeben.


Profil ansehen Mail senden
29.05.2007 18:41 Uhr
mdean
Forenposter
 
registriert 03.01.2007
wohnt in Schweiz
Beiträge 90
Ok also, machen wir eine Fehleranalyse:):

Also, wenn ich jetzt den Buchstaben A auswähle, dann zeigts mir 3 Interpreten an. Aber da sind dann die Seitenzahlen wieder falsch, weil dort gibts mir dann 4 Seiten an (1,2,3,4). Eigentlich dürfte es ja noch nichts anzeigen, da es ja nur 3 Interpreten ausgibt und das Limit auf 10 gesetzt ist.

Wenn ich jetzt aber z.B. auf B klicke wo es nur 1 Interpreten ausgibt, kommt nur die Seitenzahl 1 (Dürfte ja aber theoretisch wieder keine Seitenzahl ausgegeben werden).

Wenn ich jetzt aber auf D klicke, wo keine Datensätze vohanden sind, und wo (siehe Code weiter oben) jetzt stehen sollte: "Keine Datensätze vorhanden, kommt folgende MySQL Fehlermeldung:
Zitat:
SELECT
NewName,
Interpret,
Songname,
Freigabe
FROM
notes
WHERE
Freigabe IS NOT NULL
AND Interpret LIKE 'D%'
GROUP BY Interpret
ORDER BY Interpret ASC
LIMIT
-10,10
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-10,10' at line 14


Jetzt zu den Testausgaben:
Ich bleibe bei dem Beispiel von Buchstabe A, wo 3 Interpreten angezeigt werden.
$anzahl ist dann = 4
$seite= 0
$seiten_gesamt = 1

Ich weiss nicht, vielleicht kombiniere ich die Codes auch falsch, hier mal der den Code den ich folgendermassen zusammengefügt habe (vielleicht ist hier der Fehler?):
PHP:
<? $_GET['Interpret'] = isset($_GET['Interpret'])?$_GET['Interpret']:'A';
    
    
// Navi-Links erzeugen
    
$alphabet = array("A""B""C""D""E""F""G""H""I""J""K""L""M""N""O""P""Q""R""S""T""U""V""W""X""Y""Z");
    foreach(
$alphabet as $letter)
        echo 
"<a href=\"".$_SERVER['PHP_SELF']."?Interpret=".$letter."\">".$letter."</a> | \n";
    
    if(isset(
$_GET['Interpret'])){
        
// auf ein Zeichen kürzen
        
$_GET['Interpret'] = substr($_GET['Interpret'],0,1);
            
// 1. Prüfen, ob ?seite=.. übergeben wurde, falls nein, Seite 1 laden
    
$_GET['seite']=isset($_GET['seite'])?(int)$_GET['seite']:1;
    
// 3. Durch (int) 'casten' wir $_GET['seite'] auch gleich als Zahl, 
    // also kann auch ein Buchstabe drin stehn, ohne das was passiert

    // 2. höchste Seitenzahl ausrechnen 
    // 2. höchste Seitenzahl ausrechnen 
    
$sql "SELECT
                    COUNT(Interpret)
            FROM
                    notes
            WHERE 
                    Freigabe IS NOT NULL AND
                    Interpret LIKE '"
.mysql_real_escape_string($_GET['Interpret'])."%'
           "
;
    
$result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
    
$anzahl mysql_result($result0);
    
    
$seiten_gesamt ceil($anzahl/10); // Seiten ausrechnen und aufrunden

    // 2. Prüfen, ob der übergeben Wert zu groß oder zu klein ist und
    // wenn das der Fall ist, den Wert anpassen

    
if($_GET['seite'] < 1)
        
$_GET['seite'] = 1;
    if(
$_GET['seite'] > $seiten_gesamt)
        
$_GET['seite'] = $seiten_gesamt;

    
// Seitenzahlen anzeigen
    
for($i=1$i<=$anzahl$i++)
        echo 
"<a href=\"index.php?Interpret=".$_GET['Interpret']."&seite=".$i."\">$i</a> \n";

    
// Starpunkt für das Auslesen berechnen
    
$seite = ($_GET['seite']-1)*10;
    
    
// Datensätze auslesen
    
$sql "SELECT
                        NewName,
                        Interpret,
                        Songname,
                        Freigabe
                FROM
                        notes
                WHERE
                        Freigabe IS NOT NULL
               AND        Interpret LIKE '"
.mysql_real_escape_string($_GET['Interpret'])."%'
               GROUP BY Interpret
               ORDER BY Interpret ASC
               LIMIT
                    "
.$seite.",10
               "
;
    
$result mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
    }
?>
Profil ansehen
29.05.2007 21:32 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
ok, ich glaube ich habe zwei Fehlerquellen gefunden:

1. Die falsche Anzeige der Seitenzahlen

Wie dir vielleicht aufgefallen ist, werden immer so viele Seiten angezeigt wie Datensätze gefunden werden (Bei A warens 4, bei B wars 1). Das legt den Verdacht nahe, dass der Fehler damit zu tun hat und siehe da:

PHP:
<?
    
// Seitenzahlen anzeigen
    
for($i=1$i<=$anzahl$i++)
        echo 
"<a href=\"index.php?Interpret=".$_GET['Interpret']."&seite=".$i."\">$i</a> \n";
?>


Die Seitenzahlen richten sich nach $anzahl und was steht in $anzahl ? Genau, die Anzahl der gefundenen Datensätze! So, das ist der Fehler, denn es soll ja nur bei jedem 11. Eintrag eine neue Seitenzahl erzeugt werden. Eine entsprechende Rechnung steht bereits in deinem Quellcode:

PHP:
<?php
    $seiten_gesamt 
ceil($anzahl/10); // Seiten ausrechnen und aufrunden
?>


Du musst in der for-Schleife also $anzahl durch $seiten_gesamt ersetzen.

2. Die Fehlermeldung, wenn kein Datensatz vorhanden ist

Du sagst selbst :
Zitat:
Wenn ich jetzt aber auf D klicke, wo keine Datensätze vohanden sind, und wo (siehe Code weiter oben) jetzt stehen sollte: "Keine Datensätze vorhanden, kommt folgende MySQL Fehlermeldung [...]


Da fällt dem geschulten Auge doch auf:
Nirgends im Quellcode machst du eine Abfrage, ob auch Datensätze vorhanden sind!
Nachdem du die Anzahl der Datensätze festgestellt hast, musst du auch prüfen, ob überhautp welche gefunden wurden..

PHP:
<?php
    
if (!$anzahl) {
        echo 
"Es befinden sich keine Daten in der Tabelle.\n";
    }
    else {
    
// ...
    
}
?>


So, nun müsstest du eigentlich alleine hinkriegen ;) Wenn ich dir jetzt ne komplette Lösung schreibe lernnstes ja doch nich :D


Profil ansehen Mail senden
29.05.2007 22:12 Uhr
mdean
Forenposter
 
registriert 03.01.2007
wohnt in Schweiz
Beiträge 90
Ja ich weiss, aber bei dem Problem blick ich nicht durch:). Muss aber schon sagen, dank dir hab ich ne Menge gelernt, hät nie gedacht das ich so "weit" komme. Und dass bin ich auch nur weil du dir Zeit genommen hast mir zu helfen, was ja nicht selbstverständlich ist. Nochmal ein fettes danke für das:D.

Ich werds gleich morgen ausprobieren.

Aber zu der Abfrage ob bereits Datensätze vorhanden sind, hast du meinen geposteten Code übersehen:
Zitat:
So gebe ich die Interpreten dann aus:
PHP:
 
<?
if (mysql_num_rows($result)==0) {
    echo 
"Keine Datensätze vorhanden";
    }
    while(
$row mysql_fetch_assoc($result)){
            echo 
"<a href=\"detail.php?Int=".$row['Interpret']."\">".$row['Interpret']."</a><br>\n";
        }
?>
Profil ansehen
30.05.2007 13:48 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
da fehlt ein

else

:)

Denn er soll die Bearbeitung ja abbrechen, wenn keine Interpreten gefunden werden!


Profil ansehen Mail senden
30.05.2007 15:48 Uhr
mdean
Forenposter
 
registriert 03.01.2007
wohnt in Schweiz
Beiträge 90
:mygod: Yessss, Danke funktioniert jetzt alles wie es soll! :D. So jetzt nur noch ein paar Details bereinigen und dann sollte meine Page endlich startklar sein 8)

Noch ne Frage die mich nebenbei interessiert, ich aber nicht umbedingt machen muss: Wie machst du es so, dass wenn ich z.B. auf Seite 2 bin, nur noch die Zahl 2 als text und nicht mehr als link anzeigt?

Dieser Beitrag wurde am 30.05.2007 um 16:24:48 Uhr von mdean zum 5. Mal editiert.
Profil ansehen
30.05.2007 17:55 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Ich denk du hast das Tut gelesen :P

Auszug (man beachte den Kommentar "// Für die aktuelle Seite wird kein Link erzeugt.." ):

PHP:
<?php
    
// Prüft, ob die Anzeige von "<" sinnvoll ist
    
if ($start != 1)
        echo 
"<a href=\"daten.php?per_page=".$per_page."&page_number=".($start-1)."\">&lt;</a>&nbsp\n";
    for(
$i=1$i<=$num_pages$i++) {
        
// Für die aktuelle Seite wird kein Link erzeugt..
        
if ($i==$start)
            echo 
$i."\n";
        
// Für alle anderen schon.
        
else
            echo 
"<a href=\"daten.php?per_page=".$per_page."&page_number=".$i."\">".$i."</a>\n";
    }
    
// Prüft, ob die Anzeige von ">" sinnvoll ist
    
if ($start != $num_pages)
        echo 
"&nbsp<a href=\"daten.php?per_page=".$per_page."&page_number=".($start+1)."\">&gt;</a> \n";
?>


Gruß


Profil ansehen Mail senden
30.05.2007 19:59 Uhr
mdean
Forenposter
 
registriert 03.01.2007
wohnt in Schweiz
Beiträge 90
:oops: hat ich ganz vergessen, hab mich so auf den code von ulmi konzentriert.

Aber jetzt klappt alles, vielen Dank nochmals :trink:
Profil ansehen
05.06.2007 19:18 Uhr
mdean
Forenposter
 
registriert 03.01.2007
wohnt in Schweiz
Beiträge 90
:eek: hab nochmal ein Fehler gefunden. Nicht schlimmes, aber sollte trotzdem noch gelöst werdenxD.
PHP:
<? $sql "SELECT
                    COUNT(Interpret)
            FROM
                    notes
            WHERE 
                    Freigabe IS NOT NULL AND
                    Interpret LIKE '"
.mysql_real_escape_string($_GET['Interpret'])."%'
           "
?>

Hier zählt es alle Interpreten. Es sollte aber nur die verschiedenen zählen, dass heisst die, die gleich heissen, sollten als 1 gezählt werden.

Dieser Beitrag wurde am 05.06.2007 um 19:18:34 Uhr von mdean zum 1. Mal editiert.
Profil ansehen
06.06.2007 11:01 Uhr
Negura
Forenposter
 
registriert 06.12.2006
wohnt in
Beiträge 57
versuch es mal so

PHP:

<?
 $query  
"SELECT COUNT(DISTINCT(Interpret)) ";
 
$query .= "FROM notes ";
 
$query .= "WHERE Freigabe IS NOT NULL ";
 
$query .= "AND Interpret LIKE '" mysql_real_escape_string($_GET['Interpret']) . "%'";
?>
Profil ansehen
04.10.2007 22:59 Uhr nochmal blättern
ulmli
Forenuser
registriert 03.01.2007
wohnt in
Beiträge 46
hi flitze,
ich hoffe ich kann hier noch fragen stellen.

nun habe ich damals ja die blätterfunktion super hinbekommen aber jetzt habe ich bei meinen suchfragen mittlerweile soviel einträge und dann stehen da oben ewig viele seitenzahlen.
gibt es eine zusatzfunktion oder so dass man die so ausgeben kann wie z.b. in foren

z.B
[vorherige seite]...3 4 5 6 7 ... [nächste Seite]

wäre klasse könntest du mir weiterhelfen

grüßlis ulmli
Profil ansehen
18.10.2007 18:37 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Hey ulmli!

Sry, dass ich dich übersehen habe ^^ Klar kannste noch fragen stellen :P
Wäre nur leichter, wenn du deinen bisherigen Code mal posten würdest, damit ich dir 'direkt' weiterhelfen kann..

Grundsätzlich musst du dir einfach nur überlegen, was unter welchen Umständen passieren soll. Also denk ich mir mal als Beispiel ne Datenbestand von 50 Seiten aus.

Code:
+----------------+-----------------------------------+ 
| Aktuelle Seite | Anzeige                           |
+----------------+-----------------------------------+ 
| 1              | 1 2 3 ... 50  >                   |
| 8              | <  1 ... 6 7 8 9 10 ... 50  >     |
| 35             | <  1 ... 33 34 35 36 37 ... 52  > |
| 48             | <  1 ... 46 47 48 49 50 >         |
| 50             | <  1 ... 48 49 50                 |
+----------------+-----------------------------------+


Wir brauchen also eine Logik, die aufgrund der aktuellen Seite eine Ausgabe erstellt und zwar: gib 2 Seiten vor der aktuellen Seite, die aktuelle Seite und 2 Seiten nach der aktuellen Seite aus.

Zusatz: Gibt es keine 2 Seiten vorher oder nachher, dann ignoriere den Rest (z.B. bei Seite 1, 2, 49 und 50).

Also wird jetzt erstal ermittelt, welche Seiten angezeigt werden sollen

PHP:
<?php
    $min_page 
= ($aktuelle_Seite-2>1)?($aktuelle_Seite-2):1;
    
$max_page = ($aktuelle_Seite+2<$Seiten_gesamt)?($aktuelle_Seite+2):$Seiten_gesamt;
?>


Die Struktur solltest du glaub kennnen: (Bedingung)?(falls ja):(sonst das)

So, dann gehts weiter mit der eigentlichen Ausgabe:

PHP:
<?php
    
// Prüft, ob die Anzeige von "<" sinnvoll ist
    
if ($aktuelle_Seite != 1)
        echo 
"<a href=\"seite.php?page=".($aktuelle_Seite-1)."\">&lt;</a>&nbsp;\n";
    
    
// prüft ob die erste Seite im min-max-Bereich ist
    
if($min_page>1)
        echo 
"<a href=\"seite.php?page=1\">1</a> ... \n";

    for(
$i=$min_page$i<=$max_page$i++) {
        if (
$i==$aktuelle_Seite)
            echo 
$i."\n";
        else
            echo 
"<a href=\"seite.php?page=".$i."\">".$i."</a>\n";
    }

    
// prüft ob die letzte Seite im min-max-Bereich ist
    
if($max_page<$Seiten_gesamt)
        echo 
" ... <a  href=\"seite.php?page=".$Seiten_gesamt."\">".$Seiten_gesamt."</a>\n";

    
// Prüft, ob die Anzeige von ">" sinnvoll ist
    
if ($aktuelle_Seite != $Seiten_gesamt)
        echo 
"&nbsp;<a href=\"seite.php?page=".($aktuelle_Seite+1)."\">&gt;</a> \n";
?>


Joa, das ist es dann auch eigentlich ;)


Profil ansehen Mail senden
30.10.2007 17:46 Uhr
ulmli
Forenuser
registriert 03.01.2007
wohnt in
Beiträge 46
hi flitze,
danke für die antwort, ich war die letzten tage nicht sonderlich fleissig somit habe ich da auch nicht weiter gemacht, macht also nix daste mich übersehen hast :-) .
find das forum nach wie vor gut und würde es echt schade finden wenn es dies net mehr gäbe
ich werde es mal probieren, jepp daran habe ich nicht gedacht den code zu posten, sorry.
grüßle und vielen dank
ulmli

Dieser Beitrag wurde am 30.10.2007 um 17:48:37 Uhr von ulmli zum 1. Mal editiert.
Profil ansehen
Seite: <  1 2 no reply
Powered by Pascal Landau © 2006 MyWebsolution.de
Designed by Pascal Landau © 2006 MyWebsolution.de
 
 
 
 
Home Email Impressum Disclaimer Statistik