Templates mit WORD (ARGH!!!)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Templates mit WORD (ARGH!!!)

    Hi!

    Gleich zu Anfang: Ja, ich habe gesucht.

    Ich habe ein funktionierendes Template-System. Wow. Aber nun mein Problem: Ich möchte das Template als MS-Word Datei ausgeben. Das Template an sich wird auch schön dargestellt (mit Tabellen und allem) aber leider werden im Word dann die ersetzten Template-Variablen nicht dargestellt! Ich mache folgendes:

    Ich lese mein Templatefile (ganz normaler HTML-Code mit Platzhaltern die ersetzt werden) in eine Variable $html. Dann lese ich aus der Datenbank die Werte, mit denen die Platzhalter ersetzt werden sollen. Das erreiche ich mit:
    PHP-Code:
    $html=ereg_replace("{platzhalter}",$db_wert,$html); 
    Wenn alle Werte ersetzt sind, gebe ich einen header-Befehl aus:
    PHP-Code:
    header("Content-Type: application/msword"); 
    Dann gebe ich einfach mit
    PHP-Code:
    echo $html
    den Inhalt des veränderten Templates aus.

    Wie gesagt werden alle HTML-Tabellen und die "festen" Bestandteile des Templates als Word-File ausgegeben. Nur nicht die veränderten Werte der Platzhalter! Wenn ich den header-Befehl weglasse, werden alle Inhalte korrekt dargestellt und die Platzhalter werden korrekt ersetzt!! Also habe ich auch keinen Fehler beim Lesen aus der Datenbank!!

    Bitte helft mir, ich werde verrückt!!

    Danke im vorraus!

    Gruss

    Bernd
    mens agitat molem

  • #2
    Hast ein kleines Beispiel?
    Weil bei mir funzt das:
    PHP-Code:
    $html="hallo {platzhalter} hier bin ich.";
    $html=ereg_replace("{platzhalter}","Du Nuss",$html);
    header("Content-Type: application/msword");
    echo 
    $html
    Bei Dir auch?

    Kommentar


    • #3
      Hallo!

      Ja, bei mir geht das auch. Seltsam. Scheibar hat es was mit der Datenbankvariablen zu tun. Was ich aber nicht verstehe, weil das ohne den header einwandfrei funktioniert. Da schreibe ich z.B.
      PHP-Code:
      $html=ereg_replace("{o_plz}",$objekt[plz],$html); 
      wobei $objekt ein Array ist in dem die Datenbankinfos stehen.
      Ersetze ich das Array z.B. durch "irgendwas" dann zeigt mir das Word schön den Text "irgendwas" an. Das ist ja echt total bescheuert!

      Noch eine Idee?

      Gruss

      Bernd
      mens agitat molem

      Kommentar


      • #4
        vielleicht ist in den VARs irgendwas drin, was word als schlüsselwort auffasst.

        ist nur ne idee.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Daran hab ich auch schon gedacht. Aber wenn ich z.B.
          PHP-Code:
          $html=ereg_replace("{o_typart}",'$objekt[typart]',$html); 
          schreibe, dann gibt mir Word den Text $objekt[typart] aus. Ist klar, weil er den Text in '' nicht interpretiert...

          Ich hab's auch schon mit " " probiert aber da kommt dann wieder nix...

          Gruss

          Bernd
          mens agitat molem

          Kommentar


          • #6
            was ist hiermit?

            PHP-Code:

            $html
            =ereg_replace("{o_typart}","$objekt[typart]",$html);

            // oder

            $html=ereg_replace("{o_typart}",$objekt[typart],$html); 
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              PHP-Code:

              // oder

              $html=ereg_replace("{o_typart}",$objekt["typart"],$html); 
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                Hmpf. Geht alles nicht. Wenn ich aber z.B. schreibe:
                PHP-Code:
                $aus="lalalalalala"
                $html=ereg_replace("{o_typart}",$aus,$html); 
                dann wird schön lalalalala ausgegeben. Ich kapier's nicht. Warum wird der Inhalt des Arrays ohne den header ausgegeben und mit nicht?!?!?! ARGH! Das ist doch unlogisch! In der Variablen $html wird doch einfach nur alles ersetzt. Das müsste dem doch Scheissegal sein! Werden beim auslesen aus der DB irgendwelche Sonderzeichen mitgegeben? Ich hab's auch schon mit trim probiert und so... hilft auch nix.

                Gruss

                Bernd
                mens agitat molem

                Kommentar


                • #9
                  also damit gehts?
                  PHP-Code:
                  $aus="lalalalalala"
                  $html=ereg_replace("{o_typart}",$aus,$html); 
                  was ist dann wenn du das so machst?

                  PHP-Code:
                  $aus=$objekt[typart];
                  $html=ereg_replace("{o_typart}",$aus,$html); 
                  das ist mir auch schon mal aufgefallen, dass es einen fehler gab, oder es gar nicht ging, wie bei dir, wenn bestimmte VARs im code stehen. weiss auch nciht warum das so ist.
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    Nein, das funzt leider auch nicht. Hmpf. Ich hab's jetzt auch schon mit str_replace anstatt ereg_replace probiert aber das will er auch nicht. Es ist einfach zu heulen.

                    Danke auch für deine vielen Vorschläge!

                    Gruss

                    Bernd
                    mens agitat molem

                    Kommentar


                    • #11
                      Eine Idee: Ich setze ja den header mit dem header-Befehl in PHP. Kann ich das ganze nicht auch im HTML-Kopf setzen?
                      Also ich meine das
                      PHP-Code:
                      header("Content-Type: application/msword"); 
                      Das muss ich doch auch irgendwie am Anfang der HTML-Datei setzen können, oder? Wo kommt das hin? In den
                      PHP-Code:
                      <head
                      bereich?

                      Gruss

                      Bernd
                      mens agitat molem

                      Kommentar


                      • #12
                        ne. so das geht nicht...
                        html ist nun mal html.
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar


                        • #13
                          Ich hab nicht alles durchgelesen, soviel hab ich mitbekommen, mein SAmple funzt, aber wenn Du die Daten aus der DB liest funt es nicht.

                          Ist es möglich dass die Sonderzeichen der in der DB abgelegten Texte gequotet sind und deshalb die Ersetzung nicht funzt?
                          Vielleicht so irgendwie
                          \{o_typart\},
                          und dann ist natürlich Dein
                          $html=ereg_replace("{o_typart}",$aus,$html);
                          für'n Kanal

                          Kommentar


                          • #14
                            Versuch zum Test anstatt
                            header("Content-Type: application/msword");
                            mit
                            Header("Content-Type: application/vnd.ms-excel");

                            Kommentar


                            • #15
                              Ich habe den Fehler gefunden.

                              In meinem SQL-Statement vergleiche ich ein Tabellenfeld mit einer Session-Variable. Wenn ich den header-Befehl weglasse funktioniert das einwandfrei. Sobald ich den header aber auf Word setze bekomme ich keine Daten mehr. Kann es sein, dass der header-Befehl meine Session-Variablen löscht??? Wenn ich die Überprüfung mit der Session-Variable weglasse funktioniert's! Hat einer eine Ahnung wie ich das umgehen kann?

                              Danke!

                              Gruss

                              Bernd
                              mens agitat molem

                              Kommentar

                              Lädt...
                              X