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

  • webba
    hat ein Thema erstellt Mysql und Tabellenaufbau.

    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";
    ?>

  • Chriz
    antwortet
    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.

    Einen Kommentar schreiben:


  • webba
    antwortet
    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.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    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.

    Einen Kommentar schreiben:


  • webba
    antwortet
    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.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Das hat nichts miteinander zu tun.

    Einen Kommentar schreiben:


  • webba
    antwortet
    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?

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    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.

    Einen Kommentar schreiben:


  • webba
    antwortet
    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.

    Einen Kommentar schreiben:


  • Asipak
    antwortet
    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.

    Einen Kommentar schreiben:


  • webba
    antwortet
    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.

    Einen Kommentar schreiben:


  • Chriz
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X