Patrick: nach 4 bildern automatischer zeilenumbruch

Hallo,

Ich habe eine Galerie die die daten für das foto und die texte aus einer datenbank (mysql) holt. jetzt würde ich es gerne in der galerie so anordnen das immer 4 fotos nebeneinander kommen und dann einen zeilenumbruch und dann wieder 4 nebeneinander.

wie mach ich das?

Mit freundlichen Grüssen,
Patrick

  1. Hallo ihr da draußen,

    wie mach ich das?

    Du könntest in einer For-Schleife eine Zahl hochzählen lassen. Und immer wenn die Zahl Modulo 4 4 entspricht (if(x%4 == 4))), kannst du einen Zeilenumbruch hinschreiben lassen.

    Grüße von hier drinnen, aus Biberach an der Riss (http://www.stadt-biberach.de),
    Dogfish

    --
    Let's close our eyes and see what happens
    (http://dogfish.net.tc)
    1. Hallo

      danke für die schnelle antwort!

      Du könntest in einer For-Schleife eine Zahl hochzählen lassen. Und immer wenn die Zahl Modulo 4 4 entspricht (if(x%4 == 4))), kannst du einen Zeilenumbruch hinschreiben lassen.

      Also ich kann noch nicht so viel mit php und mit for-schleifen kenn ich mich noch nicht aus. könntest du mir das ein bisschen erklären?

      Mit freundlichen Grüssen,
      Patrick

      1. Hallo ihr da draußen,

        Du könntest in einer For-Schleife eine Zahl hochzählen lassen. Und immer wenn die Zahl Modulo 4 4 entspricht (if(x%4 == 4))), kannst du einen Zeilenumbruch hinschreiben lassen.
        Also ich kann noch nicht so viel mit php und mit for-schleifen kenn ich mich noch nicht aus. könntest du mir das ein bisschen erklären?

        Nehmen wir einmal an, du hättest deine Bildernamen in einem Array (ich hoffe, du weißt was das ist) namens $bilder_array. Dann fängst du eine For-Schleife an:

        for($n = 0; $n < count($bilder_array); $n++)
        {

        Du fängst quasi mit der Variable $n und dem Wert 0 an zu zählen ($n = 0), und zwar solange, wie $n kleiner ist als die Anzahl Werte im Array (count($bilder_array)). Bei jedem Durchlauf zählst du die Variable $n um eins hoch ($n++).

        echo "<img src="".$bilder_array[$n]."" alt="Bild" />";
          if($n%4 == 4)
            echo "<br />\n";
        }

        Nun schreibst du den HTML-Quellcode des Bildes, wobei $bilder_array[$n] dem Wert im Array, also dem Pfad des Bildes entspricht. Als Alternativtext habe ich jetzt einfach "Bild" genommen.
        Nun wird überprüft, ob $n Modulo 4 4 ist. Modulo ist eine mathematische Funktion, die dem Rest bei einer Teilung mit einer natürlichen Zahl als Ergebnis entspricht. Also, alle 4 Durchläufe wird ein Zeilenumbruch hingeschrieben, da nur dann $n Modulo 4 4 ist.
        Und das war's dann schon.

        Grüße von hier drinnen, aus Biberach an der Riss (http://www.stadt-biberach.de),
        Dogfish

        --
        Let's close our eyes and see what happens
        (http://dogfish.net.tc)
        1. Hallo

          danke für die gute erklärung.

          also ich habe eine model seite und in der galerie werden nur bilder angezeigt bei denen auch die daten voll´ständig sind.

          der code sieht so aus:

          <?php
          while ( $data = mysql_fetch_array($resultID) ) {
           if ($data[user]=="" OR $data[name]=="" OR $data[gebdatum]=="" OR $data[postleitzahl]==""
            OR $data[land]=="" OR $data[wohnort]=="" OR $data[email]=="" OR $data[groesse]==""
            OR $data[masse]=="" OR $data[konfektions]=="" OR $data[bh_kragen]=="" OR $data[haarfarbe]==""
            OR $data[haarlaenge]=="" OR $data[augenfarbe]=="" OR $data[hauttyp]=="" OR $data[schuhg]==""
            OR $data[einsatz_tab]=="" OR $data[geschlecht]=="$model") {
           //Daten unvollständig
           } elseif (file_exists("../images/models/$data[geschlecht]$data[model_id]/bild1.jpg") AND
               file_exists("../images/models/$data[geschlecht]$data[model_id]/bild2.jpg")) { ?>
            <td>
             <table border="0" cellpadding="0" cellspacing="2">
              <tr height="100">
               <td height="100" width="150"><a href="http://www.models-planet.de/php/sedcard.php?user=<?php print $data[user]; ?>"><img src="http://www.models-planet.de/images/models/<?php print $data[geschlecht]; ?><?php print $data[model_id]; ?>/bild1.jpg" border="1" width="72"></a></td>
              </tr>
              <tr>
               <td width="150"><?php print $data[name]; ?></td>
              </tr>
              <tr>
               <td width="150"><?php print $data[land]; ?>-<?php print $data[postleitzahl]; ?> <?php print $data[wohnort]; ?></td>
              </tr>
             </table>
              </td>
          <?php }
          }
          ?>

          wie bekomme ich die for-anweisung da rein?

          Mit freundlichen Grüssen,
          Patrick

          1. Hallo ihr da draußen,

            <?php

            for ($n=0; $data = mysql_fetch_array($resultID); $n++) {

            if ($data[user]=="" OR $data[name]=="" OR $data[gebdatum]=="" OR $data[postleitzahl]==""
              OR $data[land]=="" OR $data[wohnort]=="" OR $data[email]=="" OR $data[groesse]==""
              OR $data[masse]=="" OR $data[konfektions]=="" OR $data[bh_kragen]=="" OR $data[haarfarbe]==""
              OR $data[haarlaenge]=="" OR $data[augenfarbe]=="" OR $data[hauttyp]=="" OR $data[schuhg]==""
              OR $data[einsatz_tab]=="" OR $data[geschlecht]=="$model") {
             //Daten unvollständig
             } elseif (file_exists("../images/models/$data[geschlecht]$data[model_id]/bild1.jpg") AND
                 file_exists("../images/models/$data[geschlecht]$data[model_id]/bild2.jpg")) { ?>
              <td>
               <table border="0" cellpadding="0" cellspacing="2">
                <tr height="100">
                 <td height="100" width="150"><a href="http://www.models-planet.de/php/sedcard.php?user=<?php print $data[user]; ?>"><img src="http://www.models-planet.de/images/models/<?php print $data[geschlecht]; ?><?php print $data[model_id]; ?>/bild1.jpg" border="1" width="72"></a></td>
                </tr>
                <tr>
                 <td width="150"><?php print $data[name]; ?></td>
                </tr>
                <tr>
                 <td width="150"><?php print $data[land]; ?>-<?php print $data[postleitzahl]; ?> <?php print $data[wohnort]; ?></td>
                </tr>
               </table>
                </td>

            <?php
               if($n%4 == 3) // Siehe [pref:t=52271&m=288301]
               {
            ?>
                 </tr>
                 <tr>
             <?php } }

            }
            ?>

            Änderungen sind überall da, wo kein > davor ist.

            Grüße von hier drinnen, aus Biberach an der Riss (http://www.stadt-biberach.de),
            Dogfish

            --
            Let's close our eyes and see what happens
            (http://dogfish.net.tc)
            1. Hallo

              vielen danke! es klappt. aber es werden auch die bilder mitgezählt die garnicht angezeigt werden. die sollen ja nicht mitgezählt werden!

              Mit freundlichen Grüssen,
              Patrick

              1. Hallo Patrick,

                aber es werden auch die bilder mitgezählt die garnicht angezeigt werden. die sollen ja nicht mitgezählt werden!

                dann mach eine while-Schleife:
                $n=0
                while(...mysql_fetch_...){
                if(datevollständig){
                 echo daten;
                 $n++
                }
                else { irgendwasanderes }
                if($n%4==3) echo...
                }

                btw: ein deinem Code sind etwa 30 Fehler drin ->http://de.php.net/language.types.array#language.types.array.foo-bar

                Grüße aus Nürnberg
                Tobias

                --
                Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
                1. Hallo ihr da draußen,

                  dann mach eine while-Schleife:

                  Man könnte natürlich auch in die FOR-Schleife noch so etwas einbauen:
                  if(daten_unvollständig)
                  { ...
                    $i--;
                  }
                  was aber nicht so elegant wäre.
                  Die while-Schleife ist doch irgendwie besser.

                  Grüße von hier drinnen, aus Biberach an der Riss (http://www.stadt-biberach.de),
                  Dogfish

                  --
                  Let's close our eyes and see what happens
                  (http://dogfish.net.tc)
                  1. Hallo

                    habs jetzt so gemacht:

                    <?php
                    $n=0
                    while ( $data = mysql_fetch_array($resultID) ) {
                     if ($data[user]=="" OR $data[name]=="" OR $data[gebdatum]=="" OR $data[postleitzahl]==""
                      OR $data[land]=="" OR $data[wohnort]=="" OR $data[email]=="" OR $data[groesse]==""
                      OR $data[masse]=="" OR $data[konfektions]=="" OR $data[bh_kragen]=="" OR $data[haarfarbe]==""
                      OR $data[haarlaenge]=="" OR $data[augenfarbe]=="" OR $data[hauttyp]=="" OR $data[schuhg]==""
                      OR $data[einsatz_tab]=="" OR $data[geschlecht]=="$model") {
                     //Daten unvollständig
                     } else if (file_exists("../images/models/$data[geschlecht]$data[model_id]/bild1.jpg") AND
                          file_exists("../images/models/$data[geschlecht]$data[model_id]/bild2.jpg")) {
                      $n++ ?>
                      <td>
                       <table border="0" cellpadding="0" cellspacing="2">
                        <tr height="100">
                         <td height="100" width="150"><a href="http://www.models-planet.de/php/sedcard.php?user=<?php print $data[user]; ?>"><img src="http://www.models-planet.de/images/models/<?php print $data[geschlecht]; ?><?php print $data[model_id]; ?>/bild1.jpg" border="1" width="72"></a></td>
                        </tr>
                        <tr>
                         <td width="150"><?php print $data[name]; ?></td>
                        </tr>
                        <tr>
                         <td width="150"><?php print $data[land]; ?>-<?php print $data[postleitzahl]; ?> <?php print $data[wohnort]; ?></td>
                        </tr>
                       </table>
                        </td>
                    <?php
                     if($n%4 == 3) {
                    ?>
                         </tr>
                         <tr>
                    <?php
                     }
                       }
                    }
                    ?>

                    parse error on line 89. line 89 ist die zeile wo die while schleife anfängt.

                    was mache ich falsch?

                    Mit freundlichen Grüssen,
                    Patrick

                    1. Hallo ihr da draußen,

                      <?php
                      $n=0

                      Hier fehlt das Semikolon (;).

                      while ( $data = mysql_fetch_array($resultID) ) {
                       if ($data[user]=="" OR $data[name]=="" OR $data[gebdatum]=="" OR $data[postleitzahl]==""
                        OR $data[land]=="" OR $data[wohnort]=="" OR $data[email]=="" OR $data[groesse]==""
                        OR $data[masse]=="" OR $data[konfektions]=="" OR $data[bh_kragen]=="" OR $data[haarfarbe]==""
                        OR $data[haarlaenge]=="" OR $data[augenfarbe]=="" OR $data[hauttyp]=="" OR $data[schuhg]==""
                        OR $data[einsatz_tab]=="" OR $data[geschlecht]=="$model") {
                       //Daten unvollständig
                       } else if (file_exists("../images/models/$data[geschlecht]$data[model_id]/bild1.jpg") AND
                            file_exists("../images/models/$data[geschlecht]$data[model_id]/bild2.jpg")) {
                        $n++ ?>

                      Das $n++ würde ich ans Ende des IF-Konstrukts bauen.

                      <td>
                         <table border="0" cellpadding="0" cellspacing="2">
                          <tr height="100">
                           <td height="100" width="150"><a href="http://www.models-planet.de/php/sedcard.php?user=<?php print $data[user]; ?>"><img src="http://www.models-planet.de/images/models/<?php print $data[geschlecht]; ?><?php print $data[model_id]; ?>/bild1.jpg" border="1" width="72"></a></td>
                          </tr>
                          <tr>
                           <td width="150"><?php print $data[name]; ?></td>
                          </tr>
                          <tr>
                           <td width="150"><?php print $data[land]; ?>-<?php print $data[postleitzahl]; ?> <?php print $data[wohnort]; ?></td>
                          </tr>
                         </table>
                          </td>
                      <?php
                       if($n%4 == 3) {
                      ?>
                           </tr>
                           <tr>
                      <?php
                       }

                      Hier würde ich das $n++ hinbauen.

                      }
                      }
                      ?>

                      Grüße von hier drinnen, aus Biberach an der Riss (http://www.stadt-biberach.de),
                      Dogfish

                      --
                      Let's close our eyes and see what happens
                      (http://dogfish.net.tc)
                      1. Hallo

                        $n=0
                        Hier fehlt das Semikolon (;).

                        misst, wie peinlich

                        <?php
                         }
                        Hier würde ich das $n++ hinbauen.

                        ja stimmt ist besser

                        }
                        }
                        ?>

                        nochmal vielen dank, es klappt jetzt alles.

                        Mit freundlichen Grüssen,
                        Patrick

                    2. Hallo Patrick,

                      <?php
                      $n=0

                      das hat dir Dogfish ja schon gesagt

                      if ($data[user]=="" OR $data[name]=="" OR [...]) {

                      aber $data[user] ist immernoch falsch - es heißt $data['user'] (oder mit "), außerdem gibt es auch eine Funktion empty() die sich dafür anbietet.

                      parse error on line 89. line 89 ist die zeile wo die while schleife anfängt.

                      bei solchen Fehlern _immer_ auch die Zeile vorher anschauen.

                      Grüße aus Nürnberg
                      Tobias

                      --
                      Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    2. Hallo miteinander.

      .. Modulo 4 4 entspricht (if(x%4 == 4)))...

      Ich foffe ich vertue mich nicht, aber ich glaube hier liegt ein kleiner Fehler vor.

      Der Modulo-Operator gibt den ganzzahligen Rest der Division aus.
      Der ganzzahlige Rest einer Division durch 4 kann demnach niemals 4 sein.
      Man müsste folglich nicht auf 4 sondern auf 0 abfragen (if(x % 4 == 0)).

      Gruß,

      Holger

      1. Hallo ihr da draußen,

        Der Modulo-Operator gibt den ganzzahligen Rest der Division aus.
        Der ganzzahlige Rest einer Division durch 4 kann demnach niemals 4 sein.
        Man müsste folglich nicht auf 4 sondern auf 0 abfragen (if(x % 4 == 0)).

        Oh, Entschuldigung. Jetzt wo du es sagst... Es muss natürlich 3 sein...

        Grüße von hier drinnen, aus Biberach an der Riss (http://www.stadt-biberach.de),
        Dogfish

        --
        Let's close our eyes and see what happens
        (http://dogfish.net.tc)