我正在尝试以我放在一起的形式为供应商和模型编写支票
以下是表格
的相关部分<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的基础知识,但我想以这种方式尝试。
答案 0 :(得分:3)
减少你的逻辑。从一般陈述中的想要开始。
A = "Vendor is VisionNet"
B = "Model is AG10W"
C = "Model is SR100G"
etc.
然后将您的逻辑写为
if (A and (B or C))
OR
if ((A and B) or C)
等
然后用等效的PHP替换你的占位符。
在PHP中,如果您正在尝试查看x是否是众多值中的一个,则可以使用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.
}
同时考虑operators。作业与比较不同。
请记住,逻辑只是数学的另一个子集。括号很重要,所以如果你提前关闭if
语句,那就结束了。之后的所有内容都将成为语法错误。
我提到这是因为你写了这个:
if ($_POST['vendor'] = 'VisionNet') || ...
这是discrete mathematics教程的链接,这是一种说“逻辑数学”的奇特方式。
此外,对于所有感兴趣的人,麻省理工学院(麻省理工学院)免费提供在线开放课程,其中一个是mathematics of computer science,深入讨论离散数学。
答案 1 :(得分:1)
以下是您的问题:
=
代替==
()
放入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'))
答案 2 :(得分:1)
首先,您需要使用===
代替=
。单一等于是指分配,而不是比较。
其次,我认为你要做的就是说“如果是这个供应商和其中一个模型,那就做点什么。如果是这样的话,试试这个:
if($_POST['vendor'] === 'ClearAccess' && (*various models, using ||*))
//dostuff
这样,如果供应商和至少一个模型相同,它将等同于true
。
更好的方法是建立各种模型的数组,然后使用PHP的in_array()
答案 3 :(得分: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"
答案 4 :(得分:0)
您应该查看if then statements http://php.net/manual/en/control-structures.if.php的php语法,因为您的语法错误。您将发布变量分配给除使用==
之外的值if($ _POST ['vendor'] =='VisionNet')
此外,您应该重新考虑您的$$和||用法并决定你的程序中实际说的是什么。
答案 5 :(得分:0)
包裹你的&amp;&amp;在它自己的括号内。所以下面的例子说如果POST [供应商]是Clear Acces而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"
答案 6 :(得分: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"
}
您的其他陈述也是一样的。