Marco: 1 Eintrag aus Tabellen wird nicht angezeigt

Morgen liebes Forum,

ich möchte eine Tabelle mit php ausgeben. Diese Tabelle liegt in einer MySQL Datenbank. Funktioniert auch alles toll, nur dass der 1. Datensatz nie Ausgegeben wird. Ich weiß nicht warum. Obwohl die Ausgabe stimmt "es wurden 9 Datenätze gefunden" zeigt er mir immer nur 8 an. Also den ersten lässt er immer weg. Woran könnte das den liegen?
Die Tabelle ist einfach aufgebaut. Eine Spalte mit id und eine mit Kategorien. Wobei ich mir die id nicht anzeigen lasse.

Gruß, Marco

  1. Moin!
    wie sieht denn der quellcode deiner abfrage aus? das könnte helfen.
    tschüss ichen

    --
    Selfcode: sh:( fo:| br: n4:& ie:% mo:| mo:| de:] zu:) fl:| ss:| ls:[ js:|
    1. wie sieht denn der quellcode deiner abfrage aus? das könnte helfen.

      kleiner Auszug:

      $sql="Select kategorien from db1 order by id";
      $result=my_sql_query($sql,$conn);
      if ($result){
      $number = mysql_num_rows($result);
      echo"es sind $number Datensätze....";
      echo"<table>
      $row=mysql_fetch_array($result, MYSQL_ASSOC);
      while ($field=key($row)){
      echo "<th>" .ucword($field) . "</th>;
      }
      .
      .
      .
      echo implode ("<td>",%row);
      echo"</td></tr>";
      while (row=mysql_fetch_array($result, MYSQL_ASSOC)){
      echo implode("<td>",$row);
      .
      .
      .

      1. Moin!

        echo"<table>
        $row=mysql_fetch_array($result, MYSQL_ASSOC);

        Hier liest du den ersten Datensatz aus...

        while ($field=key($row)){
        echo "<th>" .ucword($field) . "</th>;
        }

        und erzeugst wunderbare Header für die Tabelle....

        while (row=mysql_fetch_array($result, MYSQL_ASSOC)){

        Und hier liest du ab dem zweiten Datensatz den Rest aus

        echo implode("<td>",$row);

        gibst ihn aus und wunderst dich, wo der erste Datensatz geblieben ist.

        - Sven Rautenberg

        1. Hi!

          Für die Generierung des Headers kannst Du mal folgendes probieren:

          $i = 0;
          while ($i < mysql_num_fields($result)) {
            $meta = mysql_fetch_field($result, $i);
            if ($meta) {
              $name = $meta->name;
            } else {
              $name = "&nbsp";
            }
            echo "<th>" . $name . "</th>;
            $i++
          }

          Ich bin mir nicht sicher, obs ein while($meta = mysql_fetch_field($result)) {...} auch tun würde...

          Oder nach der Ausgabe des Headers ein mysql_data_seek($result, 0).

          GhoulLord

        2. Moin!

          echo"<table>
          $row=mysql_fetch_array($result, MYSQL_ASSOC);

          Hier liest du den ersten Datensatz aus...

          while ($field=key($row)){
          echo "<th>" .ucword($field) . "</th>;
          }

          und erzeugst wunderbare Header für die Tabelle....

          while (row=mysql_fetch_array($result, MYSQL_ASSOC)){

          Und hier liest du ab dem zweiten Datensatz den Rest aus

          echo implode("<td>",$row);

          gibst ihn aus und wunderst dich, wo der erste Datensatz geblieben ist.

          Oh stimmt . Danke für die Hilfe!

      2. while (row=mysql_fetch_array($result, MYSQL_ASSOC)){

        muss es nicht $row=... heissen (oder sogar == ?)

        1. hi,

          while (row=mysql_fetch_array($result, MYSQL_ASSOC)){

          muss es nicht $row=... heissen

          ja.

          (oder sogar == ?)

          nein.

          du willst an dieser stelle ja nicht vergleichen, sondern eine zuweisung vornehmen.

          gruß,
          wahsaga

          --
          I'll try being nicer if you'll try being smarter.
  2. wie liest/gibst Du die Tabelle denn aus? Vielleicht ein Zählschleifen Fehler?