Ankündigung

Einklappen
Keine Ankündigung bisher.

Mysql und Tabellenaufbau

Einklappen

Neue Werbung 2019

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

  • Mysql und Tabellenaufbau

    Hallo,
    Ich habe ein Problem beim erstellen einer HTML-Tabelle mit PhP. Ich lasse die Daten für den Inhalt der einzelnen Zellen aus einer Datenbanktabelle lesen und dann generiere ich per php eine HTML-Tabelle, welche die Daten anzeigen soll. Das funktioniert soweit auch alles super jedoch möchte ich gerne zwei oder mehr dieser Datensätze in einer "reihe" nebeneinander haben und viele untereinander anstatt einen Datensatz pro "reihe" und alle untereinander.
    Hat da jemand einen Lösungsansatz für mich, wie ich das am besten angehen kann?

    PHP-Code:
    <?php
    $db_config_file 
    "/Pfad/zur/config.php";

    if (
    file_exists($db_config_file)) {
        include(
    $db_config_file);
        
    $dblink mysql_connect('localhost'$dbuser$dbpasswd);
        if (!
    $dblink) {
            
    $tabelle "Zur Zeit kann ich nicht zur Datenbank verbinden";
        } else {
            
    mysql_select_db("DBNAME"$dblink);
            
    $tabelle .= "<table border='1' cellpadding='0' cellspacing='0'>";
            
    $tabelle .= "<tbody><tr><td colspan='4' align='center'><b>Liste</b></td></tr><tr><td width='200px'><b>Spalte1</b></td><td width='150px'><b>Spalte2</b></td><td width='200px'><b>Spalte3</b></td><td width='150px'><b>Spalte4</b></td></tr>";
                
    $myselect mysql_query("SELECT * FROM tablename WHERE name1=namkrit ORDER BY name1");
                while(
    $row mysql_fetch_array($myselect)){
                    
    $HName=$row['name1'];
                    
    $tabelle .= "<tr><td style='text-align: center;' colspan='2'>".$HName."</td></tr>";
                    
    $Bildcheck="".strtolower($HName).".png";
                    
    $Filepath="Pfad/zu/den/Bildern/";
                    if (
    file_exists($Filepath.$Bildcheck)){
                        
    $tabelle .= "<tr><td style='text-align: center;' height='200' width='200' rowspan='3'><img src='/Pfad/zu/den/Bildern/".strtolower($HName).".png' alt='".$HName."' border='0'/></td>";
                    }else{
                        
    $tabelle .= "<tr><td style='text-align: center;' height='200' width='200' rowspan='3'><img src='/Pfad/zu/den/Bildern/keinbild.png' alt='Kein Bild' border='0'/></td>";
                    }
                    
    $tabelle .= "<td>Alter: ".$row['alter']."</td></tr>";
                    
    $tabelle .= "<tr><td>Info1: ".$row['info1']."</td></tr>";
                    
    $tabelle .= "<tr><td>Info2: ".$row['info2']."</td></tr>";
                    
    $tabelle .= "<tr><td colspan='2' height='5px'></td></tr>";
                }
            
    $tabelle .= "</tbody></table>";
        }
        
    mysql_close($dblink);
    }else{
        
    $tabelle "!!!Keine Config!!!";
    }

    echo 
    "$tabelle";
    ?>
    Meine QIP-Blume ist blau! ^^


  • #2
    Hallo,
    dazu musst du ja nur die Info haben, ob der Eintrag gerade oder ungerade ist. Wenn er ungerade ist, öffnest du ein <tr> und gibts mit <td> den Datensatz aus. Ist er gerade, musst du ein <td> ausgeben und mit </tr> die Zeile zumachen.

    PHP-Code:
    <?php
    $data 
    = array(1,2,3,4,5,6);
    $entriesPerRow 2;
    echo 
    "<table>";
    foreach (
    $data as $i => $value) {
      
    $isLastEntry = ($i == count($data));
      
    $openRow     = ($i $entriesPerRow) == 0;
      
    $closeRow    = (($i $entriesPerRow) == ($entriesPerRow 1)) || $isLastEntry;

      if (
    $openRow) {
        echo 
    "<tr>";
      }
      echo 
    "<td>"$value"</td>";
      if (
    $closeRow) {
        echo 
    "</tr>";
      }
    }
    echo 
    "</table>";
    ?>
    Der Clou ist das % Zeichen, dass dir den Rest zurückliefert.

    0 % 2 = 0
    1 % 2 = 1
    2 % 2 = 0
    3 % 2 = 1
    usw.
    "Mein Name ist Lohse, ich kaufe hier ein."

    Kommentar


    • #3
      Das löst mein Problem leider nicht, da ich ja bereits mehrere Zeilen pro Datensatz habe. Ich habe mal eine Grafik erstellt um das Ganze zu verdeutlichen.
      Meine QIP-Blume ist blau! ^^

      Kommentar


      • #4
        Dann scheint eine Tabelle für diesen Anwendungsfall wohl eher schlecht bis gar nicht geeignet zu sein. Sind es überhaupt tabellarische Daten oder handelt es sich dabei vielleicht eher um eine Liste von Informationen, die du verarbeiten möchtest?
        Listen kannst du auch prima über CSS nebeneinander positionieren.
        http://hallophp.de

        Kommentar


        • #5
          Also es muss nicht zwingend eine Tabelle sein, nur das schien mir der einfachste weg zu sein um den Aufbau so hinzubekommen.
          Hrmm... Gut, dann werde ich das gleich mal per CSS ausprobieren und schauen, wie ich die Positionierung hinbekomme.
          Meine QIP-Blume ist blau! ^^

          Kommentar


          • #6
            Problematisch dürften Info1 und Info2 werden. Fürgemein sind die Einträge dort unterschiedlich lang. Das bedeutet, für einen floating Ansatz hast DU keine gleich großen Boxen (es sei denn, Du setzt sie immer fest auf die Größe, die geschätzt maximal vorkommen soll) und die Anordnung sieht einfach doof aus.
            --

            „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


            • #7
              Hrmm... Das mit dem CSS ist garnicht so einfach wie ich dachte. hab noch nie so eine kombination aus datenbankabfrage und css gemacht. Wie stelle ich das denn am besten an?
              Meine QIP-Blume ist blau! ^^

              Kommentar


              • #8
                Das hat nichts miteinander zu tun.
                --

                „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


                • #9
                  Zitat von nikosch Beitrag anzeigen
                  Das hat nichts miteinander zu tun.
                  Das ist jetzt nicht gerade eine Antwort, die ich mir erhofft hab. Trägt natürlich WESENTLICH zur Lösung bei.
                  Meine QIP-Blume ist blau! ^^

                  Kommentar


                  • #10
                    Wie stelle ich das denn am besten an?
                    trägt auch nichts zur Lösung bei. Du präsentierst Code, wir geben Ratschläge oder Hifen dazu. So machen wir das auf php.de.
                    --

                    „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
                      ja, der code ist oben. Ich habe nun sowas gebastelt hier
                      PHP-Code:
                      <?php whilebegin ?> 
                      <?php if($i=1){
                      $i=2;?>
                      <div class="links relativ positioniertes div">
                      <div class="absolut positioniertes div">
                      <?php Bildladen ?> 
                      </div>
                      <div class="absolut positioniertes div">
                      <?php Nameladen ?> 
                      </div>
                      <div class="absolut positioniertes div">
                      <?php Info1laden ?> 
                      </div>
                      <div class="absolut positioniertes div">
                      <?php Info2laden ?> 
                      </div>
                      </div>
                      <?php}else{
                      $i=1;?>
                      <div class="rechts relativ positioniertes div">
                      <div class="absolut positioniertes div">
                      <?php Bildladen ?> 
                      </div>
                      <div class="absolut positioniertes div">
                      <?php Nameladen ?> 
                      </div>
                      <div class="absolut positioniertes div">
                      <?php Info1laden ?> 
                      </div>
                      <div class="absolut positioniertes div">
                      <?php Info2laden ?> 
                      </div>
                      </div>
                      <?php}?>
                      Allerdings stimmt das so mit der positioniereung nicht. die vertikalen abstände passen nicht.
                      Meine QIP-Blume ist blau! ^^

                      Kommentar


                      • #12
                        Ich würde auf diese seltsame Tabellenstruktur verzichten und ein Element tatsächlich über HTML/CSS so hinbiegen, dass es deiner gewünschten Ausgabe entspricht. Die Nebeneinander-Darstellung kannst du dann wie von mir vorgeschlagen durchführen.
                        "Mein Name ist Lohse, ich kaufe hier ein."

                        Kommentar

                        Lädt...
                        X