ajtak: Listenfeld füllen

Schönen Nachmittag,
ich habe ein kleines Formular mit einem Listenfeld, welches Daten aus einer MySQL-Datenbank bzw. -tabelle anzeigen soll. Leider wird immer nur der 1. Datensatz angezeigt und nicht alle.
Wo liegt mein Fehler?

<?php
error_reporting(E_ALL);
$db_link = @mysql_connect("...","...","");
mysql_select_db("datenbank");
$sql = "SELECT PatID FROM tabelle ORDER
BY id DESC";
$ausgabe=mysql_query($sql);
$tabelle = mysql_fetch_object ($ausgabe)
?>

<select name="liste">
<?php
   while ($row = mysql_fetch_object($ausgabe)){
      echo '<option value="'.$row->ID.'">'.$row->PatID.'</option>';
   }
?>
</select>

Hoffe, das ist einigermaßen verständlich?
Wenn jemand helfen kann-DANKE!

Gruß,
ajtak

  1. Mahlzeit ajtak,

    Wo liegt mein Fehler?

    Ich behaupte mal: im unsauberen Code.

    error_reporting(E_ALL);
    $db_link = @mysql_connect("...","...","");

    Warum unterdrückst Du hier Fehlermeldungen?

    mysql_select_db("datenbank");

    Warum verlässt Du Dich hier darauf, dass die Verbindung geklappt hat?

    $sql = "SELECT PatID FROM tabelle ORDER
    BY id DESC";
    $ausgabe=mysql_query($sql);

    Warum verlässt Du Dich hier darauf, dass das Auswählen der Datenbank geklappt hat?

    $tabelle = mysql_fetch_object ($ausgabe)

    Warum verlässt Du Dich hier darauf, dass die Abfrage geklappt hat?

    Warum fehlt das Semikolon?

    Warum kopierst Du erst ein Objekt in die Variable $tabelle - machst dann aber nichts damit? Brauchst Du den ersten Datensatz nicht?

    <select name="liste">
    <?php
       while ($row = mysql_fetch_object($ausgabe)){

    Wie Du oben in Deinem eigenen Code sehen kannst, fehlt an dieser Stelle bereits der erste Datensatz ...

    echo '<option value="'.$row->ID.'">'.$row->PatID.'</option>';

    Warum greifst Du hier auf die Eigenschaft namens "ID" zu, die das Objekt eigentlich gar nicht haben kann (da Du die entsprechende Spalte nicht abgefragt hast)?

    }
    ?>
    </select>

    Hoffe, das ist einigermaßen verständlich?

    Jein. Du solltest zunächst Deinen Code bereinigen, dann eine vernünftige Fehlerbehandlung einbauen und zum Schluss *GENAU* überprüfen, *WELCHER* Datensatz denn nun eigentlich angeblich angezeigt wird ... irgendwie kann das, was Du programmiert hast, nämlich eigentlich überhaupt gar nicht funktionieren.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Hi!

      Warum fehlt das Semikolon?

      Die letzte Anweisung vor dem ?> benötigt kein abschließendes Semikolon. Es fehlt also nicht. Dass es sinnvoll ist, auch hier eins zu setzen, um beim Erweitern nach dieser Anweisung nicht darauf achten zu müssen, steht auf einem anderen Blatt.

      Lo!

      1. Mahlzeit dedlfix,

        Warum fehlt das Semikolon?

        Die letzte Anweisung vor dem ?> benötigt kein abschließendes Semikolon. Es fehlt also nicht. Dass es sinnvoll ist, auch hier eins zu setzen, um beim Erweitern nach dieser Anweisung nicht darauf achten zu müssen, steht auf einem anderen Blatt.

        Dass meinte ich. Wenn der Parser nicht so schlampig wäre, hätte er ajtak ja auch bereits einen Syntax-Fehler um die Ohren gehauen. Ich persönlich finde aber, dass man es sich gleich von Anfang an angewöhnen sollte, in den Sprachen, in denen Anweisungen durch ein bestimmtes Zeichen abgeschlossen werden, dies auch *IMMER* und *ÜBERALL* zu tun ... einerseits wegen der von Dir angesprochenen einfacheren Erweiterbarkeit, andererseits aber auch, damit man sich keinen schlampigen Programmierstil angewöhnt.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|