[PHP] Einfache MYSQL Abfrage nebeneinander (Tabelle)

Dieses Thema im Forum "Webentwicklung" wurde erstellt von uRph03n1x, 30. April 2012 .

  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>
    
     
  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  &&  $i  ==  ) {
            
    $tableRows [] =  $tableCells ;
            
    $tableCells  = array();
        }
        
        
        
    $tableCells [] =  '<td>' htmlspecialchars $row -> text  ) . '</td>' "\n" ;

        
    $i ++;
    }

    mysql_free_result $ergebnis  );


    if( 
    count $tableRows  ) >  ) {
        echo 
    '<tbody><tr>' implode "</tr>\n<tr>" $tableRows  ) . '</tr></tbody>' ;
    }
    else {
        echo 
    '<tbody><tr><td colspan="2">Keine Eintr&auml;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.
  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
     
  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\">
                    &nbsp;
    $row -> domaininkl  Domain inklusive **<br>
                    &nbsp;
    $row -> webspace  Speicherplatz<br>
                    &nbsp;
    $row -> emailspace  EMail-Space<br>
                    &nbsp;<font color=\"#FF0000\"><b>
    $datentraffic </b></font><br>
                    &nbsp;
    $row -> subdomain  Subdomains<br>
                    &nbsp;
    $row -> ftp  FTP Zug&auml;nge<br>
                    &nbsp;
    $row -> email  Email Adressen<br>
                    &nbsp;
    $row -> apache <br>
                    &nbsp;
    $datenbanken <br>
                    &nbsp;
    $row -> administration <br>
                    &nbsp;
    $row -> netzwerkkarte <br>
                    <br>
                    &nbsp;<b>
    $row -> kunden </b><br>
                    <br>
                    <br>
                    <center><font color=\"#000099\"><b><font size=\"3px\">
    $row -> preis_monat  &euro;</font> / Monat</b></font></center>
                    <center><font size=\"1\">zzgl. 
    $row -> setup  &euro; 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
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.