Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Galerie - Bilder nebeneinander Problem

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Galerie - Bilder nebeneinander Problem

    Ich sitze mittlerweile 3 Stunden an diesem Problem und kriegen langsam ein am rappel! Folgendes: 3 Bilder sollten in einer Zeile angezeigt werden. Danach soll eine neue Spalte folgen, in der wieder 3 Bilder zu sehen sind usw. Bis das Maximal limit von $epp
    Code:
    ($epp = 10;)
    erreicht ist.

    Hier mal der Code zum reinschauen:
    Code:
    ##
      $qry = mysql_query("SELECT * FROM bilder WHERE cid='".intval($id)."'");
      $num = mysql_num_rows($qry);
      $epp = 10;
      $pages = ceil($num/$epp);
              if ($num > 0)
            {
    
      echo '<div align=\'center\'><a href=\'kategorie.php?id='.$id.'&amp;page=1\'><img src="http://www.php.de/images/icons/arrow_left.png" width="16" height="16" alt="left" /></a> ';
      $i = 1;
      while($i <= $pages) {
           echo '<a href=\'kategorie.php?id='.$id.'&amp;page='.$i.'\'>'.$i.'</a> ';
           $i++;
      }
      echo '<a href=\'kategorie.php?id='.$id.'&amp;page='.$pages.'\'><img src="http://www.php.de/images/icons/arrow_right.png" width="16" height="16" alt="right" /></a></div> ';
      ##
      }
      
      $i = 1;
      
      if(empty($_GET['page']) || !is_numeric($_GET['page'])) {
         $_GET['page'] = 1;
    }
    
    
    
    
     $query = "SELECT * FROM bilder WHERE cid='".intval($id)."' AND freigabe='1' LIMIT ".($_GET['page']-1)*$epp.",".$_GET['page']*$epp;
      
      $result = mysql_query($query);
      $num_rows = mysql_num_rows($result);
            if ($num_rows > 0)
            {
                    while ($dat = mysql_fetch_array($result))
                    {
                    $bid = $dat["id"];        
                    $bname = $dat["name"]; 
                    $burl = $dat["bildname"];
    
                                  
    
    
    $ausgabe .= '<table width="110" border="0" cellpadding="0" cellspacing="0" class="tabelle">
      <tr>
        <td><div align="center"><strong>'.$bname.'</strong></div></td>
      </tr>
      <tr>
        <td><div align="center"><a rel="nofollow" href="view.php?id='.$bid.'"><img src="http://127.0.0.1/temp/thumb_'.$burl.'" alt="'.$bname.'" width="100" height="92" border="0" /></a></div></td>
      </tr>
    </table><br />';
    
        
                     $i++;                 
                    }
            }
            else
            {
             $ausgabe .= "Keine Einträge vorhanden!";
            }
    
    echo $ausgabe;            
    }
    Ich wäre über Hilfe sehr dankbar!


  • #2
    also in Deinem code gibst Du ja einfach die Bilder untereinander aus, wie (wo) ist denn Dein Ansatz, die Bilder nebeneinander auszugeben?

    Kommentar


    • #3
      Der oben genannte Code ist nur ein Backup. Wie ja oben steht, habe ich es 3 Stunden probiert und komme nicht weiter. Von daher habe ich mein Code gemurxe gelöscht und hier mein Backup hochgeladen.

      Kommentar


      • #4
        Naja so schwer ist das nicht. Wenn du es als Tabelle darstellst kannst du eben in der while() Schleife in der du die Bilder ausliest immer eine Variable hochzählen. Sobald die Variable gleich 3 (oder gleich $epp) ist wird eben das Ende der Tabellenzeile angegeben.

        PHP-Code:
        <table>
        <tr>
        <?php
        // hier alles mögliche zum auslesen
        $i 0;
        while( ... ) {
            
        $i++;
            if (
        $i == $epp) echo '</tr><tr>';

            echo 
        '<td>hier das bild</td>';
        }
        </
        tr>
        </
        table>
        So in etwa sollte es dann bei dir aussehen.

        Kommentar


        • #5
          Einfacher gesagt, als getan.

          PHP-Code:
          <?php
          echo "<table width='100%' border='1'>\n";                              
          echo 
          "<tr>\n";
          $bpz 1;
          while(
          $bpz <= 3) {
               echo 
          "<td>&nbsp;</td>\n";
               
          $bpz++;
               if (
          $bpz 3)
                    {
                         echo 
          "</tr>
          \n"
          ;
                    }}
          echo 
          '</table>';

          ?>
          Irgendwie will das alles nicht.

          Kommentar


          • #6
            ja dann geh mal den code durch und schau mal was Du da programmiert hast...

            Kommentar


            • #7
              Ist doch klar. Die while-Schleife bricht ab wenn $bzp == 3 ... daher kommst du so oder so NIE zu dem Punkt wo "<tr>" ausgegeben werden soll. Die while-Schleife soll doch alle Bilder durchlaufen also z.B. alle Einträge aus der Datenbank etc.

              Etwa so:

              PHP-Code:
              // wieder table etc
              <?php
              $query 
              = ...;
              while (
              $row mysql_fetch_array($query)) {
                  
              // und hier wie ich es oben beschrieben hatte
              }
              ?>
              // table

              Kommentar


              • #8
                Hab das jetzt mal GENAU so gemacht, wie du es gesagt hast
                Leider merkt er sich das nur beim ersten Mal, wieviel Bilder er in eine Zeile packen soll. Wenn ich jetzt z.B 8 Datensätze habe & pro Zeile 3 Bilder haben will...dann packt er 3 Bilder in die erste Zeile & 5 Bilder in die Zweite

                Das würde dann so aussehen:
                Bild1 Bild2 Bild3
                Bild4 Bild5 Bild6 Bild7 Bild8

                PHP-Code:
                <?php include("dbconnect.php"); ?>
                <table>
                <tr>
                <?php
                $abfrage 
                "SELECT id, bild FROM bild";
                $ergebnis mysql_query($abfrage);

                $bpz 0;
                while(
                $row mysql_fetch_object($ergebnis))
                    {
                    
                $bpz++;
                    if (
                $bpz == 4) { echo '</tr><tr>'; }
                    echo 
                "<td>",$row->bild,"</td>";
                    }
                  
                ?>

                </tr>
                </table>

                Kommentar


                • #9
                  Och komm ein bisschen Nachdenken kannst du doch auch. Geh doch mal deinen Code ganze genau durch, dann sollte dir auffallen was passiert!

                  Wen $bpz 4 ist und dann die nächste Zeile durchläuft ist es 5, dann 6 ... und so weiter ...

                  Kommentar


                  • #10
                    Nüscht da, semantisch ist hier eine Tabelle fehl am Platz!
                    Benutze statt dessen image tags oder mit float:left formatierte divs. Jedem dritten - das bekommt man über eine modulo 3 Operation hin - verpasst Du ein class Attribut, dass Du per CSS mit clear:left zum Zeilenumbruch zwingst.
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar


                    • #11
                      Habe es jetzt doch hinbekommen! Und zwar mit Tabellen Da Flor1an mir einen letzten Denkanstoß hier gegeben hat, hab ich es endlich geschafft :P Ich habe in die If-Anweisung einen $count gesetzt der immer 4 nach oben zählt. In der If-Bedingung habe ich dann $bpz == $count gemacht


                      Danke euch allen für die Hilfe!

                      Kommentar


                      • #12
                        Ich hatte das selbe Problem, ich habe vor eine Bildergallerie zu programmieren, nachdem ich diesen Beitrag gelesen habe, bin ich entlich weiter gekommen:

                        Code:
                        <table border><tr>
                        <?php
                        include ("config.php");
                        
                        
                        $res =  mysql_query("select * from pic"); 
                        $ergebnis = mysql_query($res);
                        $z=0;
                        
                        while($row =  mysql_fetch_array($res))
                        {
                        $z=$z+1;
                        echo "<td><img src='".$row['b_pfad']."' height='50'>";
                        if ($z ==4) {echo "</tr><tr>"; $z=0;}
                        }
                        ?>
                        </tr>
                        </table border>
                        So habe ich es gemacht, und es funktioniert bestens!

                        Kommentar


                        • #13
                          Leute, warum müssen es immer wieder Tabellen sein? Das img Tag unterstützt von sich aus Floating, mit divs ist es unwesentlich komplizierter und eine neue Zeile reduziert sich dann auf ein <br> oder ein neues Absatz-bildendes Tag...

                          Tabellen sollten tabellarischen Daten vorbehalten sein.
                          --

                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                          --

                          Kommentar


                          • #14
                            Zitat von nikosch77-new Beitrag anzeigen
                            Leute, warum müssen es immer wieder Tabellen sein? Das img Tag unterstützt von sich aus Floating, mit divs ist es unwesentlich komplizierter und eine neue Zeile reduziert sich dann auf ein <br> oder ein neues Absatz-bildendes Tag...

                            Tabellen sollten tabellarischen Daten vorbehalten sein.

                            Hehe ganz einfache Antwort, weil ich kein Plan habe wie das geht was du meinst^^

                            Kommentar


                            • #15
                              Ganz einfach Code wie der wird automatisch nebeneinander angezeigt:
                              Code:
                              <img src="a.jpg"><img src="a.jpg"><img src="a.jpg">
                              Und der zweizeilig zu jeweils 3 Bildern:

                              Code:
                              <img src="a.jpg"><img src="a.jpg"><img src="a.jpg"><br>
                              <img src="a.jpg"><img src="a.jpg"><img src="a.jpg">
                              bzw.

                              Code:
                              <p><img src="a.jpg"><img src="a.jpg"><img src="a.jpg"></p>
                              <p><img src="a.jpg"><img src="a.jpg"><img src="a.jpg"></p>
                              Einfach so. Wozu ne Tabelle?
                              Wenn ich jetzt Bilder per Schleife ausgebe, schreibe ich alle 3 Bilder noch ein <br> dazu... Und semantisch korrekt ist es auch noch (wenn alt Attribute ergänzt werden).

                              --

                              Übrigens heißt das Element table. Wohingegen border ein Attribut ist, das einen Wert verlangt und auch im schließenden Tag nichts verloren hat:
                              <table border>
                              [..]
                              </table border>
                              --

                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                              --

                              Kommentar

                              Lädt...
                              X