#1 30. April 2012 Zuletzt bearbeitet: 30. April 2012 Einfache MYSQL Abfrage nebeneinander (Tabelle) Hallo Forum, ich habe gerade eine totale Denkblockade. Bis jetzt habe ich alle meine SQL Abfragen mit PHP untereinander ausgeben lassen. Nun wollte ich aber mal eine Galerie machen, in der 2 Bilder nebeneinander angezeigt werden, und dann eine neue Zeile angefangen wird. Ansätze habe ich schon erreicht aber ziemlich unschön und fehlerhaft. Vielleicht könnt ihr mir bei der einfachen Abfrage bzw Ausgabe auf die Sprünge helfen. Folgenden Code habe ich geschrieben: PHP: <? echo "<table width=\"495\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\"> <tr> <td bgcolor=\"#CCCCCC\">feld1</td> <td bgcolor=\"#CCCCCC\">feld2</td> </tr>" ; $abfrage = "SELECT * FROM gal_test ORDER BY id" ; $ergebnis = mysql_query ( $abfrage ) or die( mysql_error ()); $i = 0 ;while ( $row = mysql_fetch_object ( $ergebnis )) { if ( $i == 0 ) { echo "<tr>" ; $i = 0 ; } echo "<td> $row -> text </td>" ; if ( $i == 2 ) { echo "</tr>" ; $i = 0 ; } $i ++; } mysql_free_result ( $ergebnis ); echo "</table>" ; ?> Ausgabe sieht dann so aus: HTML: <table width="495" border="1" cellspacing="0" cellpadding="0"> <tr> <td bgcolor="#CCCCCC">feld1</td> <td bgcolor="#CCCCCC">feld2</td> </tr> <tr><td>test1</td><td>test2</td><td>test3</td></tr><td>test4</td><td>test5</td></tr><td>test6</td><td>text7</td></tr><td>text8</td></table> komischerweise erzeugt er in der ersten Zeile insgesamt 3 Spalten und beendet es richtig mit einem </tr> aber die neue zeile fängt er nicht mit einem <tr> an Vielleicht könnt ihr mir ja mal helfen. BW ist ehrensache! ================ Edit: So nach einem Bierchen habe ich das Problem ansatzweise in den Griff bekommen. Habe den Counter an falscher Stelle gesetzt und ihn auch an falscher Stelle hochzählen lassen. PHP: <? echo "<table width=\"495\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\"> <tr> <td bgcolor=\"#CCCCCC\">fekd1</td> <td bgcolor=\"#CCCCCC\">feld2</td> </tr>" ; $abfrage = "SELECT * FROM gal_test ORDER BY id" ; $ergebnis = mysql_query ( $abfrage ) or die( mysql_error ()); $i = 0 ;while ( $row = mysql_fetch_object ( $ergebnis )) { if ( $i == 0 ) { echo "<tr>" ; } $i ++; echo "<td> $row -> text </td>" ; if ( $i == 2 ) { echo "</tr>" ; $i = 0 ; } } mysql_free_result ( $ergebnis );if ( $i != 0 ) { echo "</tr>" ; } echo "</table>" ; ?> ergibt als HTML Ausgabe: HTML: <table width="495" border="1" cellspacing="0" cellpadding="0"> <tr> <td bgcolor="#CCCCCC">fekd1</td> <td bgcolor="#CCCCCC">feld2</td> </tr><tr><td>test1</td><td>test2</td></tr><tr><td>test3</td><td>test4</td></tr><tr><td>test5</td><td>test6</td></tr><tr><td>text7</td><td>text8</td></tr><tr><td>test9</td></tr></table></p> + Multi-Zitat Zitieren
#2 30. April 2012 AW: Einfache MYSQL Abfrage nebeneinander (Tabelle) Ungetestet: PHP: <? PHP echo <<<HTML <table width="495" border="1" cellspacing="0" cellpadding="0"> <thead> <tr> <th style="background:#ccc">Feld 1</th> <th style="background:#ccc">Feld 2</th> </tr> </thead> HTML; $abfrage = "SELECT * FROM `gal_test` ORDER BY `id`" ; $ergebnis = mysql_query ( $abfrage ) or die( mysql_error () ); $tableRows = array(); $tableCells = array(); $i = 0 ; while( false !== ( $row = mysql_fetch_object ( $ergebnis ) ) ) { if( $i > 0 && $i % 2 == 0 ) { $tableRows [] = $tableCells ; $tableCells = array(); } $tableCells [] = '<td>' . htmlspecialchars ( $row -> text ) . '</td>' . "\n" ; $i ++;} mysql_free_result ( $ergebnis ); if( count ( $tableRows ) > 0 ) { echo '<tbody><tr>' . implode ( "</tr>\n<tr>" , $tableRows ) . '</tr></tbody>' ;}else { echo '<tbody><tr><td colspan="2">Keine Einträge vorhanden</td></tr></tbody>' ;} echo "</table>" ; P.s.: Mit Bier neben der Tastatur sollte man so ein Problem nicht angehen! 2 Person(en) gefällt das. + Multi-Zitat Zitieren
#3 9. Mai 2012 AW: Einfache MYSQL Abfrage nebeneinander (Tabelle) Sorry das ich mich jetzt erst wieder melde, vielen Dank Nanobyte für deine Hilfe. Dein Quelltext funktioniert und ist die elegantere Lösung von uns beiden muss mich sowieso mal mit den neuen Programmierrichtlinien vertraut machen. Vielen Dank nochmal + Multi-Zitat Zitieren
#4 23. Juli 2014 Zuletzt bearbeitet: 24. Juli 2014 AW: PHP: Einfache MYSQL Abfrage nebeneinander ( Tabelle )[/ b ] Hallo , sry aber bevor ich ein neues Thema anfange krame ich alte Sachen raus . Ich hab fast das gleiche prob . mit den Tabellen : [ PHP ]echo "<table width=\"540px\" border=\"0\">" ;while ( $row = mysql_fetch_object ( $ergebnis )) {if ( $i == 0 ) {echo "<tr>" ; } $i ++;echo "<td bgcolor=\"#000080\" width=\"180px\"><center><font size=\"1\" face=\"verdana\" color=\"#FFFFFF\"> <b> $row -> name :</b></font></center></td>" ; if ( $i == 3 ) {echo "</tr><tr height=\"100\">" ;}if ( $i == 3 ) { echo "<td bgcolor=\"#C0DAFA\" width=\"180px\" valign=\"top\"> <font size=\"1\" face=\"verdana\"> $row -> domaininkl Domain inklusive **<br> $row -> webspace Speicherplatz<br> $row -> emailspace EMail-Space<br> <font color=\"#FF0000\"><b> $datentraffic </b></font><br> $row -> subdomain Subdomains<br> $row -> ftp FTP Zugänge<br> $row -> email Email Adressen<br> $row -> apache <br> $datenbanken <br> $row -> administration <br> $row -> netzwerkkarte <br> <br> <b> $row -> kunden </b><br> <br> <br> <center><font color=\"#000099\"><b><font size=\"3px\"> $row -> preis_monat €</font> / Monat</b></font></center> <center><font size=\"1\">zzgl. $row -> setup € Setup</font></center> <br> <br> <center><a href=\"?load= $row -> bestellen \"> <font color=\"#FF0000\" style=\"background-color:#C0DAFA\"> <b><u>Jetzt Bestellen</u></b></font></a></center> <br> </td>" ;} if ( $i == 3 ) {echo "</tr>" ; $i = 0 ;} } mysql_free_result ( $ergebnis );if ( $i != 0 ) { echo "</tr>" ; } echo "</table>" ; ich würde gerne oben das produkt 3 mal stehen haben dann ein /tr, tr und dann soll 3 mal meine beschreibung kommen dann schließen mit /tr dann von vorne beginnen und die nächsten 3 datensätze abrufen und so weiter bis DB leer ist. Danke für eure Hilfe Gruß Viper + Multi-Zitat Zitieren