Nach "x" Datensätzen Umbruch einfügen

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

  • Nach "x" Datensätzen Umbruch einfügen

    Hi @ all,

    benötige Hilfestellung bei folgendem Problem :

    Ich möchte die Anzahl Datensätze pro Reihe begrenzen können.
    Dazu weiß ich, muß nen Zähler rein.
    Soweit so gut...mit "count" auch die Datensätze gezählt.

    Aber ich bekomme die Formel dazu nicht hin um das miteinander in Verbindung zu setzen
    bzw. ich weiß nicht wo ich in meinem Code ansetzen muß.

    Angefangen habe ich mit einem Codeschnipsel von hier.

    Jetzt wird mir aber nur noch ein Datensatz angezeigt, wer sieht warum und hilft,
    dass auch ich das verstehe bzw. das lösen kann ?

    Danke im vorraus


    PHP-Code:
         $num mysql_num_rows($res);

             
    $counter 0;

        for (
    $i=0$i<$num$i++)
            {
            
    $titel mysql_result($res$i"titel");
            
    $kurztext mysql_result($res$i"kurztext");
            
    $langtext mysql_result($res$i"langtext");
            
    $link mysql_result($res$i"bib_angaben");
            
    $image mysql_result($res$i"image");
            
    $artikel_id mysql_result($res$i"artikel_id");

            
            
    $artikelListe "<div class=showBox2>
            <form action=\"show.php\" method=\"post\" enctype=\"multipart/form-data\">
               <table class=showtabelle width=\"30%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
                          <tr>
                            <td>
                            <table width=\"30%\" border=\"0\" cellspacing=\"1\" cellpadding=\"0\">
                        <tr>"
    ;
    <!-- 
    Code-Schnipsel Start //-->
    if ($counter == 2)
       {
          
    $artikelListe.= "<td>$bild</td></tr>\r<tr>";
          
    $counter 0;
       } else {
          
    $artikelListe.= "<td>$bild</td>\n";
          
    $counter++;
       }
    <!-- 
    Code-Schnipsel Ende //-->

    $artikelListe.= "                         </tr>
                                     </table>
                            </td>
                               </tr>
                            </table>
            </form></div>"
    ;
        }
        return 
    $artikelListe;


  • #2
    mod ist dein Freund

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Original geschrieben von jahlives
      mod ist dein Freund
      du meinst sicher modulo. oder?

      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        Hi @ all und danke für die replys,

        das mit Modulo habe ich mir durchgelesen.
        Bin dabei auch auf eine andere Schreibweise
        gekommen :
        PHP-Code:
        $counter 1;
        while (
        $num mysql_fetch_array($res)) {
          echo 
        $bild;
              if ((
        $counter != 1) && ($counter != 1))
                        {
                        echo 
        '<br>';
                        }
                }
           
        $counter++;

        Bekomme aber nur einen, den Ersten, Datensatz angezeigt...
        So ganz kapier ichs noch nicht...wer stumbt mich von der
        Leitung ?

        CU

        Kommentar


        • #5
          du meinst sicher modulo. oder?
          Ich steh eben voll auf die Kurzschreibweise

          Grüässli

          tobi
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            Du machst bestimmt zu viele breaks
            Nur bei x%2 ergibt sich ein Rest von 1 oder 0. Du willst aber nach 4 Bildern ein break --> nur dann wenn x >= 4 und x%4 == 0.

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Thx fürs posting

              Folgende Idee zu meinem Codeschnipsel :
              Habe erstmal alles in eine dicke While-Schleife gehauen -> geht

              Das mit dem Modulo glaube ich, habe ich knapp verstanden :-(

              Ich bekomme aber nur den zweiten Datensatz angezeigt, nicht alle davor und dahinter...verstehe ich nicht...

              PHP-Code:
              while($data mysql_fetch_array($resMYSQL_ASSOC)){
                  
              $titel $data["titel"];
                  
              $artikelListe "<div class=showBox2>
                      <table class=showtabelle width=\"30%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">
                            <tr>
                              <td>
                            <table width=\"30%\" border=\"0\" cellspacing=\"1\" cellpadding=\"0\">
                          <tr><td>
              $titel";
              <!-- 
              Da klemmts //-->

              if (($counter >= 2) && ($counter == 0))
                              {
                              echo 
              '<br>';
                              }
                      }
                      
              $counter++;

              <!-- 
              Da klemmts //-->
              $artikelListe.= "                         </td></tr>
                                               </table>
                                      </td>
                                         </tr>
                                      </table>
                      </div>"
              ;
                  return 
              $artikelListe;

              Zuletzt geändert von Dirk-Kiel; 23.02.2007, 14:02.

              Kommentar


              • #8
                du hast glaub ich auch ein "}" zuviel drinnen.. ;D

                Hier hört deine While-schlaufe auf:

                PHP-Code:
                if (($counter >= 2) && ($counter == 0))
                                {
                                echo 
                '<br>';
                                }
                        } 
                und dein $counter++; ist erst nachdem du die schleife geschlossen hast

                Kommentar


                • #9
                  Vielleicht solltest du den Wert von $artikelListe in der Schleife nicht bei jedem Durchgang überschreiben.


                  Ausserdem solltest du dich mal entscheiden, was du willst - das ganze in einer Funktion sammeln, und dann mittels return zurückgeben?
                  Dann verstehe ich nicht, warum du zwischendurch Ausgaben mittels echo machst. Dass diese zum Zeitpunkt der Ausführung rausgeschrieben werden, und nicht im Ergebnis der Funktion landen, solltest du dir klar machen.


                  Und dann solltest du dir mal einen sinnvollen Einrückungs-Stil angewöhnen.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Vielleicht solltest du den Wert von $artikelListe in der Schleife nicht bei jedem Durchgang überschreiben.
                    Also doch: Works as designed
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      thx @ schlattm :

                      das wars...danke dafür.

                      @wahsaga :
                      kam an...ist aber nicht nötig den Oberlehrer
                      zu mimen bzgl. Einrückung, Du hast den Code ja lesen
                      können.

                      Nicht wie sondern was da steht wird ausgeführt.
                      Wie eingerückt, ist dem Browser wurscht.

                      CU

                      P.s.: Nur mal so am Rande : ein Newbie hilft einem Newbie, weil sich die Gurus zu schade sind und sich mit achso wichtigen Kommentaren brüsten wollen, das mir beim Stöbern hier im Forum schon sehr oft an überflüssigen Texten aufgefallen...traurige Welt
                      Zuletzt geändert von Dirk-Kiel; 23.02.2007, 14:26.

                      Kommentar


                      • #12
                        Original geschrieben von Dirk-Kiel
                        kam an...ist aber nicht nötig den Oberlehrer
                        zu mimen bzgl. Einrückung, Du hast den Code ja lesen
                        können.
                        Mit Mühe - welche Klammer wozu gehört und was umschliesst, muss man bei so einem Gewurschtel erst mal aufwendig untersuchen.

                        Und als Newbee sollte man nicht immer nur meckern, wenn man gut gemeinte Ratschläge von Leuten mit etwas mehr Erfahrung bekommt.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          @topicstarter
                          Du hast ganz grundlegende Probleme mit diesem Code. Die return var wird bei jedem Schleifendurchlauf neu geschrieben --> am Ende hast du nur den letzten Eintrag drin.
                          Vonwegen return und echo erübrigt sich wohl jeder Kommentar...

                          Und hättest du den Code richtig eingerückt, dann wäre dir aufgefallen dass dein Counter ausserhalb der Schleife hochgezählt wird.
                          Nicht wie sondern was da steht wird ausgeführt.
                          Wie eingerückt, ist dem Browser wurscht.
                          Dass aber php auf'm Server ausgeführt wird und der Browser daher nur den Output sehen kann dürfte dir aber schon klar sein ??


                          So weit so gut

                          Gruss

                          tobi

                          p.s. Ich habe dir immerhin den Tipp mit modulo gegeben
                          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                          Kommentar


                          • #14
                            @ all :

                            ist ja richtig mit dem Code einrücken und strippen und Funktion und return.
                            Habe das abgeändert, geht aber doch nicht wirklich.

                            Der Counter zählt nicht wirklich, und es wird direkt nach jedem Treffer
                            der Zeilenumbruch durchgeführt...
                            Der Umbruch soll nach 2 Treffern passieren, tuts aber nicht :-(


                            PHP-Code:
                            <tr>
                              <td><?=$titel ?>
                              <?php
                                  
                            if (($counter >= 2) && ($counter == 0))
                                      {
                                          echo 
                            "<br>";
                                      }
                                  
                            $counter++;
                              
                            ?>
                              </td>
                            </tr>
                            Zuletzt geändert von Dirk-Kiel; 23.02.2007, 15:16.

                            Kommentar


                            • #15
                              $counter ist aber bekannt ??
                              error_reporting(E_ALL) am Anfang des Scripts hast du sicherlich gemacht, oder ?
                              Die Var überschreibst du jetzt nicht mehr bei jedem Durchlauf ??

                              Ohne den aktuellen Code hat die Sache etwas vom Fischen im Trüben...

                              Gruss

                              tobi
                              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                              Kommentar

                              Lädt...
                              X