drei bilder pro zeile

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

  • drei bilder pro zeile

    hi,
    ich lese mithilfe einer while schleife einen bildnamen nach dem anderen ein.
    jetzt sollen immer drei bilder in einer zeile stehen, also
    Code:
    <tr>
    <td>bild1</td>
    <td>bild2</td>
    <td>bild3</td>
    </tr>
    <tr>
    <td>bild4</td>
    <td>bild5</td>
    <td>bild6</td>
    </tr>
    ...
    bei mir kommt da immer total gefrickelter code raus , deswegen möchte ich mal eine elegante lösung sehen, weil ich das problem öfter habe

    schonmal vielen dank für eure hilfe
    grüsse

  • #2
    benutz doch einfach mal die suche nach "zeilenwechsel" oder "spaltenwechsel" oder "gruppenwechsel"
    Kissolino.com

    Kommentar


    • #3
      und informier dich über modulo

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

      Kommentar


      • #4
        hi,
        ok thx ich habs jetzt so gemacht

        PHP-Code:
        for($i=0;$i<10;$i++) {
            echo (
        $z%3==0) ? "<tr>\n" "";
            
        $z++;
            echo 
        "<td>".$i."</td>\n";
            echo (
        $z%3==0) ? "</tr>\n" "";

        das einzige problem dabei ist, dass wenn es nicht genau aufgeht das letzte </tr> fehlt:
        PHP-Code:
        <table>
        <
        tr>
        <
        td>0</td>
        <
        td>1</td>
        <
        td>2</td>
        </
        tr>
        <
        tr>
        <
        td>3</td>
        <
        td>4</td>
        <
        td>5</td>
        </
        tr>

        <
        tr>
        <
        td>6</td>
        <
        td>7</td>
        <
        td>8</td>
        </
        tr>
        <
        tr>
        <
        td>9</td>
        </
        table
        aber wenn ich jetzt nach der schleife echo "</tr>"; schreib stimmts ja wieder nicht, wenns aufgeht

        ja kann ich kenn % hab bloss nicht gewusst, dass man dazu modulo sagt

        grüsse

        Kommentar


        • #5
          Ich hab mal ein Script gepostet, mit der Lösung des Problems :/
          Musst du mal suchen. Die Anzahl der Spalten kann man per Variable festlegen.

          Kommentar


          • #6
            Du musst nach der ersten for-Schleife noch abffragen ob $z%3==0
            Wenn nicht machst Du noch ne Schleife und hängst entsprechend viele <td> dran und dann das <tr>.
            Ist zwar nicht besonders elegant, aber sollte funzen.
            Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

            Kommentar


            • #7
              ok, ich habs jetzt so gemacht
              PHP-Code:
              <table>
              <?php
              for($i=0;$i<6;$i++) {
                  echo (
              $z%3==0) ? "<tr>\n" "";
                  echo 
              "<td>".$i."</td>\n";
                  
              $z++;
                  echo (
              $z%3==0) ? "</tr>\n" "";
              }
              echo (
              $z%3!=0) ? "</tr>\n" "";
              ?>
              </table>
              grüsse und danke für eure hilfe

              Kommentar


              • #8
                Hallo,

                hier mal mal mein code.:

                <?php
                $rs1 = mysql_query("SELECT * FROM malvorlagen_kathegorie where id='$id'");
                $row1 = mysql_fetch_array($rs1);
                $kathegorie=$row1["kathegorie"];
                $Zeilen_pro_Seite = 10;
                if (!isset($seite)) {
                $seite = 0;
                }
                $sql="select * from malvorlagen where kathegorie='$kathegorie' limit $seite,$Zeilen_pro_Seite";
                $result=mysql_query($sql);

                $result1 = mysql_query("SELECT * FROM malvorlagen where kathegorie='$kathegorie'");
                $Anzahl=mysql_num_rows($result1);
                $i=0;
                if($Anzahl>$Zeilen_pro_Seite) {
                $Seiten=intval($Anzahl/$Zeilen_pro_Seite);
                if($Anzahl%$Zeilen_pro_Seite) {
                $Seiten++;
                }
                }
                while($row = mysql_fetch_array($result)){

                ?>
                <table>
                <?php
                for($i=0;$i<6;$i++) {
                echo ($z%3==0) ? "<tr>\n" : "";
                echo "<td><a href='$row[gross_bild]'><img src='$row[klein_bild]'></a></td>\n";
                $z++;
                echo ($z%3==0) ? "</tr>\n" : "";
                }
                echo ($z%3!=0) ? "</tr>\n" : "";
                ?>
                </table>
                <?
                }
                $i++

                ?>
                <center>
                <?
                for ($i=1;$i<=$Seiten;$i++) {
                $fwd=($i-1)*$Zeilen_pro_Seite;
                echo "<b><a href=\"$kathegorie$id-$fwd.html\"><font face='Verdana' size='3'>$i&nbsp;</font></a></b>";
                }

                ?>

                nun kommt das bild 1 6 mal.

                wer kann mir da helfen ?

                mfg jens

                Kommentar


                • #9
                  So auf den ersten Blick würde ich sagen: Verwende die PHP Tags !!
                  Und auf den zweiten: Ich sehe nirgends, dass du dein $z initialisieren würdest. Ich nehme mal an $z ist immer NULL.
                  Ausserdem musst du den Zähler bei einer for-Schleife nicht von Hand hochzählen (das hast du mit for($i=0;$i<6;$i++) bereits gemacht).

                  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


                  • #10
                    Hallo,
                    Nun ich weis jetzt auch nicht weiter probiere schon stunden lang und es klappt nicht.

                    mfg jens

                    Kommentar


                    • #11
                      Ich würde mal sagen, worked as designed
                      Ausserdem hast Du ein bisschen viele Zählervariablen
                      PHP-Code:
                      while ($row 
                          .......
                          for 
                      i=0i<
                      wenn Du $row setzt und dann 6 mal das GLEICHE bild ausgeben lässt, ist es halt 6 mal da.

                      vergiss mal die for-schleife, bau dir den Zähler $i in deine while-Schleife ein und kopier dann den Code für das Bilderausgeben in die while-Schleife

                      PHP-Code:
                      $i 0;
                      while (
                      $row  /*etc  */) {
                          echo (
                      $i%3==0) ? "<tr>\n" "";
                          echo 
                      "<td><a href='$row[gross_bild]'><img src='$row[klein_bild]'></a></td>\n";
                          
                      $i++;
                          echo (
                      $i%3==0) ? "</tr>\n" "";
                      }
                      #jetzt noch die restlichen <td> und <tr> ausgeben, wenn $i%3!=0 
                      Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

                      Kommentar


                      • #12
                        Hab noch nen altes Skript gefunden, wo ich mal sowas gemacht hab

                        PHP-Code:
                                    $i 1;
                                    echo 
                        '<table border="1">';
                                    while (
                        $row mysql_fetch_assoc($result))
                                    {
                                         echo (
                        $i == 1) ? "<tr>\n" "";
                                         echo 
                        "<a href='$row[gross_bild]'><img src='$row[klein_bild]'></a>\n";
                                         echo (
                        $i == 0) ? "</tr>\n" "";
                                        
                        $i++;
                                    }
                        //end while $result
                                    #eventuell fehlen noch Tabellenzeilen, wenn Anzahl durch 3 teilbar
                                    
                        while ($i%!= 0) {
                                        
                        $addTR true;
                                        echo 
                        '<td>&nbsp;</td>';
                                        
                        $i++;
                                    }
                                    if (
                        $addTR) {
                                        echo 
                        '<td>&nbsp;</td>';
                                        echo 
                        "<tr>\n";
                                    }
                                    echo 
                        '</table>'
                        Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

                        Kommentar


                        • #13
                          Hallo,
                          Also ich habe mal den Code ausprobiert der listet jetzt mir alle bilder nach unten auf keine nebeneinander.

                          habe es gefunden <td> und </td> haben gefehlt

                          tratzdem vielen dank für die hilfe von euch


                          mfg jens
                          Zuletzt geändert von jenssie; 09.12.2005, 14:54.

                          Kommentar

                          Lädt...
                          X