Anzeige

HTML Elemente entfernen, nicht den inhalt


EuroCent

KlappStuhl 2.0
#1
Hallo zusammen,

ich sitze aktuell vor folgenden Problem hier der HTML-Code den es betrifft:
HTML:
            <div class="form-group row">
                <label class="col-sm-3 col-form-label label-text-small" for="amail">Absender:</label>
                <div class="col-sm-9">
                    <input name="amail" class="form-control form-control-sm" id="amail" aria-describedby="a" aria-label="(Email)" required="" type="email" readonly="" placeholder="(Email)" value="Add.ress@domain.end">
                </div>
            </div>
            <div class="form-group row">
                <label class="col-sm-3 col-form-label label-text-small" for="tmail">Empfänger:</label>
                <div class="col-sm-9">
                    <input name="tmail" class="form-control form-control-sm ui-autocomplete-input ui-autocomplete-loading" id="tmail" aria-describedby="t" aria-label="(Email)" required="" type="email" placeholder="(Email)" value="" autocomplete="off">
                </div>
            </div>
            <hr>
            <div class="form-group row">
                <label class="col-sm-3 col-form-label label-text-small" for="kdnr">Kundenummer:</label>
                <div class="col-sm-9">
                    <input name="kdnr" class="form-control form-control-sm" id="kdnr" aria-describedby="kdnr" aria-label="Kundennummer" required="" type="text" maxlength="9" max="9" placeholder="Kundennummer">
                </div>
            </div>
            <div class="form-group row">
                <label class="col-sm-3 col-form-label label-text-small" for="costumername">Kundenname:</label>
                <div class="col-sm-9">
                    <input name="costumername" class="form-control form-control-sm" id="costumername" aria-describedby="costumername" aria-label="Kundenname" required="" type="text" placeholder="Kundenname">
                </div>
            </div>
            <div class="form-group row">
                <label class="col-sm-12 col-form-label label-text-small" for="address">Adresse:</label>
                <div class="col-sm-12">
                    <textarea name="address" class="form-control form-control-sm" id="address" aria-describedby="address" aria-label="Adresse" placeholder="Adresse">Inhalt mit Text</textarea>
                </div>
            </div>
            <hr>
            
            <div class="form-group row">
                <label class="col-sm-3 col-form-label label-text-small" for="summe">Gesamtbetrag:</label>
                <div class="col-sm-9">
                    <input name="summe" class="form-control form-control-sm" id="summe" aria-describedby="summe" aria-label="Gesamtbetrag" type="text" readonly="" placeholder="Gesamtbetrag">
                </div>
            </div>
            <div class="form-group row">
                <label class="col-sm-12 col-form-label label-text-small" for="listSumme">Erläuterung der Einzelposten/-beträge:</label>
                <div class="col-sm-12">
                    <textarea name="listSumme" class="form-control form-control-sm" id="listSumme" aria-describedby="listSumme" aria-label="Erläuterung der Einzelposten/-beträge" placeholder="Erläuterung der Einzelposten/-beträge">Inhalt mit Text</textarea>
                </div>
            </div>
Nun möchte Ich aus dem oberen Code folgendes erreichen:
HTML:
<p><strong>EINLEITUNG:</strong><br />
Hallo Max Mustermann,<br />
anbei Ihre Anfrage [PLATZHALTER].</p>
<p><strong>Absender:</strong> Add.ress@domain.end</p>
<p><strong>Empf&auml;nger:</strong> Add.ress@domain.end</p>
<p><strong>Kundennummer:</strong> 123456789</p>
<p><strong>Kundenname:</strong> Max Mustermann</p>
<p><strong>Adresse:</strong> Musterstr. 1, 12345</p>
<p><strong>Grund:</strong> Grund-Text</p>
<p><strong>Gesamtbetrag:</strong> 49,94 &euro;</p>
<p><strong>Erl&auml;uterung der Einzelposten/-betr&auml;ge:</strong><br />
12,90 &euro; Brutto; DAN; 04.01.2019<br />
12,90 &euro; Brutto; DAN; 04.01.2019
</p>
<p>ABSCHLIEDSFORMEL</p>
Der Platzhalter wird dann jenach Grund der Kategorie gesetzt.

Beispiele:
HTML:
<p><strong>EINLEITUNG:</strong><br />
Hallo Max Mustermann,<br />
anbei Ihre Anfrage Stornierung.</p>
<p><strong>Absender:</strong> Add.ress@domain.end</p>
<p><strong>Empf&auml;nger:</strong> Add.ress@domain.end</p>
<p><strong>Kundennummer:</strong> 123456789</p>
<p><strong>Kundenname:</strong> Max Mustermann</p>
<p><strong>Adresse:</strong> Musterstr. 1, 12345</p>
<p><strong>Grund:</strong> Grund-Text</p>
<p><strong>Gesamtbetrag:</strong> 49,94 &euro;</p>
<p><strong>Erl&auml;uterung der Einzelposten/-betr&auml;ge:</strong><br />
12,90 &euro; Brutto; DAN; 04.01.2019<br />
12,90 &euro; Brutto; DAN; 04.01.2019
</p>
<p>ABSCHLIEDSFORMEL</p>
oder:
HTML:
<p><strong>EINLEITUNG:</strong><br />
Hallo Max Mustermann,<br />
anbei Ihre Anfrage Kulanz-Widerruf.</p>
<p><strong>Absender:</strong> Add.ress@domain.end</p>
<p><strong>Empf&auml;nger:</strong> Add.ress@domain.end</p>
<p><strong>Kundennummer:</strong> 123456789</p>
<p><strong>Kundenname:</strong> Max Mustermann</p>
<p><strong>Adresse:</strong> Musterstr. 1, 12345</p>
<p><strong>Grund:</strong> Grund-Text</p>
<p><strong>Gesamtbetrag:</strong> 49,94 &euro;</p>
<p><strong>Erl&auml;uterung der Einzelposten/-betr&auml;ge:</strong><br />
12,90 &euro; Brutto; DAN; 04.01.2019<br />
12,90 &euro; Brutto; DAN; 04.01.2019
</p>
<p>ABSCHLIEDSFORMEL</p>
Allerdings weiß Ich nicht wie Ich genau vorgehen muss. :/
Dachte erst an .replace(), aber das scheint wohl nicht so zu gehen wie Ich es gerne möchte :(

Der Hintergrund des ganzen ist, dass Ich es als Mail-Text benötige.
Allerdings scheitere Ich scheinbar an einem simplen Tipp nur komme Ich nicht drauf, oder finde keinen Result via Google :/
 

EuroCent

KlappStuhl 2.0
#3
@Yaslaw

Der Platzhalter wird dann über Javascript gesetzt bzw. soll er dann gesetzt werden.
Ich überprüfe dann welcher Wert in der Selectbox gewählt wurde. :)

Da gibt es eine Selectbox wo der Grund dann mit enthalten ist.

Sehe auch gerade dass das oben im Quellcode nicht hinterlegt ist :D
 

Sempervivum

Erfahrenes Mitglied
#4
Wenn ich das Ganze nicht Wort-für-Wort lese, sondern mir vor allem den ursprünglichen Code ansehe, vermute ich: Du willst den endgültigen HTML-Text aus den values deiner Formularelemente erzeugen, wobei zusätzlich noch dieser Platzhalter ersetzt werden soll? Wobei ich nach deinem zweiten Posting vermute, dass dieser aus dem value einer Selectbox ausgelesen werden soll?
Trifft das zu oder liege ich jetzt ganz falsch?
 

EuroCent

KlappStuhl 2.0
#5
Genau der Platzhalter kommt aus der Selectbox. :)

Ich kann zwar die ganzen Werte auslesen und mein Formular dann zusammen stellen, aber gehe davon aus dass es mit einem Replace oder so sicherlich einfacher geht :)

Die Daten werden nicht an ein PHP Script gesendet sondern erst dann wenn das Formular im Hintergrund angepasst wurde :)

Vorne ist es HTML samt der DIVs und am Ende soll es Lesbar für Mails sein :)

Also mit den p-Tags :)

In der alten Version da war das Formular mittels p-Tags ausgefüllt, mit Einbindung des Frameworks Bootstrap 4 sieht es nur mit den p-Tag dumm aus :/

Daher hab Ich es für BS4 entsprechend hinterlegt damit es zum gesamt Bild dazu passt :)

Wie es dann als E-Mail angekommt, da reichen die p-Tags für mich aus :)
 

Sempervivum

Erfahrenes Mitglied
#6
Ich bin wenig optimistisch, dass man das mit einem replace erledigen kann, denn die Werte stehen ja gar nicht im HTML-Text sondern in den Values der einzelnen Formularelemente.
Ich sehe da zwei Möglichkeiten, das Ganze etwas effizienter zu machen:
1. Die Zeilen 4 bis 10 sind nach dem gleichen Schema aufgebaut. Man könnte die Namen der Formularelemente in einem Array ablegen und daraus das HTML automatisch erzeugen. Nachteil: Dabei werden nicht alle Werte erfasst und die verbliebenen müssen händisch erzeugt werden.
2. Mit einem Template arbeiten: Den gesamten HTML-Text in einer Variablen ablegen, die als Template aufgebaut ist, d. h. Platzhalter für die einzutragenden Werte enthält mit den Namen der Formularelemente. Letztere kann man dann automatisch ermitteln, jeweils das Value auslesen und den Platzhalter damit ersetzen. Hier also doch ein Ersetzen, hast Du es so gemeint?

Außerdem frage ich mich: Wenn das Ganze am Schluss doch an ein PHP-Skript gesendet wird, könnte man dann nicht normal die Formularwerte senden und die ganze Überarbeitung dann mit PHP machen?
 

EuroCent

KlappStuhl 2.0
#7
Naja es wird nicht direkt an ein PHP Script gesendet sondern bei dem Formular an "PHPMailer/Mail" nur übergeben. :)

Wenig Auffand :D

Aber vielleicht werd ich nicht drum herum kommen und es per AJAX machen ^^
 

Jan-Frederik Stieler

Monsterator
Moderator
#8
Hi,
ich versteh das Problem nicht so ganz. Du hast ein Formular wo jemand was eingibt und dann verschickst Du das per mail. Heißt die Daten aus dem Formular kommen als $_POST am Server an.
Dort kannst Du dann doch ne if-Abfrage machen und den Platzhalter dann ersetzen.

Und wenn das dynamisch passieren soll musst Du halt noch ne Ajax-Funktion dazwischen pappen.
Oder sehe ich das jetzt zu einfach?

Grüße
 
Anzeige

Neue Beiträge

Anzeige