Maik Pötschk: Datenbankabfrage "Datensatz nicht gefunden"

Hallo an alle,

zur Zeit beschäftige ich DB Abfrage in PHP und mySQL. Gerade versuche ich mein Problem zu lösen, um die Funktion zu realisieren, daß nicht gefundene Datensatz bei der Suche nach DB nach Abfrage eine Meldung "Datensatz nicht gefunden" bzw "Die Suche war erfolglos" stehen soll. Habe schon eine Funktion rein geschrieben, aber erscheint Fehler im Layout, weil diese Funktion abgeschlossen ist (nicht bis zur Ende von HTML).

So sieht die Funktion:

$num = mysql_num_rows($result) OR die ("Die Suche war erfolglos");

for ($i = 0; $i < $num; $i++) {
        $row = mysql_fetch_array($result);
        echo "$row[...], ";
}

Wo steht Fehler ? Wer kann diese Fehler beseitigen und lösen ?

Mit besten Dank vorraus.

Mfg Maik

  1. Hallo Maik!

    So sieht die Funktion:

    $num = mysql_num_rows($result) OR die ("Die Suche war erfolglos");

    for ($i = 0; $i < $num; $i++) {
            $row = mysql_fetch_array($result);
            echo "$row[...], ";
    }

    Wo steht Fehler ? Wer kann diese Fehler beseitigen und lösen ?

    Ich würde es so machen: (Ist aber keine Garantie, dass funktioniert da es nicht getestet wurde)

    if(!$result = mysql_query("SQL-Abfrage", $db))
    {
        echo "Keine Datensaätze gefunden";
    }
    else
    {
        for($i = 0; usw......)
        {
            usw.....
        }
    }

    Vielleicht funktionierts ja.
    CH

    1. Hallo CH,

      Layout ist vollständig in Ordnung, aber Text "Datensatz nicht gefunden" wird auf Seite nicht erschienen.

      So sieht deine Variante aus, die ich gemacht habe:

      if(!$result = mysql_query($sql, $conn))
      {
          echo "Keine Datensaätze gefunden";
      }
      else
      {
         $num = mysql_num_rows($result);

      for ($i = 0; $i < $num; $i++) {
              $row = mysql_fetch_array($result);
              echo "Name : $row[Name], Alter: $row[Alter], Adresse: $row[Adresse], <br>";
      }

      }

      Maik

    2. if(!$result = mysql_query("SQL-Abfrage", $db))

      Hallo,

      das wird nicht funktioniern, da diese If abfrage nur dann TRUE liefert wenn der QUERY NICHT erfolgreich war, ACHTUNG: Ein query kann auch erfolgreich sein wenn NICHTS zurückgeliefert wurde!!!!!

      du mußt mit zb. mysql_num_rows abfragen ob er einen wert höher 0 hat. wenn nicht "Keine Datensätze gefunden";

      lg
      Ludwig

      1. Hallo Ludwig,

        du mußt mit zb. mysql_num_rows abfragen ob er einen wert höher 0 hat. wenn nicht "Keine Datensätze gefunden";

        Habe ich schon gemacht.

        Siehe:

        $num = mysql_num_rows($result) OR die ( "Keine Datensätze gefunden" );

        for ($i = 0; $i < $num; $i++) {
                $row = mysql_fetch_array($result);
        }

        Und dies ist richtig, die nach der Abfrage "Keine Datensätze gefunden" erschienen wurde, aber Layout Fehler (abgeschlossen, da kein HTML Ende angezeigt wurde).

        Genauer: "Keine Datensätze gefunden", dann Abschluß auf HTML Seite, so unter Quelltext

        Wenn ich diese Funktion weglasse, dann alles korrekt mit Layout.

        Maik

        1. Hi Maik,

          $num = mysql_num_rows($result) OR echo "Keine Datensätze gefunden";
                                            ^^^^

          die(); terminiert das Script, und ist eher was für Fehler die "eigentlich nicht" auftreten können.

          Die Schreibweise  mit dem ... OR die("na denn nicht"); wird in _Beispiel_programmen gerne gewählt,
          weil sie so schon kurz ist und sich nett liest. Warum sie funktioniert ist allerdings lange nicht so
          offensichtlich wie es aussieht.
          (Stichworte: 'short evaluation'  'Reihenfolge der Bewertung von Ausdrücken'  'Seiteneffekte'  'Operatorvorrang' )

          Sauber programmiert sieht das dann so aus:

          $num = mysql_num_rows($result);

          if( $num==0 )
              echo "Keine Datensätze gefunden";

          und das ist wohl auch das, was Ludwig meinte.

          Gruss,
          Carsten