2017-02-06 4 views
0

私はRSVPのPHPフォームを作成していますが、1つのisset変数に複数の$ _POSTを宣言しようとしていますが、私のコードでエラーが発生しています。操作を行います。PHPの複数のIsset宣言

$attendance = isset($_POST['template-contactform-event']) ? $_POST['template-contactform-event'] : ''; 

    $guestname1 = isset($_POST['template-contactform-guestname1'], $_POST['template-contactform-guestname1r']) ? $_POST['template-contactform-guestname1'], $_POST['template-contactform-guestname1r'] : ''; 

は、だから私のエラーが2番目の宣言ラインの$ guestname1で発生している私は、その理由ISSET後の第二のコマの思いが、私はこれを宣言だろうかわからないんだけど?最初の行($出席)は私が達成しようとしているものですが、変数1つにつき2つの$ _POSTがあります。

+0

エラーメッセージは何ですか?また、デバッグ中に3進数を使用しないようにしてください。後で3進数を書くことができます – fpietka

答えて

2

isset()は複数のパラメータを取ることができますが、inline iif()はできません。

代わりに、この2つのパラメータを連結してみてください。

<?php 

$attendance = isset($_POST['template-contactform-event']) ? $_POST['template-contactform-event'] : ''; 

$guestname1 = isset($_POST['template-contactform-guestname1'], $_POST['template-contactform-guestname1r']) ? 
       $_POST['template-contactform-guestname1'].' '.$_POST['template-contactform-guestname1r'] : ''; 
+0

助けてくれてありがとうございました。例として答えたようにこれを提出することができました。 – BoneStarr

2

最初のステートメントは正しいです。 しかし、2番目のカンマにエラーがあります。

あなたは道の三元を見てみる場合は、ビルドすることになっています

$val = my_test?result_if_true:result_if_false;

それはブール値を返しますので、あなたがisset($_POST['template-contactform-guestname1'], $_POST['template-contactform-guestname1r'])を行うことができます。

書き込みしません:$_POST['template-contactform-guestname1'], $_POST['template-contactform-guestname1r']には第2引数があります。三項はこのコンマを期待していないためです。

あなたは、私がこの記事 https://davidwalsh.name/php-shorthand-if-else-ternary-operators

+0

この+ありがとう! – BoneStarr

1

を見つけたより多くの情報が必要な場合には動作しません、あなたは、配列を使用する必要があります一つの変数に2つの値を割り当てています。

また、ユーザーが空白のフォームを送信した場合、インデックスがスーパーグローバル$_POSTに存在するため、isset($_POST['smth'])がtrueを返すので、isset()はフォームに値を入力したかどうかを確認する方法ではありません。値は空の文字列に設定されます。代わりにempty()と2つの値を格納する配列を使用してください。

+0

ありがとうございます+1 – BoneStarr