Formatierung der Ausgabe einer Datenbankabfrage ändern

  • Frage an die php Experten.

    Folgendes Script gibt mir die abgefragten Daten aus Zeile 1 in einer Zeile pro Datensatz raus. Es werden mehrer Datensätze abgefragt.
    Ich möchte aber die Formatierung wie folgt:

    Name, Vorname
    Strasse Hnr
    PLZ Ort
    Geburtsdatum

    Name, Vorname
    Strasse Hnr
    PLZ Ort
    Geburtsdatum


    Das Script :

    edit, bevor jemand in Versuchung kommt

    Frei nach Dieter Nuhr
    Das Internet ist zum Lebensraum der Dauerbeleidigten geworden, die immer einen Grund finden, anderen irgendetwas vorzuwerfen, um sich selbst moralisch zu erhöhen.

  • Wenn Du da andere Ausgaben haben willst, dann musst Du die auch entsprechen vorgeben.
    Also so was in der Art

    Code
    echo $row[0].', '.$row[1].'<br />';
    echo $row[2].' '.$row[3].'<br />';
    echo $row[4].' '.$row[5].'<br />';
    echo $row[6];

    mysql_fetch_row liefert Dir ein nummerisches Array. Die Reihenfolge ist die gleiche wie die Reihenfolge der selektierten Spalten. Und diese entspricht Deinem $feld_array. Das Array beginnt bei 0, nicht bei 1!

    Name ist also Position 0
    Vorname Pos 1
    und Geburtsdatum Pos 6

    Damit kannst Du dann die Ausgabe zusammenbauen wir Du magst. Ist halt HTML und hat mit der Datenbank so nichts mehr zu tun.

    Wobei ich aber nun nicht verstehe, wo Du die DB-Abfrage, also das $row überhaupt verwendest?

    Du hast da die Zeile
    $row = mysql_fetch_row($result) or die(mysql_error());

    darunter dann ein
    echo $row->email.";<br>";

    Wie gesagt, mysql_fetch_row liefert ein nummerisches Array. Du greifst aber auf ein Objekt $row->email zu. Das gibt es nur, wenn Du auch ein Objekt ausliefern lässt, etwa mit mysql_fetch_object()

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • danke erst einmal, werde ich mich dran versuchen.

    Zu deiner Frage, die Ausfgbe erfolgt wahlweise als per mail oder per csv download.

    edit sehe gerade oben der code (von mir)war auch nicht korrekt :fluch:,

    Frei nach Dieter Nuhr
    Das Internet ist zum Lebensraum der Dauerbeleidigten geworden, die immer einen Grund finden, anderen irgendetwas vorzuwerfen, um sich selbst moralisch zu erhöhen.

  • Das war keine Frage, sondern eher eine Feststellung. Deine SQL-Abfrage schaut ja so aus, wenn man das ".$feld_array_string." mal mit den entsprechenden Werten ersetzt:

    Du hast da also ein $row, das die Inhalte von mysql_fetch_row bekommt. Danach kannst Du nicht mit $row->email auf die Email zugreifen, da
    a) Email gar nicht im SELECT angegeben war, sondern nur name,vorname,strasse,nr,plz,ort,geburt
    b) $row hier ein Array ist, kein Objekt. Die Werte von $row liegen hier in $row[0] bis $row[6]

    Unten bei der anderen Abfrage

    Zitat

    $querystring="SELECT email FROM `tabelle` WHERE auftragsnummer='".trim($auftragsnummer)."'";
    $result = mysql_query($querystring);
    $row = mysql_fetch_object($result) or die(mysql_error());
    echo $row->email.";";


    stimmt es. Hier nimmst Du auch mysql_fetch_object und selektierst "email" im Select. Somit stimmt hier auch $row->email

    Wenn ein Mensch nicht um dich kämpft, hat er nur gewartet, dass du gehst. ;(

  • Ahh perfekt, so habe ich es gelöst, danke Dir. Hätte auch dazu schreiben sollen, dass es in eine Textdatei eingefügt werden soll und nicht als html ausgegeben werden soll. Aber mir hat irgendwie der Denkansatz gefehlt, das ist bei rausgekommen:

    echo $row[0].', '.$row[1].' ';echo("\r\n");
    echo $row[2].' '.$row[3]. ' ';echo("\r\n");
    echo $row[4].' '.$row[5]. ' ';echo("\r\n");
    echo $row[6];' ';echo("\r\n");
    ' ';echo("\r\n");

    Frei nach Dieter Nuhr
    Das Internet ist zum Lebensraum der Dauerbeleidigten geworden, die immer einen Grund finden, anderen irgendetwas vorzuwerfen, um sich selbst moralisch zu erhöhen.