letzte Seite

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • letzte Seite

    Hi everybody,
    ich hab folgendes Problem:
    Ich habe ein Script das Einträge anzeigt, aber nie mehr als 5 auf einer Seite. Jetzt möchte ich gerne, dass das Script automatisch die Seite mit dem letzten Eintrag anzeigt.
    Hier ersteinmal das Script:

    PHP-Code:
    <?php    
        
    if(!isset($seite))
        {
            
    $seite 1;
        }
        if(!isset(
    $durchlauf))
        {
            
    $durchlauf 1;
        }
        if (
    $durchlauf == 1)
        {
            
    $fn "Hits/$KAT.txt";
            if (
    file_exists($fn))
            {
                
    $fp fopen ($fn"r");
                
    $zahl fgets($fp10);
                
    fclose($fp);
            }
            else
            
    $zahl 0;
        
            
    $zahl $zahl 1;
            
    $fp fopen($fn"w");
            
    flock ($fp,2);
            
    fputs ($fp$zahl);
            
    flock ($fp,3);
            
    fclose ($fp);
        }
        
    $db mysql_connect();
        
    $beitraege 5;
        
    $befehl "select * from forum where KAT = '$KAT' order by datum asc";
        
    mysql_select_db("fo"$db);
        
    $res mysql_query($befehl$db);
        
    $num mysql_num_rows($res);
        
    $anfang = ($seite 1) * $beitraege 1;
            
    $ende $anfang $beitraege 1;
         if (
    $num == 0)
                    {
                        echo 
    "Keine Beiträge vorhanden !";
                    }
        
    $counter 1;
        
        while (
    $zeileholen mysql_fetch_array($res,MYSQL_ASSOC))
                    {
                        if ((
    $counter >= $anfang) AND ($counter <= $ende))
                            {    
                    echo 
    "<table align=\"center\">";
                    echo 
    "<tr ><td width='200'>Geschrieben von:<br><a href='mailto:".stripslashes(nl2br(htmlentities($zeileholen["email"])))."'>".stripslashes(nl2br(htmlentities($zeileholen["name"])))."</a></td>";
                    echo 
    "<td width='400' >Thema:".stripslashes(nl2br(htmlentities($zeileholen["thema"])))."</td></tr>";
                    echo 
    "<tr><td>Am ".stripslashes($zeileholen["datum"])."</td>";
                    echo 
    "<td >".stripslashes(nl2br(htmlentities($zeileholen["beitrag"])))."</td>";
                    echo 
    "</table><p>";
                }             
                
                
    $counter $counter 1;
            }

            
        
        echo 
    "<table border='0' align='center'";
        echo 
    "<tr><td width='300'>";
            if (
    $seite == 1)
            {
                echo 
    "&nbsp;";
            }
            else
            {
            
    $durchlauf $durchlauf 1;
            
    $seite_before $seite 1;
            echo
    "<a href='$PHP_SELF?durchlauf=".urlencode($durchlauf)."&KAT=".urlencode($KAT)."&$seite='.$seite_before.''>&lt;----</a>";
            }
            echo 
    "</td><td width='300' align='right'>";
            if (
    $ende >= $num)
            {
                echo
    "&nbsp;";
            }
            else
            {
            
    $durchlauf $durchlauf 1;
            
    $seite_next $seite 1;
            echo
    "<a href='$PHP_SELF?durchlauf=".urlencode($durchlauf)."&KAT=".urlencode($KAT)."&seite=".$seite_next."'>----&gt;</a>";

            }     
            echo 
    "</td></tr>";    
            echo
    "</table>";
              
        
    mysql_close($db);
    ?>
    Wie bekomme ich es jetzt hin, direkt auf die letzte Seite zu kommen???

    Danke Rookie

  • #2
    Im Thread http://www.php-resource.de/forum/sho...?threadid=7260 habe ich Dir ja bereits nahegelegt das MySQL-Feature LIMIT zu verwenden.

    Sei mir bitte nicht böse, aber ich habe das was Du gepostet hast nicht Zeile für Zeile studiert, nur überflogen.

    Du liest immer alle Records aus der Datenbank! Stell Dir vor sie besteht aus 10.000 Records. Um auf die letzte Seite zu kommen holst Du alle 10.000 aus der Datenbank und schleifst 9.995 vergebens durch. Die 10.000 Records belegen schlußendlich Resourcen des Servers. Mit LIMIT kannst Du zielgerichtet nur die 5 Records lesen, die Du tatsächlich benötigst:

    SELECT name FROM customers LIMIT 0, 5; // Liefert Record 1 - 5
    SELECT name FROM customers LIMIT 5, 5; // Liefert Record 6 - 10
    SELECT name FROM customers LIMIT 9994, 5; // Liefert Record 9995 - 10000

    Wie es praktisch angewandt wird:
    http://www.php-resource.de/forum/sho...?threadid=3750

    Mehr über LIMIT:
    http://www.mysql.com/doc/L/I/LIMIT_optimisation.html

    So das zum Thema LIMIT.

    Du willst die letzten 5 Records bestimmen? Du hast ja die Anzahl der Records bereits ermittelt,
    $num = mysql_num_rows($res);

    In $beitraege steht vermutlich die gewünschte Anzahl Records je Seite:
    $LetzteSeite=ceil($num/$beitraege);

    Kommentar


    • #3
      Danke!
      Ich habe mir das aber schon angekuckt und auch ausprobiert! Leider hatte es nicht so funktioniert wie du es beschreiben hat (wobei es wahrscheinlicher ist, dass ich den Fehler gemacht habe!)! Ich wollte dich damit nicht weiter nerven! Ich hatte es ersteinmal direkt über MySQL ausprobiert! Macht das denn wirklich so einen grossen unterschied? Wahrscheinlich dann wohl, sonst hättest du es ja wohl nicht geschrieben!!! Ich hoffe du denkst jetzt nicht, dass ich dich bzw. deinen Beitrag nicht ernstgenommen haben, denn das ist nicht der Fall! Ich bin halt wie mein Name schon sagt ein ziemlicher PHP Rookie und wahrscheinlich auch etwas schwer von Begriff!

      Aber trotzdem vielen Dank das du mir auch jetzt nochmal weitergeholfen hast!! Ich werde es gleich ausprobieren!

      Rookie

      Kommentar


      • #4
        Ganz egal, was und wie Du es machst, wir helfen Dir in jedem Fall weiter.

        Du brauchst keinen Gedanken daran verlieren Du könntest nerven und rechfertigen brauchst Dich auch nicht.

        cu

        Kommentar

        Lädt...
        X