If-Anweisung bei Variablendeklaration

fanta0815

Mitglied
Ich hab mal eine Frage. Ist es möglich eine If-Anweisung in eine Variable zu "packen"?

Also im Sinne von:

$variable1 = if( $variable2 > 0 ) { $variable3 }; -oder so ähnlich
 
Doch das geht mit einem verkürzten If Konstrukt:
Siehe auch hier: Vergleichs Operatoren

Ein Beispiel:

PHP:
$a = ( isset($_GET['a']) ? $_GET['a'] : '0' );

Bedingung ? true : false
Ist die Struktur.

Ausgeschrieben würde es dann so aussehen:
PHP:
if(isset($_GET['a']) {
  $a = $_GET['a'];
} else {
  $a = '0';
}
 
Das Problem ist, dass ich eine eMail via PHP verschicken lassen will. Und in den eMail Text soll die If-Anweisung.

Hier mal der Auszug aus dem Quelltext:

mail("c_hpolomsk@infocity.de", "Nur ein Test",
"Die Bestellung von

$VN $NN
$STR
$PLZ $ORT
$TEL
$MAIL

erfolgte am $datum um $uhrzeit Uhr.
Bestellt wurde folgendes:

Artikel 'Nr. 1' Anzahl: $w1
Artikel 'Nr. 2' Anzahl: $w3
Artikel 'Nr. 3' Anzahl: $w5
Artikel 'Nr. 4' Anzahl: $w7
Artikel 'Nr. 5' Anzahl: $w9
Artikel 'Nr. 6' Anzahl: $w11 " ) ;


Die Zeilen "Artikel 'Nr. x Anzahl: $wx" sollen aber nur angezeigt werden, wenn $wx > 0.
Und da hatte ich mir gedacht die dazugehörige If-Anweisung in eine Variable zu packen, weiß aber nich wie das geht.

Wie würde das
$vari1 = ($vari2 >0)?$vari3:"";

oder das

if(isset($_GET['a']) {
$a = $_GET['a'];
} else {
$a = '0';
}

in meinem Beispiel aussehen müssen? Weil irgendwie seh ich da nich durch (bin noch relativ neu in PHP und Programmierung im allgemeinen)
 
Zuletzt bearbeitet:
Geht natürlich auch :)
Code:
mail("c_hpolomsk@infocity.de", "Nur ein Test",
"Die Bestellung von

$VN $NN
$STR
$PLZ $ORT
$TEL
$MAIL

erfolgte am $datum um $uhrzeit Uhr.
Bestellt wurde folgendes:

" . ($w1 > 0)?"Artikel 'Nr. 1' Anzahl: $w1\n":"") .
($w2 > 0)?"Artikel 'Nr. 2' Anzahl: $w2\n":"") .
($w3 > 0)?"Artikel 'Nr. 3' Anzahl: $w3\n":"") .
($w4 > 0)?"Artikel 'Nr. 4' Anzahl: $w4\n":"") .
($w5 > 0)?"Artikel 'Nr. 5' Anzahl: $w5\n":"") .
($w6 > 0)?"Artikel 'Nr. 6' Anzahl: $w6\n":"") 
) ;

Wenn ich mich nicht vertippt habe :)
 
Das funktioniert noch nicht ganz. Das bekomme ich nur die Anzeige für den Artikel Nr. 6. Alles andere, also die anderen Artikel, sowie die anderen Angaben (Adresse, Datum, Uhrzeit...), zeigt es garnicht mit an.

Das gilt, wenn ich am Ende der Zeilen die ) weglasse. Lasse ich es so wie es ist (bis auf die Variablenanpassung), dann kommt folgender Fehler:

Parse error: parse error, unexpected ')' in /home/www/htdocs/felix-bertholdt.de/shop/stefan/gesendet.php on line 36

Und Zeile 36 ist hierbei die 2. Zeile (von Artikel Nr. 2).
 
Zuletzt bearbeitet:
Achja, sry, fehlte eine Klammer jeweils :)
Code:
mail("c_hpolomsk@infocity.de", "Nur ein Test",
"Die Bestellung von

$VN $NN
$STR
$PLZ $ORT
$TEL
$MAIL

erfolgte am $datum um $uhrzeit Uhr.
Bestellt wurde folgendes:

" . (($w1 > 0)?"Artikel 'Nr. 1' Anzahl: $w1\n":"") .
(($w2 > 0)?"Artikel 'Nr. 2' Anzahl: $w2\n":"") .
(($w3 > 0)?"Artikel 'Nr. 3' Anzahl: $w3\n":"") .
(($w4 > 0)?"Artikel 'Nr. 4' Anzahl: $w4\n":"") .
(($w5 > 0)?"Artikel 'Nr. 5' Anzahl: $w5\n":"") .
(($w6 > 0)?"Artikel 'Nr. 6' Anzahl: $w6\n":"") 
) ;
Denke, so müsste es gehen :)
 
Zurück