Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage bezüglich Herangehensweise einer Briefschreibfunktion

Einklappen

Neue Werbung 2019

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

  • Frage bezüglich Herangehensweise einer Briefschreibfunktion

    Hallo ihr Lieben,
    ich möchte gerne so eine Art Briefvorlagenfunktion erstellen.
    Dafür kann der Benutzer so wie hier im Forum einen Brief erstellen, das alles formatieren....
    Is ja auch kein Problem mit tinymce.
    Allerdings soll das ja eine Vorlage werden, die dann mit x-beliebigen Daten aus der Datenbank automatisch gefüllt werden soll.
    Hab mir nun gedacht, dass ich eigene tags zum einfügen zur Verfügung stelle, also so in die Richtung [[adressen;name]]
    fügt also jemand das ein, weiß ich ja, dass ich in der datenbank die tabelle adressen und das feld name durchsuchen muss.
    Nur wie kann ich diese Tags nun rausfinden und die benötigten abfragen machen?

    Hier mal ein Beispiel:
    Code:
    Hallo  [[adressen;name]],
    ich wohne in  [[adressen;ort]] und bin  [[adressen;alter]] Jahre alt.
    Ich bin am  [[adressen;geburtsdatum]] geboren.
    Tja, da ich ja nicht weiß wieviele und welche Tags gesetzt wurden, weiß ich jetzt nicht so genau, wie ich das ganze angehen soll, also erstens rausfinde, wieviele und welche Tags gesetzt wurden und wie ich dann dementsprechend die Abfragen dazu ausführe.
    Vielleicht hat da jemand einen Denkansatz für mich.

  • #2
    Hallo,

    mit preg_match_all kannst du Strings nach einem regulären Ausdruck durchsuchen, der bei dir dann wohl nach den Zeichen Strings zwischen "[(" und ")]" suchen würde. Als Verfeinerung des RegEx könntest du dann noch angeben, dass der String zwischen dem Start- und End-Ausdruck einen ";" enthalten muss.

    Zurück bekommst du ein Array über das du dann iterierst und eben die entsprechenden Stellen im Text damit ersetzt.

    Hier die API dazu:

    http://php.net/manual/de/function.preg-match-all.php

    Grüße,

    Dirk

    Kommentar


    • #3
      danke für die Hilfe, aber irgendwie check ich diese Funktion nicht so ganz.
      Hab nun mal folgendes probiert, das klappt aber überhaupt nicht.
      PHP-Code:
      $test="Hallo  [[adressen;name]], ich wohne in  [[adressen;ort]] und bin  [[adressen;alter]] Jahre alt. Ich bin am  [[adressen;geburtsdatum]] geboren.";
      preg_match_all("[[;]]",$test$ausgabe);
      echo 
      $ausgabe[0]; 

      Kommentar


      • #4
        Mach doch simple Stringersetzung für alle bekannten Variablen.
        Was nicht im Text vorhanden ist, wird auch nicht ersetzt - es muss aber versucht werden.

        das klappt aber überhaupt nicht.
        Das ist keine sinnvolle Problembeschreibung.

        Kommentar


        • #5
          sorry:
          Sinnvolle Problembeschreibung=echo $ausgabe[0] liefert nichts zurück

          An die simple stringersetzung hatte ich auch schon gedacht nur wäre das alles in einem Array einfacher zu handhaben, da es am Schluss rund 100 oder mehr Tags(Möglichkeiten zum Einfügen) geben wird und wenn ich da jeden einzeln durchsuchen muss wird das ne mühsame Geschichte. Ein Array könnte ich in einer schleife durchlaufen.

          Kommentar


          • #6
            Zitat von djsky01 Beitrag anzeigen
            danke für die Hilfe, aber irgendwie check ich diese Funktion nicht so ganz.
            Schon mal mit Handbuchlesen probiert?
            http://www.php.net/manual/de/referen...ern.syntax.php
            Hab nun mal folgendes probiert, das klappt aber überhaupt nicht.
            Das klappt nicht, weil es falsch ist.
            http://www.php.net/manual/de/regexp.reference.meta.php

            Kommentar


            • #7
              Es wird sich ja pro Brief nicht um tausende Tags handeln, oder?! Insofern dürfte es nicht allzu sehr ins Gewicht fallen, wenn Du halt alle möglichen Tags durchgehst. Ungefähr so. Ist kein fertiges Skript. Ein bischen ergänzen musst Du da noch.
              PHP-Code:
              //Ein Array, das die Beziehung von Feldnamen und Tags beschreibt
              $felder_und_tags = array();
              $felder_und_tags['ort'] = '[[adressen;ort]]';
              $felder_und_tags['geb_dat'] = '[[adressen;geburtsdatum]]';
              //usw.
              /*Eine Datenbankabfrage, die alle relevanten Felder zurückliefert für einen Brief
              Verbindungsaufbau, Abfrage, Datensatz auslesen: mußt Du selbst schreiben, wie es bei Dir passt
              hier mal beispielhaft nur folgendes */
              $datensatz mysql_fetch_assoc($abfrageergebnis);
              //Der Brieftext hier mal undynamisch vorgegeben
              $brief_text 'Hallo  [[adressen;name]],
              ich wohne in  [[adressen;ort]] und bin  [[adressen;alter]] Jahre alt.
              Ich bin am  [[adressen;geburtsdatum]] geboren.
              '
              ;
              foreach (
              $felder_und_tags as $db_feldname => $tag) {
                  
              $brief_text str_replace($tag,$datensatz($db_feldname),$brief_text);
              }
              echo 
              $brief_text

              Kommentar


              • #8
                @drsoong:
                Danke schön, dass is ja schon mal ein Ansatz.
                1000e werdens sicher nicht, aber es können schon so an die 100-150 werden.
                Deshalb frag ich da lieber vorher nach, bevor ich mich da in was verstricke.
                wird auf jeden Fall eine Herausforderung werden das ganze, da ja noch dazu kommt, dass es sich um rund 10 Tabellen handelt, aus denen der Benutzer auswählen und Daten einsetzen kann. Das werd ich aber hoffentlich hin bekommen.

                Kommentar


                • #9
                  Und was, wenn ein Benutzer so böse ist und sich zum Beispiel mit dem Namen "[[adressen;geburtsdatum]]" einträgt? Dann werden diese Daten überschrieben. Irgendwann könnte das nicht nur den Benutzer selbst treffen, aber vielleicht wird anhand dieser Daten ein öffentliches Profil erstellt mit derselben Logik.
                  Die Variablen würde ich erst durch lange zufallgenerierte Variablen ersetzen und erst dann durch die eigentlichen Daten ersetzen.

                  Kommentar


                  • #10
                    da es sich um eine "Software" handeln wird, die in einer Firma laufen soll(Firma meines Vaters) und die Benutzernamen von meinem Vater vergeben werden, besteht diese Gefahr nicht.

                    Kommentar


                    • #11
                      da es sich um eine "Software" handeln wird, die in einer Firma laufen soll(Firma meines Vaters) und die Benutzernamen von meinem Vater vergeben werden, besteht diese Gefahr nicht
                      Was spricht denn da gegen die Sereinbrief-Funktionalität von Word & Co.?
                      Bzw. was ist der Hintergrund das webbasierend mit PHP lösen zu wollen?

                      Kommentar


                      • #12
                        na ja, mein Vater will generell eine eigene webbasierende Software haben, damit die Mitarbeiter mit dem Laptop vor Ort Daten abrufen können.
                        Die Geschichte mit der Briefvorlage soll also nur ein kleiner Teil einer größeren Softwareanwendung werden in der Kunden, Mitarbeiter, Produkte.... verwaltet werden.

                        Webbasierend eben deshalb damit der Mitarbeiter vor Ort zum Beispiel einen Auftrag eingeben kann und die Sekretärin im Büro dann den Auftrag sofort hat und weiterverarbeiten kann. Ich programmier an der Sache eh schon einige Monate und das soll eben nu ein Zusatztool werden.

                        Kommentar


                        • #13
                          Versteh mich bitte nicht falsch, ich will Dir nicht sagen wie Du was umsetzten sollst.
                          Aber mir stellt sich die Frage, ob Du da wirklich an alles gedacht hast? Ich werf mal das Rechtesystem ein, bei dem gewährleistet sein sollte, daß ein Aussendienstmitarbeiter (falls vorhanden) bspw. nicht dieselben Daten eines Kunden sehen darf, wie die Buchhaltung.

                          Und das ist nur einer von vielen Aspekten.

                          Daher meine Frage, ob Du evtl. mal nach opensource-Lösungen in dem Bereich geschaut hast?!
                          Da gibt ves sicher Lösungen, die Eure Anforderungen decken und in einem praxisgerechten Release verfügbar sind.

                          Aber nur ein Tipp, wenns was eigenes sein soll, will ich Dich nicht aufhalten...

                          Kommentar


                          • #14
                            Du suchst eine Template-Engine.

                            (Nein, die Dinger sind nicht nur dazu geeignet via PHP HTML-Codes dynamisch mit Werten zu füllen)

                            Kommentar


                            • #15
                              Zitat von Dark Guardian Beitrag anzeigen
                              Du suchst eine Template-Engine.
                              ... die im einfachsten Falle str_replace() oder preg_replace() heißt.

                              Kommentar

                              Lädt...
                              X