Jan Kirchmeyer: SQL-Ergebnisse in vorgefertigte Tabelle eintragen lassen

hallo,

bei mir dreht sichs um folgendes:
ich habe in PHP mittels SQL eine Abfrage an die Datenbank
gestellt (siehe Skript).
Die Ergebnisse sind auch richtig und es hat alles geklappt.
Nur ist mein Problem, dass es die einzelnen Ergebnisse alle
einfach hintereinander schreibt (also Namen, Fläche, Preis usw).
In der Scheife steht, dass er jedes Teilergebnis (also Namen, Fläche, Preis usw) in eine extra
Spalte schreiben soll - das klappt ja auch.
Aber es muss doch auch irgendwie möglich sein, die Einzelergebnisse
in eine vorgefertigte HTML-Tabelle zu schreiben.
Bsp.: der Name soll in der ersten Spalte einer Tabelle stehen und der Grundstückspreis soll aber erst in der 3. Spalte eingetragen werden, weil dazwischen in der 2. Spalte z.Bsp. eine graphik plaziert ist.

<?php
$ergebnis = mysql_query("SELECT A2_NAME,A4_FLAE,A4_BGF,A5_PREIS,A5_MIETE FROM haupt WHERE A1_GEMNR='$ortsname_zahl' AND A1_NR='$angebot_nr'");

while ($treffer = mysql_fetch_row($ergebnis))
{
  foreach ($treffer as $feld_ergebnis)
  if ($feld_ergebnis !="")
    echo  "<td align='center'> $feld_ergebnis </td>";
  else
    echo "Es wurden leider keine passenden Einträge gefunden";
}
?>

mein zeites problem ist, dass er die Zeile "Es wurden keine...." nicht
anzeigt, wenn keine angebote gefunden worden.
Die Seite bleibt dann einfach leer und es kommt nicht mal der Hinweis!

vielen dank im voraus...gruß jan

  1. mein zeites problem ist, dass er die Zeile "Es wurden keine...." nicht
    anzeigt, wenn keine angebote gefunden worden.
    Die Seite bleibt dann einfach leer und es kommt nicht mal der Hinweis!

    Hi,

    foreach ($treffer as $feld_ergebnis)
      if ($feld_ergebnis !="")
        echo  "<td align='center'> $feld_ergebnis </td>";
      else
        echo "Es wurden leider keine passenden Einträge gefunden";

    lt. meinem Verständnis von Schleifen... kommt er da nie hin, wo er das schreiben soll, weil wenn es keine Ergebnisse gibt, wird die Schleife auch 0-mal durchgeführt und damit die IF-Abfrage 0-mal.

    Du solltest so ein IF evt. vor oder um die Schleife herum bauen.

    HTH, Frank

    1. Hi.
      I sehe da vielleicht noch ein Problem.
      Ich gehe davon aus Du befindest dich in dieser Stelle schon in der Tabelle.
      <table><tr>

      foreach ($treffer as $feld_ergebnis)
        if ($feld_ergebnis !="")
          echo  "<td align='center'> $feld_ergebnis </td>";
        else
          echo "Es wurden leider keine passenden EintrÃge gefunden";

      </tr></table>

      wenn Du hier text ohne <td... ausgibt landet der (n)irgendwo?!
      bydey

    2. danke fÃr deinen tip,
      ich habs jetzt wie folgt gemacht u es hat geklappt:

      <?php
      $ergebnis = mysql_query("SELECT A2_NAME,A4_FLAE,A4_BGF,A5_PREIS,A5_MIETE FROM haupt WHERE A1_GEMNR='$ortsname_zahl' AND A1_NR='$angebot_nr'");

      $anzahl=mysql_num_rows($ergebnis);
      if ($anzahl == 0)
       echo ("Es wurden leider keine EintrÃge gefunden!");
      else
       while ($treffer = mysql_fetch_row($ergebnis))
       {
       foreach ($treffer as $feld_ergebnis)
       if ($feld_ergebnis !="")
        echo  "<td align='center'> $feld_ergebnis </td>";
      }
      ?>

      ich hab ihn also die anzahl der ergebnisse zÃhlen lassen. und wenn
      die anzahl gleich 0 ist, soll er den hinweis bringen....jan

  2. Hi,

    du willst die Sprache also um einen halben Grad upgraden. ;-))
    Aus 3rd Generation mache 3 1/2 oder so. Na hier haben wir ja schon 3 1/2, dam machen wir eben jetzt mal 3,8Generation draus...

    Schreib Dir eine Wiedergabefunktion (print_elements)
    Kopier die das Resultset in ein Array
    und geh dann durch das Array mit Array_Walk durch.

    Die zu benutzende Wiedergabefunktion kannst Du auch vorher abhÃngig von der abgefragten Tabelle festlegen, da sie in array_walk als String angegeben werden muss. D.H, du kannst hier ploymorph arbeiten. Das ist implizite OOP.

    GrÃÃe

    Tom