Fehler beim Umblättern

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

  • Fehler beim Umblättern

    Hi @ all,

    ich versuche gerade in mein Forumscript das Umblättern zu erstellen! Mein Problem ist, dass sobald ich auf die nächste Seite wechseln möchte bei der Abfrage der Reihen in der DB 0 raus kommt. Auf der ersten Seite hat es noch perfekt geklappt.

    Hier einmal mein Script:

    PHP-Code:
    <?php    
        
    if(!isset($seite))
        {
            
    $seite 1;
        }
        
    $db mysql_connect();
        
    $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);
        
    $beitraege 5;
        
    $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 border='1' align='center'>";
                    echo 
    "<tr><td width='200'>Geschrieben von:<br>".stripslashes($zeilehole["name"])."</td>";
                    echo 
    "<td width='400'>Thema:".stripslashes($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
            {
            echo
    "<a href='$PHP_SELF?seite='.($seite-1).''>zurück</a>";
            }
            echo 
    "</td><td width='300' align='right'>";
            if (
    $ende >= $num)
            {
                echo
    "&nbsp;";
            }
            else
            {
            echo
    "<a href='$PHP_SELF?seite='.($seite+1).''>weiter</a>";
            }     
            echo 
    "</td></tr>";    
            echo
    "</table>";
              
        
    mysql_close($db);
    ?><?php    
        
    if(!isset($seite))
        {
            
    $seite 1;
        }
        
    $db mysql_connect();
        
    $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);
        
    $beitraege 5;
        
    $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 border='1' align='center'>";
                    echo 
    "<tr><td width='200'>Geschrieben von:<br>".stripslashes($zeilehole["name"])."</td>";
                    echo 
    "<td width='400'>Thema:".stripslashes($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
            {
            echo
    "<a href='$PHP_SELF?seite='.($seite-1).''>zurück</a>";
            }
            echo 
    "</td><td width='300' align='right'>";
            if (
    $ende >= $num)
            {
                echo
    "&nbsp;";
            }
            else
            {
            echo
    "<a href='$PHP_SELF?seite='.($seite+1).''>weiter</a>";
            }     
            echo 
    "</td></tr>";    
            echo
    "</table>";
              
        
    mysql_close($db);
    ?>
    Könnt ihr mir sagen wo der Fehler ist???

    Danke Rookie

  • #2
    Code:
    echo"<a href='$PHP_SELF?seite='.($seite+1).''>weiter</a>";
    
    // ist zu ersetzen durch:
    
    $seite_next = $seite + 1;
    echo"<a href='$PHP_SELF?seite=".$seite_next."'>weiter</a>";
    Ansonsten wird im Quelltext der Link:
    <a href='?seite='.(1+1).''>weiter</a>
    erzeugt. Sowohl Hochkommas sind falsch, als auch der Parameter seite wird falsch belegt.

    Abgesehen davon liest Du immer alle Records aus der Datenbank. Was in diesem Fall nicht notwendig ist. MySQL bietet dafür die Option "Limit".

    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 10, 5; // Liefert Record 11 - 15

    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

    Kommentar


    • #3
      Vielen Dank schon einmal dafür!
      Leider ist mein Problem dadurch noch nicht gelöst!!!
      Wenn die zweite Seite ausgewählt wird, dann trifft komischer Weise diese Schleife zu:

      if ($num == 0)
      {
      echo "Keine Beiträge vorhanden !";
      }

      Aber das ist doch eigentlich gar nicht möglich, da ich auf der ersten Seite doch Ergebnisse bei der selben Abfrage bekommen habe!!!

      Danke Rookie

      Kommentar


      • #4
        Ist die Variable $KAT überhaupt belegt? Der Select erfordert diese Variable:
        Code:
        $befehl = "select * from forum where KAT = '$KAT' order by datum asc";
        Also versuch es mal mit ...
        Code:
        $seite_next = $seite + 1;
        echo"<a href='$PHP_SELF?KAT=".urlencode($KAT)."&seite=".$seite_next."'>weiter</a>";

        Kommentar


        • #5
          Jetzt klappt es!!! Vielen Dank für eurer Hilfe!!!

          Rookie

          Kommentar

          Lädt...
          X