If else in variabel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kjeld Hogenkam

kjeld Hogenkam

04/11/2012 20:12:28
Quote Anchor link
Ik voel me ontzettend dom maar ik kom er gewoon niet meer uit!
Ben bezig met een script, alles gaat goed totdat ik alle gegevens moet versturen via de mail functie.

Hierbij komt de informatie bij in een variabel genaamd $message

Alleen nu kom ik met wit ruimtes te zitten in de email doordat sommmige variabelen niet ingevuld zijn.
Nu probeer ik dus met een if de legen velden er niet in te zetten maar krijg ik de error "Parse error: syntax error, unexpected T_IF in /home/jaimy/domains/jwcomputers.nl/public_html/test/next.php on line 17"

Hieronder heb ik de code. Lijn 17 is overigens de regel waar de if instaat! Iemand enig idee hoe het wel moet?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
$message =

            '<table border="0">
                <tr><td>Product</td><td>Aantal</td><td>Prijs</td></tr>
                '.if(isset($_POST['naam_barbeque_a'])){.'
                <tr><td>'.$_POST['naam_barbeque_a'].'</td><td> '. $_POST['aantal_barbeque_a'].'</td><td> '. $_POST['totaal_barbeque_a'].'</td></tr>
                '.}.'
                <tr><td>'.$_POST['naam_barbeque_b'].'</td><td> '. $_POST['aantal_barbeque_b'].'</td><td> '. $_POST['totaal_barbeque_b'].'</td></tr>
                <tr><td>'.$_POST['naam_barbeque_c'].'</td><td> '. $_POST['aantal_barbeque_c'].'</td><td> '. $_POST['totaal_barbeque_c'].'</td></tr>
                <tr><td>'.$_POST['naam_kinderpakket'].'</td><td> '. $_POST['aantal_kinderpakket'].'</td><td> '. $_POST['totaal_kinderpakket'].'</td></tr>
                <tr><td>'.$_POST['naam_garnituurpakket'].'</td><td> '. $_POST['aantal_garnituurpakket'].'</td><td> '. $_POST['totaal_garnituurpakket'].'</td></tr>
                <tr><td>'.$_POST['naam_barbeque'].'</td><td> '. $_POST['aantal_barbeque'].'</td><td> '. $_POST['totaal_barbeque'].'</td></tr>
                <tr><td>'.$_POST['naam_gas'].'</td><td> '. $_POST['aantal_gas'].'</td><td> '. $_POST['totaal_gas'].'</td></tr>
                <tr><td>'.$_POST['naam_briketten'].'</td><td> '. $_POST['aantal_briketten'].'</td><td> '. $_POST['totaal_briketen'].'</td></tr>
                <tr><td>'.$_POST['naam_karbonade'].'</td><td> '. $_POST['aantal_karbonade'].'</td><td> '. $_POST['totaal_karbonade'].'</td></tr>
                <tr><td>'.$_POST['naam_speklap'].'</td><td> '. $_POST['aantal_speklap'].'</td><td> '. $_POST['totaal_speklap'].'</td></tr>
                <tr><td>'.$_POST['naam_shaslick'].'</td><td> '. $_POST['aantal_shaslick'].'</td><td> '. $_POST['totaal_shaslick'].'</td></tr>
                <tr><td>'.$_POST['naam_hawai'].'</td><td> '. $_POST['aantal_hawai'].'</td><td> '. $_POST['totaal_hawai'].'</td></tr>
                <tr><td>'.$_POST['naam_sate'].'</td><td> '. $_POST['aantal_sate'].'</td><td> '. $_POST['totaal_sate'].'</td></tr>
                <tr><td>'.$_POST['naam_junior'].'</td><td> '. $_POST['aantal_junior'].'</td><td> '. $_POST['totaal_junior'].'</td></tr>
                <tr><td>'.$_POST['naam_bbqworst'].'</td><td> '. $_POST['aantal_bbqworst'].'</td><td> '. $_POST['totaal_bbqworst'].'</td></tr>
                <tr><td>'.$_POST['naam_drumstick'].'</td><td> '. $_POST['aantal_drumstick'].'</td><td> '. $_POST['totaal_drumstick'].'</td></tr>
                <tr><td>'.$_POST['naam_hamburger'].'</td><td> '. $_POST['aantal_hamburger'].'</td><td> '. $_POST['totaal_hamburger'].'</td></tr>
                <tr><td>'.$_POST['naam_varkenshaas'].'</td><td> '. $_POST['aantal_varkenshaas'].'</td><td> '. $_POST['totaal_varkenshaas'].'</td></tr>
                <tr><td>'.$_POST['naam_varkensfilet'].'</td><td> '. $_POST['aantal_varkensfilet'].'</td><td> '. $_POST['totaal_varkensfilet'].'</td></tr>
                <tr><td>'.$_POST['naam_biefstuk'].'</td><td> '. $_POST['aantal_biefstuk'].'</td><td> '. $_POST['totaal_biefstuk'].'</td></tr>
                <tr><td>'.$_POST['naam_spareribs'].'</td><td> '. $_POST['aantal_spareribs'].'</td><td> '. $_POST['totaal_spareribs'].'</td></tr>
                <tr><td>'.$_POST['naam_entrecote'].'</td><td> '. $_POST['aantal_entrecote'].'</td><td> '. $_POST['totaal_entrecote'].'</td></tr>
                <tr><td>'.$_POST['naam_lamskotelet'].'</td><td> '. $_POST['aantal_lamskotelet'].'</td><td> '. $_POST['totaal_lamskotelet'].'</td></tr>
                <tr><td>'.$_POST['naam_biefstukspies'].'</td><td> '. $_POST['aantal_biefstukspies'].'</td><td> '. $_POST['totaal_biefstukspies'].'</td></tr>
                <tr><td>'.$_POST['naam_procureursteak'].'</td><td> '. $_POST['aantal_procureursteak'].'</td><td> '. $_POST['totaal_procureursteak'].'</td></tr>
                <tr><td>'.$_POST['naam_kipfiletspies'].'</td><td> '. $_POST['aantal_kipfiletspies'].'</td><td> '. $_POST['totaal_kipfiletspies'].'</td></tr>
                <tr><td>'.$_POST['naam_v_shaslick'].'</td><td> '. $_POST['aantal_v_shaslick'].'</td><td> '. $_POST['totaal_v_shaslick'].'</td></tr>
                <tr><td>'.$_POST['naam_v_karbonade'].'</td><td> '. $_POST['aantal_v_karbonade'].'</td><td> '. $_POST['totaal_v_karbonade'].'</td></tr>
                <tr><td>'.$_POST['naam_v_hawai'].'</td><td> '. $_POST['aantal_v_hawai'].'</td><td> '. $_POST['totaal_v_hawai'].'</td></tr>
                <tr><td>'.$_POST['naam_v_sate'].'</td><td> '. $_POST['aantal_v_sate'].'</td><td> '. $_POST['totaal_v_sate'].'</td></tr>
                <tr><td>'.$_POST['naam_v_junior'].'</td><td> '. $_POST['aantal_v_junior'].'</td><td> '. $_POST['totaal_v_junior'].'</td></tr>
                <tr><td>'.$_POST['naam_v_speklap'].'</td><td> '. $_POST['aantal_v_speklap'].'</td><td> '. $_POST['totaal_v_speklap'].'</td></tr>
                <tr><td>'.$_POST['naam_v_bbqworst'].'</td><td> '. $_POST['aantal_v_bbqworst'].'</td><td> '. $_POST['totaal_v_bbqworst'].'</td></tr>
                <tr><td>'.$_POST['naam_knoflooksaus'].'</td><td> '. $_POST['aantal_knoflooksaus'].'</td><td> '. $_POST['totaal_knoflooksaus'].'</td></tr>
                <tr><td>'.$_POST['naam_cocktailsaus'].'</td><td> '. $_POST['aantal_cocktailsaus'].'</td><td> '. $_POST['totaal_cocktailsaus'].'</td></tr>
                <tr><td>'.$_POST['naam_barbecuesaus'].'</td><td> '. $_POST['aantal_barbecuesaus'].'</td><td> '. $_POST['totaal_barbecuesaus'].'</td></tr>
                <tr><td>'.$_POST['naam_satesaus'].'</td><td> '. $_POST['aantal_satesaus'].'</td><td> '. $_POST['totaal_satesaus'].'</td></tr>
                <tr><td>'.$_POST['naam_joppiesaus'].'</td><td> '. $_POST['aantal_joppiesaus'].'</td><td> '. $_POST['totaal_joppiesaus'].'</td></tr>
                <tr><td>'.$_POST['naam_mosterdsaus'].'</td><td> '. $_POST['aantal_mosterdsaus'].'</td><td> '. $_POST['totaal_mosterdsaus'].'</td></tr>
                <tr><td>'.$_POST['naam_rundvleessalade'].'</td><td> '. $_POST['aantal_rundvleessalade'].'</td><td> '. $_POST['totaal_rundvleessalade'].'</td></tr>
                <tr><td>'.$_POST['naam_kipkerriesalade'].'</td><td> '. $_POST['aantal_kipkerriesalade'].'</td><td> '. $_POST['totaal_kipkerriesalade'].'</td></tr>
                <tr><td>'.$_POST['naam_zalmsalade'].'</td><td> '. $_POST['aantal_zalmsalade'].'</td><td> '. $_POST['totaal_zalmsalade'].'</td></tr>
                <tr><td>'.$_POST['naam_huzarensalade'].'</td><td> '. $_POST['aantal_huzarensalade'].'</td><td> '. $_POST['totaal_huzarensalade'].'</td></tr>
                <tr><td>'.$_POST['naam_scharreleisalade'].'</td><td> '. $_POST['aantal_scharreleisalade'].'</td><td> '. $_POST['totaal_scharreleisalade'].'</td></tr>
                <tr><td>'.$_POST['naam_kruidenboter'].'</td><td> '. $_POST['aantal_kruidenboter'].'</td><td> '. $_POST['totaal_kruidenboter'].'</td></tr>
                <tr><td>'.$_POST['naam_stokbrood_wit'].'</td><td> '. $_POST['aantal_stokbrood_wit'].'</td><td> '. $_POST['totaal_stokbrood_wit'].'</td></tr>
                <tr><td>'.$_POST['naam_stokbrood_gesneden'].'</td><td> '. $_POST['aantal_stokbrood_gesneden'].'</td><td> '. $_POST['totaal_stokbrood_gesneden'].'</td></tr>
            </table>';
 
PHP hulp

PHP hulp

28/03/2024 21:37:40
 
Obelix Idefix

Obelix Idefix

04/11/2012 20:16:20
Quote Anchor link
Controleren met isset.
 
Eddy E

Eddy E

04/11/2012 21:32:09
Quote Anchor link
En ik ga je aanraden de velden in een array te steken.
Die array gebruik je dan bij het tonen van de velden én het controleren. Zo wordt je code veel compacter en overzichtelijker.
 
Ozzie PHP

Ozzie PHP

04/11/2012 21:35:51
Quote Anchor link
Je moet altijd proberen om zo min mogelijk dezelfde code te schrijven. Ik zou gaan werken met een array. Ik zal wel even een stukje voordoen voor je:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$options
= array('barbeque_a', 'barbeque_b', 'barbeque_c', 'kinderpakket'); // hier zet je alle opties in
$message = '<table><tr><td>Product</td><td>Aantal</td><td>Prijs</td></tr>';
foreach ($options as $option) {
  // we gaan nu alle opties doorlopen en controleren of deze optie "gepost" is
  if (isset($_POST[$option])) {
    // de optie is gepost, we gaan het bericht ($message) aanvullen!
    message .= '<tr><td>' . $_POST['naam_' . $option] . '</td><td>' . $_POST['aantal_' . $option] . '</td><td>' . $_POST['totaal_' . $option] . '</td></tr>';
  }
}

$message .= '</table>';
?>


(Ik heb het niet getest, dus misschien zit er een foutje in...)
Gewijzigd op 04/11/2012 21:43:38 door Ozzie PHP
 
Frank Nietbelangrijk

Frank Nietbelangrijk

04/11/2012 21:36:54
Quote Anchor link
en als we het toch over arrays hebben: ik heb net wat voorbeeldjes gepost in deze topic:

http://www.phphulp.nl/php/forum/topic/switch-dollarget/87501/last/
 
Ivo Breeden

Ivo Breeden

04/11/2012 22:27:22
Quote Anchor link
Beste Kjeld,
Bovenstaand tref je heel zinvolle opmerkingen aan om reeksen efficient af te handelen, maar dat was helemaal geen antwoord op wat je eigenlijk vroeg.
Je vroeg je af waarom je de foutmelding "... unexpected T_IF ..." krijgt op de volgende regel.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
'string'.if(isset($_POST['naam_barbeque_a'])){.'string'.}.'string';
?>

Het antwoord is eenvoudig: met een punt (.) kun je strings aan elkaar plakken. Maar "if()" is geen string en die kun je er dus niet op deze manier aanplakken.
Je moet dus iets doen als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$message
= 'string';
if(isset($_POST['naam_barbeque_a'])){
  $message = $message . 'string';
}

?>
 
Willem vp

Willem vp

05/11/2012 06:33:25
Quote Anchor link
Voortbordurend op het antwoord van Ivo, zou je ook met de ?:-operator kunnen werken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$message = "deel1" . isset($_POST['naam_barbeque_a']) ? "barbecue_a" : "" . "deel2";


Zie http://www.php.net/manual/en/language.operators.comparison.php#language.operators.comparison.ternary voor meer uitleg.

O ja, het is 'barbecue' en niet 'barbeque'. ;-)
 
Ozzie PHP

Ozzie PHP

05/11/2012 10:21:34
Quote Anchor link
Mensen, ik heb het antwoord hierboven al gegeven hoor? Misschien handig om eerst even de reactie van de TS af te wachten zodat we weten of het probleem is opgelost.
 
Willem vp

Willem vp

05/11/2012 10:32:29
Quote Anchor link
Ozzie PHP op 05/11/2012 10:21:34:
Mensen, ik heb het antwoord hierboven al gegeven hoor? Misschien handig om eerst even de reactie van de TS af te wachten zodat we weten of het probleem is opgelost.

Volgens het TIMTOWTDI-principe is jouw antwoord niet het enige juiste. ;-) Zelf zou ik het als TS in ieder geval wel handig vinden om meerdere alternatieven te lezen waaruit ik vervolgens de keuze kan maken welke het best bij mijn situatie past. Daarnaast kunnen alternatieven ook nog inspiratie geven voor het oplossen van andere problemen.
 
Ozzie PHP

Ozzie PHP

05/11/2012 10:40:33
Quote Anchor link
Wat is het TIMTOWTDI-principe?

Daarnaast... mijn oplossing is kant en klaar, en in dit geval ook logischer want in jouw voorbeeld spreek je over een "deel2" terwijl er helemaal geen deel2 is.

Daarnaast... waarschijnlijk is de TS een beginneling en wordt het hem op deze manier alleen maar moeilijker gemaakt.

En je hebt gelijk dat er voor een probleem meerdere oplossingen zijn, maar laten we eerst even de reactie van de TS afwachten.
 
Eddy E

Eddy E

05/11/2012 11:18:43
Quote Anchor link
Ik moest het TIMTOWTDI ook even Googlen..... kostte mij 3 seconden om te weten wat het betekende.

Beginnelingen zijn niet per se dom of zo. En ze moeten het goed leren, weten dat er meerdere wegen naar het figuurlijke Rome leiden.
Wel ben ik met je eens dat Ozzie's code gewoon goed is.
 
Ozzie PHP

Ozzie PHP

05/11/2012 11:21:34
Quote Anchor link
@Eddy, ik had het inmiddels ook al geGoogled ;-) Blijkbaar is overal in de IT een afkorting voor! Haha...
 
Chris PHP

Chris PHP

05/11/2012 11:24:28
Quote Anchor link
Ozzie PHP op 05/11/2012 11:21:34:
Blijkbaar is overal in de IT een afkorting voor!


Dat komt omdat Amerikanen liever lui dan moe zijn ;) haha
Gewijzigd op 05/11/2012 11:24:47 door Chris PHP
 
Kris Peeters

Kris Peeters

05/11/2012 11:37:56
Quote Anchor link
Niets mis met Ozzie's code, laat ons duidelijk zijn.

Ik vind wel dat Willem meer een antwoord geeft op de vraag waar de TS mee zat.

De TS probeert een string te concateneren, en binnenin die logica merkt hij dat het handig zou zijn als het volgende stuk string slechts voorwaardelijk zou voorkomen.

Wel, dat is precies wat de ternary operator doet.

(En inderdaad: voor elk php-probleem dat opgelost is, zal een andere oplossing ook mogelijk zijn.)

Chris NVT op 05/11/2012 11:24:28:
... Dat komt omdat Amerikanen liever lui dan moe zijn ;) haha


En ze hebben groot gelijk. Dit zou zowat het motto kunnen zijn van de programmeur.
Het warm water niet opnieuw uitvinden ...
als je iets twee keer moet doen, steek het in een functie, dan kan je het dubbel gebruiken ...
Gewijzigd op 05/11/2012 12:03:43 door Kris Peeters
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.