0

ベンダーとモデルの小切手をまとめた形で書き込もうとしています

これがフォームの関連部分です

<table  width="75%">
<form action="?" method="post">
<tr>
<td colspan="6" align="center">
<font size="5"><b>Add new record</b></font>
</td>
</tr>
<tr>
<td align="right">
<b>Vendor:</b>
</td>
<td>
<select name="vendor">
<option value="ClearAccess">ClearAccess</option>
<option value="VisionNet">VisionNet</option>
<option value="Other">Other</option>
</select>
</td>
<td align="right">
<b>Model:</b>
</td>
<td>
<select name="model">
<option value="NotModel">--ClearAccess--</option>
<option value="AG10W">AG10W</option>
<option value="SR100G">SR100G</option>
<option value="SR300N">SR300N</option>
<option value="SR350N">SR350N</option>
<option value="SR500N">SR500N</option>
<option value="NotModel">--VisionNet--</option>
<option value="M404">M404</option>
<option value="M405">M405</option>
<option value="M505">M505</option>
<option value="M505n">M505N</option>
<option value="Legacy">Legacy</option>
</select>
</td>

私の形は良いです。私の問題は、ifループを構築しているときです。これが私がこれまでに持っているものです

if ($_POST['vendor']='ClearAccess') && ($_POST['model']='M404') || ($_POST['model']='M405') || ($_POST['model']='M505') || (_$POST['model']='M505N') || ($_POST['model']='Legacy')
echo "You have not selected a valid vendor/model combination"

かっこをどこにどのように配置するかという問題があります。

これに似たifステートメントも作成します

if ($_POST['vendor']='VisionNet') && ($_POST['model']='AG10W') || ($_POST['model']='SR100G') || ($_POST['model']='SR300N') || (_$POST['model']='SR350N') || ($_POST['model']='SR500N')|| ($_POST['model']='Legacy')
echo "You have not selected a valid vendor/model combination"

私はそれをさまざまな方法で行うことに完全にオープンです。最終的には、これをJavaスクリプトに変換し、ベンダーを選択して、そのベンダーに関連するモデルのみを取得します。私はまだPHPを学んでいて、Javaの基礎さえ学んでいないので、この方法で試してみたいと思います。

4

7 に答える 7

4

ロジックを減らします。一般的なステートメントでやりたいことから始めます。

A = "Vendor is VisionNet"
B = "Model is AG10W"
C = "Model is SR100G"
etc.

次に、ロジックを次のように記述します

if (A and (B or C))

また

if ((A and B) or C)

次に、プレースホルダーを PHP の同等のものに置き換えます。

PHP では、x が多くの値の 1 つであるかどうかを確認しようとしている場合は、次のin_array()メソッドを使用できます。

$models = array('AG10W', 'SR100G', 'SR300N', 'SR350N', 'SR500N', 'Legacy');

// if the vendor is vision net OR the model is in the list of models defined in $models, do something
if ($_POST['vendor'] == 'VisionNet' || in_array($_POST['model'], $models)) {
    // do something.
}

オペレーターも考慮してください。割り当ては比較とは異なります。

論理は数学のサブセットにすぎないことを忘れないでください。if括弧は重要なので、ステートメントを早く閉じればそれで終わりです。以降はすべて構文エラーになります。

あなたがこれを書いたので、私はそれを言及します:

if ($_POST['vendor'] = 'VisionNet') || ...

これは、「論理の数学」を巧妙に表現した離散数学のチュートリアルへのリンクです。

また、関心のあるすべての人のために、MIT (マサチューセッツ工科大学) がオンラインで無料のオープン コースを提供しています

于 2012-08-03T18:13:25.093 に答える
1

ここにあなたの問題があります:

  1. =の代わりに使用==
  2. ステートメント()に入れないif

から変更する

if ($_POST['vendor']='ClearAccess') && ($_POST['model']='M404') || ($_POST['model']='M405') || ($_POST['model']='M505') || (_$POST['model']='M505N') || ($_POST['model']='Legacy')

に :

if (($_POST['vendor']=='ClearAccess') && ($_POST['model']=='M404') || ($_POST['model']=='M405') || ($_POST['model']=='M505') || (_$POST['model']=='M505N') || ($_POST['model']=='Legacy')) 
于 2012-08-03T18:10:20.247 に答える
1

===まず、の代わりに使用する必要があります=。単一の等号は、比較ではなく代入を意味します。

第二に、あなたがしようとしていることは、「このベンダーであり、これらのモデルのいずれかである場合は、何かを実行してください。その場合は、これを試してください:

   if($_POST['vendor'] === 'ClearAccess' && (*various models, using ||*))
       //dostuff

そうtrueすれば、ベンダーがモデルの少なくとも 1 つと同じであるかどうかに等しくなります。

これを行うためのより良い方法は、さまざまなモデルの配列を構築してから、PHP を使用することです。in_array()

于 2012-08-03T18:10:20.477 に答える
0

() を右に置く必要があります...

構文を理解していただくために、改行が適切なコードを次に示します:)

if (
($_POST['vendor'] == 'ClearAccess' && $_POST['model'] = 'M404') || 
$_POST['model'] == 'M405' || 
$_POST['model'] == 'M505' || 
$_POST['model'] == 'M505N' ||
$_POST['model'] == 'Legacy'
) {
echo "You have not selected a valid vendor/model combination"
}

そして改行なし:

if (($_POST['vendor'] == 'ClearAccess' && $_POST['model'] == 'M404') || $_POST['model'] == 'M405' ||  $_POST['model'] == 'M505' || $_POST['model'] == 'M505N' || $_POST['model'] == 'Legacy') {
echo "You have not selected a valid vendor/model combination"
}

あなたの他の声明は同じように行きます。

于 2012-08-03T18:14:43.737 に答える
0

構文が間違っているため、 if then ステートメントhttp://php.net/manual/en/control-structures.if.phpの php 構文を確認する必要があります。== を使用する以外の値に投稿変数を割り当てています

if ($_POST['vendor']=='VisionNet')
また、$$ と || を再考する必要があります。使用法とそれが実際にあなたのプログラムで何を言っているのかを決定します。

于 2012-08-03T18:10:51.907 に答える
0

&& を独自の括弧で囲みます。したがって、以下の例では、POST[vendor] が Clear Access で、POST[model] が M404 であるか、POST[model] が M405、M505、M505N、または Legacy であるかを示しています。

if (($_POST['vendor']=='ClearAccess') && ($_POST['model']=='M404')) || ($_POST['model']=='M405') || ($_POST['model']=='M505') || (_$POST['model']=='M505N') || ($_POST['model']=='Legacy') 
echo "You have not selected a valid vendor/model combination"
于 2012-08-03T18:11:46.937 に答える
0

if 条件で==代わりに使用する必要があります。=

したがって、代わりに:

if ($_POST['vendor']='ClearAccess') && ...

使用する

if ($_POST['vendor'] == 'ClearAccess') && ...

次のような if 条件を使用することをお勧めします。

if ($_POST['vendor'] == 'ClearAccess') &&
    str_replace(array('M404', 'M405', 'M505', 'M505N', 'Legacy'), '', $_POST['model']) 
         != $_POST['model']
   )
   echo "You have not selected a valid vendor/model combination"
于 2012-08-03T18:09:27.380 に答える