[PHP5] PHP Mysql Datensatz in Tabelle mit Key als Überschrift und dann Daten (Value)

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

  • [PHP5] PHP Mysql Datensatz in Tabelle mit Key als Überschrift und dann Daten (Value)

    Hi,
    Ich möchte gerne meine Daten aus der Mysql Datenbank auslesen und dann in Form einer Tabelle (keys als Überschrift) ausgeben.

    Bsp.:

    ID | Name | ETC
    1 | Fritz | ...
    2 | Paul | ...

    Hier mein Ansatz:

    PHP-Code:
    @require "mysql/config.php";

    $i=0;    
    $sql="SELECT * FROM eat";
    $erg=mysql_query($sql);
    $num_rows mysql_num_rows($erg); 

    echo
    "<table>";

    while(
    $row mysql_fetch_assoc($erg))
    {
      echo
    "<tr>";
      foreach(
    $row as $key => $value)
      {       
        if(
    $i==0)  
        { 
          echo
    "<td>"
          echo 
    $key;       
          echo
    "</td>";
        }
        else
        {
          echo
    "<td>"
          echo 
    $value;
          echo
    "</td>"
        }
                
      } 
      echo
    "</tr>";
      
    $i++;
    }
    echo
    "</table>"
    Problem bei meinem Ansatz ist, dass der erste Datensatz wegfällt.
    Wie kann ich das am Besten umgehen?

    MfG
    benny06

  • #2
    Re: [PHP5] PHP Mysql Datensatz in Tabelle mit Key als Überschrift und dann Daten (Value)

    Original geschrieben von benny06
    Problem bei meinem Ansatz ist, dass der erste Datensatz wegfällt.
    Er fällt nicht weg - du gibst ihn lediglich nicht aus.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Ich würde die Schleife in der Schleife unter allen Umständen versuchen zu vermeiden.

      Deshalb würde ich vermutlihc bereits vor die Schleife ein $row = mysql_fetch_assoc setzen und das dann per foreach durchlaufen lassen und die Keys ausgeben.

      Dann hat man 2 Möglichkeiten:

      1.) Man speichert die Values schon in einen String rein und hängt den später an, also quasi:

      PHP-Code:
      $str_string '';
      foreach (
      $row as $key => $val)
      {
      echo 
      '<td>'.$key.'</td>';
      $str_string .= '<td>'.$val.'</td>';


      Ne andere Alternative - insbesondere wenn du mit den Daten nochwas machen möchtest - wäre die Resource nach der foreach per mysql_data_seek auf Zeile 0 (= Anfang) zurückzusetzen und dann ganz normal die While-Schleife zu durchlaufen...
      Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
      var_dump(), print_r(), debug_backtrace und echo.
      Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
      Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
      Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

      Kommentar


      • #4
        wahsaga

        quote:Original geschrieben von benny06
        Problem bei meinem Ansatz ist, dass der erste Datensatz wegfällt.


        Er fällt nicht weg - du gibst ihn lediglich nicht aus.
        Hast recht! Aber, wenn ich ihn mit ausgeben würde, sähe das so aus:

        ID 1| Name Fritz| ETC ...
        2 | Paul | ...
        3 | Muh | ...

        Und so soll es aussehen:

        ID | Name | ETC ...
        1 | Fritz | ...
        2 | Paul | ...
        3 | Muh | ...

        Shurakai
        1.) Man speichert die Values schon in einen String rein und hängt den später an, also quasi:

        PHP:
        $str_string = '';
        foreach ($row as $key => $val)
        {
        echo '<td>'.$key.'</td>';
        $str_string .= '<td>'.$val.'</td>';
        }
        Funktioniert das so ohne While überhaupt?

        zu der zweiten Möglichkeit: Dann könnt ichs ja auch in einem PHP Array speichern oder? Wäre doch besser oder nicht? Wie müsst ich das dann machen?

        Kommentar


        • #5
          Du willst also, sofern du gerade erst beim ersten von mysql_fetch_assoc gelieferten Array bist, zunächst dessen Keys ausgeben, und anschließend dessen Values. Bei allen folgenden möchtest du nur die Values ausgeben.

          Gut, dann mach das doch.

          Code:
          while(...) {
             if(erster datensatz) {
                // gebe alle Keys in einer Schleife aus
             }
             // gebe alle Values in einer Schleife aus
          }
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            megathx an wahsaga, so gehts
            Da hätte ich auch selber drauf kommen können.^^
            Aber manchmal seh ich den Wald vor lauter Bäumen nicht

            thx auch an Shurakai

            Hier nochmal der Code, so wie ich ihn jetzt verbaut habe:
            PHP-Code:
            @require "mysql/config.php";

            $i=0;    
            $sql="SELECT * FROM eat";
            $erg=mysql_query($sql);

            echo
            "<table>";
            while(
            $row=mysql_fetch_assoc($erg))
            {    
              if(
            $i==0)
              {
                echo
            "<tr>";
                foreach (
            $row as $key => $val)
                {
                  echo
            "<td>".$key."</td>";
                }
                echo
            "</tr>";
              }
                echo
            "<tr>";
                foreach (
            $row as $key => $val)
                {
                  echo
            "<td>".$val."</td>";
                }
                echo
            "</tr>";
              
            $i++;
            }  
            echo
            "</table>"

            Kommentar

            Lädt...
            X