[PHP] String aus mehreren Variablen bilden

Harry2k

Ensign
Registriert
Jan. 2017
Beiträge
151
Hallo,

evtl kann mir jemand helfen:

Ich habe 3 Variablen:
Ich würde diese gerne im Betreff einer Mail verketten, leider wird immer der letzte wert genommen
Was mache ich falsch? Es wird leider immer nur der letzte Wert genommen. (Priorität)


$contact->subject = $_POST['name']." ".$_POST['type']." priorität ".$_POST['priority'];

Max Mustermann Service Priorität hoch

soll das Ergebnis im Mailbetreff sein.

Die Variablen bzw Eingaben werden aus einem HTML Formular übergeben -ich denke aber das Problem ist das verketten das ich nicht auf die Kette bekomme :-), wenn ich nur

$contact->subject = $_POST['name']

wähle klappts.

falls jemand einen Lösungsansatz für mich hat...

GRuß

Harry2k
 
was macht ein

PHP:
echo $_POST['name'] . " " . $_POST['type'] . " priorität " . $_POST['priority'];
?
 
Dann will ich mal noch String-Interpolation in den Raum werfen, was es lesbarer macht: echo "{$a} {$b} priorität {$c}".
 
  • Gefällt mir
Reaktionen: Kontrollfreak und KitKat::new()
netzgestaltung schrieb:
was macht ein

PHP:
echo $_POST['name'] . " " . $_POST['type'] . " priorität " . $_POST['priority'];
?
das klappt leider nicht :
Error:
Parse error: syntax error, unexpected 'echo' (T_ECHO)
 
-
 
Bagbag schrieb:
was es lesbarer macht:
also ich finde das fürchterlich unleserlich. aber jeder wie er mag ;-) ich mag nicht in anführungszeichen, die nur strings enthalten sollten noch variablen suchen.

Parse error: syntax error, unexpected 'echo'
da passt was in der Zeile davor nicht, vermutlich fehlt ein semicolon?
 
  • Gefällt mir
Reaktionen: floq0r und leonM
Harry2k schrieb:
das klappt leider nicht :
Error:
Parse error: syntax error, unexpected 'echo' (T_ECHO)
Probier es pro Variable. z.B echo $_POST['name'] . " " . $_POST['type'];
und wenns klappt, fügst du die nächste hinzu.
 
@netzgestaltung du findest die erste Variante wirklich besser lesbar? :o

PHP:
$name = "Max Mustermann"
$age = 35
    
echo "Hallo " . $name . ", du bist " . $age . " Jahre alt."
echo "Hallo {$name}, du bist {$age} Jahre alt."
 
  • Gefällt mir
Reaktionen: Kontrollfreak und KitKat::new()
Ja auf alle Fälle, würde das aber nochmal anders schreiben. Jedenfalls aber mit Semicolons. Ansonsten zu OT ;-)
 
  • Gefällt mir
Reaktionen: floq0r
ok danke an alle habs dann doch hinbekommen durch rumprobieren - muss ' anstatt " verwenden dann passts

$contact->subject = $_POST['name'].' '.$_POST['type'].' priorität '.$_POST['priority'];

das frisst er :-)
 
Vielleicht noch ein paar Tipps:

  • Du solltest prüfen, ob die POST-Variablen gesetzt und nicht leer sind (Input Validation)
  • Du solltest auf keinen Fall POST-Variablen ungefiltert in eine E-Mail reinschreiben... wenn dir da jemand JavaScript reinposted, dann landet das nachher in der Mail (Input Sanitization)

PHP:
$name = filter_var($_POST['name'] ?? "", FILTER_SANITIZE_STRING);
$type = filter_var($_POST['type'] ?? "", FILTER_SANITIZE_STRING);
$prio = filter_var($_POST['priority'] ?? "", FILTER_SANITIZE_STRING);

$contact->subject = $name.' '.$type.' priorität '.$prio;

Weil du mehrere Datenfelder hast und ohnehin schon OOP verwendest, könntest du auch eine Klasse "MailForm" mit den Eigenschaften "name", "type" und "priority" erstellen und damit die Validierung und Filterung übernehmen.
 
  • Gefällt mir
Reaktionen: r15ch13 und Kontrollfreak
Bagbag schrieb:
@netzgestaltung du findest die erste Variante wirklich besser lesbar? :o

PHP:
$name = "Max Mustermann"
$age = 35
  
echo "Hallo " . $name . ", du bist " . $age . " Jahre alt."
echo "Hallo {$name}, du bist {$age} Jahre alt."
Das ist Gewohnheitssache, ich sehe das persönlich so wie @netzgestaltung : Zwischen Quotes sollen nur Strings stehen und keine veränderlichen Bestandteile. Ich lasse auch die spaces vor und nach den . weg. Ich finde auch one-lined if-conditions ohne curly brackets furchtbar.
 
Zurück
Oben