blättern funktioniert nicht so ganz wie ich will

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

  • blättern funktioniert nicht so ganz wie ich will

    Ich versuche gerade eine Funktion zum weiterblättern in mein Script zu bekommen, allerdings geht IRGENDWAS schief Und ich bin mir nicht so ganz im klaren wo genau der Fehler liegt.

    Beim ersten Aufruf der Seite stimmt noch alles, es wird News 0 und 1 angezeigt (ich hab die Seitenzahl momentan 2 Einträge reduziert weil noch kaum Daten vorhanden sind). Klickt der User dann auf weiter wird News 3 bis 5 (wieso hier jetzt 3...!?!) angezeigt, klicke ich wieder auf weiter wird News 4 bis 7 angezeigt

    Irgendwas stimmt also mit meiner Weiterzählung nicht - aber WAS

    PHP-Code:
    // check permission on this page
    $rights $_SESSION['user_group'];
    if (
    $rights['news_edit'] AND $rights['news_delete'] == 0) {

        
    $content_title $user_access_err;
        
    $content $user_access_err_text;    

    }
    else 
    {
        
    $content_title "News bearbeiten";
        
        
    // display X news per page
        
    $npp 2;

        
    // display next X news
        
    if ($next == "") {
            
    $limit 0;
            
    $limit2 $npp ;
        }
        else 
        {
            
    $limit $next +1;
            
    $limit2 $limit $npp -1;
        }
        
        
    // TESTINFO
        
    echo "$limit UND $limit2<br>";
        echo 
    "->$next";
        
        
    // shows the 20 latest news
        
    $result mysql_query("SELECT a.id AS news_id,a.news_topic,a.news_date,a.user_id, b.user_email, b.user_name 
                               FROM news a, user_accounts b 
                               WHERE a.user_id = b.id 
                               ORDER BY a.news_date 
                               DESC LIMIT 
    $limit,$limit2",$db);
        
        
    // get total number of news
        
    $resultsum mysql_query("SELECT id FROM news",$db);
        
    $news_sum mysql_num_rows($resultsum);
        
        
    // countervariable
        
    $i 0;
        
        
    //
        
    $x1 $limit +1;
        
    $x2 $limit2 -1;
        
        
    // how many pages we have to display
        
    $totalpages round($news_sum $npp);
            
        while (
    $row mysql_fetch_array($result)) {
        
            
    $i++;
            
            if (
    $i !== $news_sum) {
                
    $forward "<a href=\"admin.php?mod=news_list&next=$x2\">$news_forward</a>";
            }    
            
            if (
    $i == 0) {
                
    $back "";
                }
            else 
                {
                
    $back "<a href=\"admin.php?mod=news_list&last=$x1\">$news_back</a>";
                }
            
              
    // make nice looking variables
              
    $news_title $row['news_topic'];
              
    $news_date date("d.m.Y",$row['news_date']);
              
    $news_time date("H:i:s",$row['news_date']);
              
    $news_user "<a href =\"mailto:".$row['user_email']."\">".$row['user_name']."</a>";
              
    $news_id $row['news_id'];
              
              
    // generate the links with the news id
            
    $edit        "<a href=\"admin.php?mod=news_edit&id=$news_id\">$news_edit</a>";
            
    $delete        "<a href=\"admin.php?mod=news_delete&id=$news_id\">$news_delete</a>";
            
    $view        "<a href=\"admin.php?mod=news_view&id=$news_id\">$news_view</a>";
              
          
    $test parse("template/".$admin_template."/news_list_table.tpl");    
        
    $news "$news $test<br />";
              
          }
        
          
    $content "<strong>$news_sum</strong> $news_count<br><br>$news";
    }
    ?> 

  • #2
    Deine Fehler:
    1. du rechnest zuviel und klaust dir damit selbst die Übersicht
    2. die LIMIT-Klausel ist falsch
    3. im $back sollt der Parameter auch "next" heißen.

    Korrektur von vorne nach hinten:[list=1][*]überflüssiges Rechnen weg Part 1
    if ($next <= 0)
    ...
    else
    {
    $limit = $next;
    $limit2 = $limit + $npp;
    }[*]die Query korrigieren
    $result = mysql_query(" ... LIMIT $limit,[color=green]$npp[/color]",$db);[*]überflüssiges Rechnen weg Part 2
    $x1 = $limit - $npp;
    $x2 = $limit2;[*]Link korrigieren
    ...
    else
    {
    $back = "<a href=\"admin.php?mod=news_list&[color=green]next[/color]=$x1\">$news_back</a>";
    }[/list=1]
    Außerdem sollte die Erzeugung der Links außerhalb der Schleife stehen; so wie es momentan ist, gibt es
    * auf jeder Seite einen "back"-Link
    * immer einen "forward"-Link, auch wenn es keine weiteren Ergebnisse gibt
    PHP-Code:
    list($gesamt) = mysql_fetch_row(mysql_query("select count(*)
      FROM news a, user_accounts b 
      WHERE a.user_id = b.id"
    ));
    if (
    $x2<$gesamt)
      
    $forward "...";
    else
      
    $forward "";
    if (
    $limit>0)
      
    $back "...";
    else
      
    $back ""
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      So, vorwärts und rückwärts gehts.
      Nur das er mir am Anfang keinen Buttun für zurück anzeigt und am Ende keinen für weiter krieg ich noch nicht hin.


      PHP-Code:
      <?
      // check permission on this page
      $rights = $_SESSION['user_group'];
      if ($rights['news_edit'] AND $rights['news_delete'] == 0) {

          $content_title = $user_access_err;
          $content = $user_access_err_text;    

      }
      else 
      {
          $content_title = "$news_list_title";
          $next = $_GET['next'];
          
          // display X news per page
          $npp = 3;

          if (!isset($next)) {
              $next = 0;
              }
              
          $limit = $limit + $next;
          
          // shows the 20 latest news
          $result = mysql_query("SELECT a.id AS news_id, a.news_topic, a.news_date, a.user_id, a.news_cat_id, b.user_email, b.user_name, c.id, c.news_cat_name
                                  FROM news a, user_accounts b, news_categories c
                                  WHERE a.user_id = b.id AND a.news_cat_id = c.id
                                  ORDER BY a.news_date DESC
                                  LIMIT $limit , $npp",$db);
          
          // get total number of news
          $resultsum = mysql_query("SELECT id FROM news",$db);
          $news_sum = mysql_num_rows($resultsum);
          
          while ($row = mysql_fetch_array($result)) {
              
                // make nice looking variables
                $news_title = $row['news_topic'];
                $news_date = date("d.m.Y",$row['news_date']);
                $news_time = date("H:i:s",$row['news_date']);
                $news_user = "<a href =\"mailto:".$row['user_email']."\">".$row['user_name']."</a>";
                $news_id = $row['news_id'];
                $news_cat = $row['news_cat_name'];
                
                // generate the links with the news id
              $edit        = "<a href=\"admin.php?mod=news_edit&id=$news_id\">$news_edit</a>";
              $delete        = "<a href=\"admin.php?mod=news_delete&id=$news_id\">$news_delete</a>";
              $view        = "<a href=\"admin.php?mod=news_view&id=$news_id\">$news_view</a>";
                
                $temp = parse("template/".$admin_template."/news_list_table.tpl");    
              $news = "$news $temp<br />";
                
            }

               //
              $x1 = $limit + $npp;
              $x2 = $next  - $npp;
            
              $back = "<a href=\"admin.php?mod=news_list&next=$x2\">$news_back</a>";
              $forward = "<a href=\"admin.php?mod=news_list&next=$x1\">$news_forward</a>";    

            $content = parse("template/".$admin_template."/news_list.tpl");
      }
      ?>
      Zuletzt geändert von burzum; 16.10.2003, 01:15.

      Kommentar

      Lädt...
      X