blättern funzt nicht ganz

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

  • blättern funzt nicht ganz

    Hy,

    ich habe hier ein PHP-Skript gefunden das zum Blättern von z.B. einträgen gut ist. Doch leider funzt das niht ganz, deswegen habe ich es ein wenig umgeschrieben. Der Fehler ist ganz einfach das auf der letzen Seite der erste Eintrag nicht angezeigt wird, sondern erst der 2 od. 3.
    Es sind derzeit gesamt 47 einträge.... 2 Seiten müßten langen bei 25 Einträgen pro Page. Doch der erste Eintrag wird einfach nicht angezeigt.

    PHP-Code:
    //var $s wird oben automatisch übergeben

      
    $step $diff 25;

    $r mysql_query("SELECT count(*) FROM gastbuch") or die(mysql_error());
    $anz mysql_result($r,0);

    if (
    $offset+1>=$anz-$step) {
      
    $offset $anz-$step;
      
    $diff $anz $diff;
      
    $disabled[next] = TRUE;
    }

    if (!
    $offset || $offset<0) {
      
    $offset 0;
      
    $disabled[prev] = TRUE;
    }

    $mod=gmp_mod ($anz$diff);
    $mod=gmp_mod ($mod2);

    if (
    $disabled[prev]!==TRUE) echo '<a href="'.$PHP_SELF.'?offset='.($offset-$step).'&s='.($s-1).'">prev</a>&nbsp;';

    for (
    $i=0;$i<=($anz/$step);$i++){ 

    if(
    $s == $i){
    echo 
    "<font color=#FFFFFF size=1 face=Verdana, Arial, Helvetica, sans-serif><b>[".($i+1)."]</b></font>&nbsp;";

    }else{

    echo 
    '<a href="'.$PHP_SELF.'?offset='.($i*$step).'&s='.$i.'">['.($i+1).']</a>&nbsp;';

    if(
    $mod == 1){
    echo 
    '<a href="'.$PHP_SELF.'?offset='.($i*$step+25).'&s='.$i.'">['.($i+2).']</a>&nbsp;';
    }
    }}

    if (
    $disabled[next]!==TRUE) echo '<a href="'.$PHP_SELF.'?offset='.($offset+$step).'&s='.($s+1).'">next</a>'
    Du weißt und wußtest nichts, Du dachtest zu wissen, doch du wußtest nicht
    das Du es nicht weißt was Du vielleicht wissen hättest können.

  • #2
    erkläre mal bitte

    PHP-Code:
    for ($i=0;$i<=($anz/$step);$i++){ 

    Kommentar


    • #3
      Was soll ich da erklären ??
      Ist aus dem CODE so (aus dem orig. Schnipsel).

      Bin ja ned so der Checker,

      ich glaube das bedeutet:

      step = 25
      anz= 50
      Aktion solange ausführen bis i<=2.
      In meinem Beispiel...

      Mickl
      Du weißt und wußtest nichts, Du dachtest zu wissen, doch du wußtest nicht
      das Du es nicht weißt was Du vielleicht wissen hättest können.

      Kommentar


      • #4
        OffTopic:
        Ich finds immer scheiße, wenn man den Code einfach nur nimmt, und nicht versteht. Dann kannstes gleich von nem Profi machen lassen, da hast du wenigstens die sicherheit, dass es richtig ist. Weil solche sachen, unterstützen andere und ich eher nicht.


        sehe ich das jetzt richtig, dass das für die seiten-auflistung (seite : 1 | 2 | 3) da ist, dann sehe ich das auch richtig, dass die einträge da gar nicht ausgegeben werden? ich kenn den code ja noch weniger als du. weißt du, welche stelle die einträge ausgibt?

        Kommentar


        • #5
          Ich versuche ja alles selbst zu machen und hole mir hier anregungen, doch das funktioniert nicht immer.
          Somit habe ich versucht das skript zu verstehe von dem Herrn, da mein eigenes nicht funktionierte...

          Den Bereich mit der ausgabe der Einträge habe ich weggelassen, da dies ja eigentlich nicht relevant ist oder ??

          PHP-Code:
          //Ausgabeteil kommt nach dem CODE oben.

          $r mysql_query("SELECT * FROM gastbuch ORDER BY ID DESC LIMIT $offset,$diff") or die(mysql_error());

          $count=0;

          while (
          $aktzeil mysql_fetch_array($r)) {
            
          //Anzeige der Datensätze
            
          if (eregi("^[a-z0-9]+([_.-][a-z0-9]+)*@([a-z0-9]+([.-][a-z0-9]+)*)+\\.[a-z]{2,4}$",$aktzeil[5])) {
            
            
          $namen="<a href=mailto:".$aktzeil[5].">".$aktzeil[1]."</a>";
            
            
            }else{
            
          $namen=$aktzeil[1];}

            
          $eintrag=seekHttp($aktzeil[3]); 
            
          $eintragnr=$anzahl-$count
            if (
          $a=="x"){
             
          $eintrag_ip=$aktzeil[4];
             }else{
             
          $eintrag_ip="IP gespeichert";
             }
            echo 
          "<table cellspacing=0 border=0 width=600>
                  <tr>
                    <td bgcolor=#990000>
                     <font color=#FFFFFF size=1 face=Verdana, Arial, Helvetica, sans-serif>"
          /*.$eintragnr.*/.$aktzeil[0]."&nbsp; &nbsp; <b>".$namen."</b> &nbsp; &nbsp; &nbsp; &nbsp;(".$eintrag_ip.")</font>
                    </td>
                  </tr>
                  <tr>
                    <td bgcolor=#EFE8CC><font Color=#000000 size=1 face=Verdana, Arial, Helvetica, sans-serif><b>"
          .$aktzeil[2]."</b></font>
                    </td>
                  </tr>
                  <tr>
                    <td bgcolor=#FFF8DC><font color=#990000 size=1 face=Verdana, Arial, Helvetica, sans-serif><b>"
          .$eintrag."</b></font>
                    </td>
                  </tr>
                </table>
            <br>
            <br>"
          ;
            
          $count++;
             
            

          Du weißt und wußtest nichts, Du dachtest zu wissen, doch du wußtest nicht
          das Du es nicht weißt was Du vielleicht wissen hättest können.

          Kommentar


          • #6
            dann definiere einträge mal genauer!

            einträge sind doch das was du aus der db holst. und bei der anzeige werden einträge verschluckt. wieso lässt du dann diesen teil weg?

            Kommentar


            • #7
              Sorry, ich glaub ich steh grad aufm Schlauch, wieso werden einträge verschluckt ??

              Ich sortiere nach ID und hole nur immer einen Teil aus der DB.

              Glaubst du es wär besser wenn ich alle einträge hole und eben nur immer die gewünscht Anzahl anzeigen lasse ?

              per if und übergeben Var`s..
              Doch das frießt doch perfomrance bei ca. 5000 Einträgen, glaube ich zumindest.
              Du weißt und wußtest nichts, Du dachtest zu wissen, doch du wußtest nicht
              das Du es nicht weißt was Du vielleicht wissen hättest können.

              Kommentar


              • #8
                Der Fehler ist ganz einfach das auf der letzen Seite der erste Eintrag nicht angezeigt wird, sondern erst der 2 od. 3.
                also so langsam fange ich an zu zweifeln.

                Kommentar


                • #9
                  Zu zweifeln an was oder zu verzweifeln ??

                  Ich verstehe ja den Fehler auch nicht, da er eigentlich alle anzeigen müßte auf der letzten seite. Tut er aber nicht. den letzten Eintrag bekomme ich nur zu Gesicht wenn ich die Anzahl der Einträge pro Seite so hoch setze das alle auf eine Seite gehen...

                  Ich glaub ich vergesse das script und versuche mich so drch zukämpfen. Meineserachtens müßte es aber funktionieren.

                  Am Anfang war mir klar das er nicht alle angezeigt hat, da die KOMAstellen ja ned berücksichtig werden, deswegen ja MODULO und somit habe ich das in den Griff bekommen das noch eine Seite angezeigt wird...
                  Du weißt und wußtest nichts, Du dachtest zu wissen, doch du wußtest nicht
                  das Du es nicht weißt was Du vielleicht wissen hättest können.

                  Kommentar


                  • #10
                    ich hab ehrlich gesagt nicht gecheckt, was du jetzt wirklich willst. du sagts, der erste eintrag wird nicht angezeigt, aber zur fehlersuche postetst du den entsprechenden teil nicht, sondern nur das stück code, wo die seitennavigation generiert wird.

                    es wäre hilfreich, wenn du mal klar formulierst, was nicht klappt, mit entsprechenden code und wie es aussehen soll. dann kommer sicher weiter.

                    ich werd mich erstmal vom acker machen!

                    Kommentar


                    • #11
                      OK, sorry...

                      Also, die Navigation, bis auf die Tatsache das der allererste Eintrag (Datensatz nr. 1) nicht angezeigt wird.

                      Dieser müßte norm. auf der allerletzten Seite in der Navi ganz unten erscheinen. Dies tut er aber nicht.

                      komplettes Script:

                      PHP-Code:

                      $step 
                      $diff 60;

                      $r mysql_query("SELECT count(*) FROM gastbuch") or die(mysql_error());
                      $anz mysql_result($r,0);

                      if (
                      $offset+1>=$anz-$step) {
                        
                      $offset $anz-$step;
                        
                      $diff $anz $diff;
                        
                      $disabled[next] = TRUE;
                        }

                      if (!
                      $offset || $offset<0) {
                        
                      $offset 0;
                        
                      $disabled[prev] = TRUE;
                        }

                      if (
                      $disabled[prev]!==TRUE) echo '<a href="'.$PHP_SELF.'?offset='.($offset-$step).'&s='.($s-1).'">prev</a>&nbsp;';

                      for (
                      $i=0;$i<=($anz/$step);$i++){ 

                         if(
                      $s == $i){
                         echo 
                      "<font color=#FFFFFF size=1 face=Verdana, Arial, Helvetica, sans-serif><b>[".($i+1)."]</b></font>&nbsp;";
                         }else{
                         echo 
                      '<a href="'.$PHP_SELF.'?offset='.($i*$step).'&s='.$i.'">['.($i+1).']</a>&nbsp;';
                        }
                      }

                      if (
                      $disabled[next]!==TRUE) echo '<a href="'.$PHP_SELF.'?offset='.($offset+$step).'&s='.($s+1).'">next</a>';

                      echo 
                      "<br><br><br>";

                      function 
                      seekHttp($rawText)

                      {    

                          
                      $pattern = array(

                              
                      "/http:\/\/((\w|\.|\?|\%|=|\/|-)*)/");    

                          
                      $replacement = array(

                              
                      "<a href=\"http://\\1\" target=\"_blank\">[url]http://\\1[/url]</a>");

                          
                      $hyperLinkedText=preg_replace($pattern$replacement$rawText);    

                              

                          return 
                      $hyperLinkedText;

                      }


                          
                      $sql="Select * from gastbuch ORDER BY ID DESC LIMIT 50 ";
                          
                      mysql_select_db("barcode");
                          
                      $abfrage mysql_query($sql,$connect);
                          
                        
                      $sql_anzahl="Select * from gastbuch";
                        
                      $abfrage_anzahl mysql_query($sql_anzahl,$connect);
                        
                      $anzahl=mysql_num_rows ($abfrage_anzahl);

                      $count=$diff*$s;



                      $r mysql_query("SELECT * FROM gastbuch ORDER BY ID DESC LIMIT $offset,$diff") or die(mysql_error());

                      while (
                      $aktzeil mysql_fetch_array($r)) {

                        
                      //Anzeige der Datensätze
                        
                      if (eregi("^[a-z0-9]+([_.-][a-z0-9]+)*@([a-z0-9]+([.-][a-z0-9]+)*)+\\.[a-z]{2,4}$",$aktzeil[5])) {
                        
                        
                      $namen="<a href=mailto:".$aktzeil[5].">".$aktzeil[1]."</a>";
                        
                        
                        }else{
                        
                      $namen=$aktzeil[1];}

                        
                      $eintrag=seekHttp($aktzeil[3]); 
                        
                      $eintragnr=$anzahl-$count
                        if (
                      $a=="x"){
                         
                      $eintrag_ip=$aktzeil[4];
                         }else{
                         
                      $eintrag_ip="IP gespeichert";
                         }
                        echo 
                      "<table cellspacing=0 border=0 width=600>
                              <tr>
                                <td bgcolor=#990000>
                                 <font color=#FFFFFF size=1 face=Verdana, Arial, Helvetica, sans-serif>"
                      .$eintragnr."&nbsp; &nbsp; <b>".$namen."</b> &nbsp; &nbsp; &nbsp; &nbsp;(".$eintrag_ip.")</font>
                                </td>
                              </tr>
                              <tr>
                                <td bgcolor=#EFE8CC><font Color=#000000 size=1 face=Verdana, Arial, Helvetica, sans-serif><b>"
                      .$aktzeil[2]."</b></font>
                                </td>
                              </tr>
                              <tr>
                                <td bgcolor=#FFF8DC><font color=#990000 size=1 face=Verdana, Arial, Helvetica, sans-serif><b>"
                      .$eintrag."</b></font>
                                </td>
                              </tr>
                            </table>
                        <br>
                        <br>"
                      ;
                        
                      $count++;
                         
                        


                      Ergebnis soll sein, das man eine Navi hat inder auf der letzten Seite ganz unten der ersten Eintrag (ID=1) stehen soll.


                      Grüße und a guads nächtle Mickl
                      Du weißt und wußtest nichts, Du dachtest zu wissen, doch du wußtest nicht
                      das Du es nicht weißt was Du vielleicht wissen hättest können.

                      Kommentar


                      • #12
                        ist mit Eintrag also die Seitennummer gemeint?

                        Kommentar


                        • #13
                          Nein, die auf der letzten Seite zeigt er den ersten Eintrag nicht an. Eintrag mit ID=1 auf seite 3 in meinem fall....
                          Du weißt und wußtest nichts, Du dachtest zu wissen, doch du wußtest nicht
                          das Du es nicht weißt was Du vielleicht wissen hättest können.

                          Kommentar


                          • #14
                            also ist der eintragstel doch relevant

                            aber wenn du 47 EInträge hast, aber 25 pro seite, wieso brauchst du dann 3 seiten=

                            Kommentar


                            • #15
                              Also ich habe nun ein wenig rumprobiert um ein wenig umgebaut...

                              Mit richtigen zahlen bei dem LIMIT (ich nutze den gleichen wert wie der den ich übergebe z.B.).

                              Somit habe ich statt $offset z.B 25 eingegeben und dann ging es.

                              Ja genau in der ausgabe liegt der Fehler, soweit bin ich nun auch. (Steh heut ned auf schlauch.. *HeHe*)

                              nur wenn ich gb.php?offset=25 die offset datei übergebe funzt es eben nicht. Dann fehlen exakt 3 Einträge.



                              mhhh....
                              Du weißt und wußtest nichts, Du dachtest zu wissen, doch du wußtest nicht
                              das Du es nicht weißt was Du vielleicht wissen hättest können.

                              Kommentar

                              Lädt...
                              X