Kermit: Problem bei Datenbank Export nach Excel

Hallo,
habe durch ein Link hier ein nettes Script für den Export einer Datenbankabfrage nach Excel bekommen und das funktioniert auch wunderbar - bis auf einen kleinen Punkt: wenn in einer Tabellenzelle in der Datenbank ein Zeilenumbruch oder Absatz drin ist, wird mir die Export Tabelle "zerhauen" sprich obwohl Info zu einem Datensatz gehört springt es in die nächste Zeile...
Wäre klasse wenn mir hier jemand helfen könnte, wie ich den Code umschreiben muß, damit auch Zeilenumbrüche bzw. Absatzmarken beim Export richtig akzeptiert und dargestellt werden.

Zur Info Arbeite mit MysQL 4 und PHP

Hier das Script im Original:

Header("Content-Type: application/vnd.ms-excel");

$db_link = mysql_connect($host, $user, $password);
mysql_select_db($database, $db_link);

$result = mysql_query($query_text, $db_link);
$fieldcounts = mysql_num_fields($result);
for($i = 0; $i < $fieldcounts; $i++) {
$fieldtype = mysql_fetch_field($result, $i);
if ($i < ($fieldcounts-1)) echo "$fieldtype->name [$fieldtype->type]\t";
else echo "$fieldtype->name [$fieldtype->type]\n";
}
$myrow = mysql_fetch_array($result);
do {
for($i = 0; $i < $fieldcounts; $i++) {
$fieldname = mysql_field_name($result, $i);
if ($i < ($fieldcounts-1)) echo $myrow[$fieldname] . "\t";
else echo $myrow[$fieldname] . "\n";
}
} while ($myrow = mysql_fetch_array($result));

Danke für jede Hilfe,
Kermit

  1. echo $begrüßung;

    Wäre klasse wenn mir hier jemand helfen könnte, wie ich den Code umschreiben muß, damit auch Zeilenumbrüche bzw. Absatzmarken beim Export richtig akzeptiert und dargestellt werden.

    In welcher Form müssen denn Zeilenumbrüche notiert werden, damit sie Excel nicht als Datensatz-Ende erkennt?
    Das Ersetzen eines Zeichens/Teilstrings in einem String durch ein anderes Zeichen/Teilstring solltest du mit einer Stringfunktion selbst hinbekommen. Welche dafür in Frage kommt findest du auch ganz schnell heraus, wenn du dir die Übersicht ansiehst.

    echo "$verabschiedung $name";

    1. Hallo,

      In welcher Form müssen denn Zeilenumbrüche notiert werden, damit sie Excel nicht als Datensatz-Ende erkennt?

      Tja, da fängt es schon an - keine Ahnung...

      Das Ersetzen eines Zeichens/Teilstrings in einem String durch ein anderes Zeichen/Teilstring solltest du mit einer Stringfunktion selbst hinbekommen. Welche dafür in Frage kommt findest du auch ganz schnell heraus, wenn du dir die Übersicht ansiehst.

      Und da geht es weiter....

      Das Problem ist auch schon auf einer ganz anderen Ebene, wie ich jetzt festgestellt habe:

      Habe mir die Tabelleninhalte nochmal angeschaut und sehe ehrlich gesagt die Umbrüche nicht (steht also kein <br> oder ähnliches in der Tabelle) - wenn ich den Tabelleninhalt auf der Website ausgebe z.B. innerhalb von <p></p> oder <td></td> wird mir der Text ganz normal also ohne Umbruch ausgegeben.
      Wenn ich den Text allerdings innerhalb eines Formulars in eine Textarea ausgebe sind die Zeilenumbrüche drin???

      Wenn ich mir den Text über Phpmyadmin anschaue (nach select) zeigt er mir in der Übersicht den ganzen Text normal an - wenn ich auf Datensatz bearbeiten gehe wird der Text an der Stelle abgeschnitten, an der anscheinend der Umbruch steht?

      Kann mich auch nicht erinnern, einen Umbruch eingefügt zu haben (das muß wohl über einen Importfehler passiert sein, da sehr umfangreiche Tabellen teilweise direkt importiert wurden - und zwar über den FabForce Dataimporter).

      Kapiere gar nichts mehr?
      Woran kann sowas liegen???

      Grüße,
      Kermit

      1. echo $begrüßung;

        In welcher Form müssen denn Zeilenumbrüche notiert werden, damit sie Excel nicht als Datensatz-Ende erkennt?

        Tja, da fängt es schon an - keine Ahnung...

        Das zu wissen ist erstmal die Grundvoraussetzung, um das Problem zu lösen.

        Habe mir die Tabelleninhalte nochmal angeschaut und sehe ehrlich gesagt die Umbrüche nicht (steht also kein <br> oder ähnliches in der Tabelle) -

        Das ist ja auch richtig so, dass in der Tabelle keine ausgabemediumrelevanten Formatierungen drin stehen sondern reine Daten. So kann man sie an das jeweils gewünschte Ausgabeformat anpassen, ohne sie erst (und eventuell nicht verlustfrei) aus einem anderen Ausgabeformat zurückzuwandeln.

        wenn ich den Tabelleninhalt auf der Website ausgebe z.B. innerhalb von <p></p> oder <td></td> wird mir der Text ganz normal also ohne Umbruch ausgegeben.
        Wenn ich den Text allerdings innerhalb eines Formulars in eine Textarea ausgebe sind die Zeilenumbrüche drin???

        Vermutlich siehst du sie auch, wenn du dir den Quelltext der ausgegebenen Seite ansiehst oder die Texte aus der Datenbank präformatiert anzeigen lässt (<pre>).
        Es ist bei HTML so üblich, dass sämtliche Whitespace-Zeichen, wozu auch Zeilenumbrüche und Tabulatoren zählen, als normales Leerzeichen ausgegeben werden.

        echo "$verabschiedung $name";

        1. Vermutlich siehst du sie auch, wenn du dir den Quelltext der ausgegebenen Seite ansiehst oder die Texte aus der Datenbank präformatiert anzeigen lässt (<pre>).
          Es ist bei HTML so üblich, dass sämtliche Whitespace-Zeichen, wozu auch Zeilenumbrüche und Tabulatoren zählen, als normales Leerzeichen ausgegeben werden.

          Hallo,
          nein im Quelltext ist nichts zu sehen....und bei der Ausgabe mit <pre> auch nicht - außer daß der Text wie in der Textarea mit Zeilenumbruch dargestellt wird....
          Grüße,
          Kermit