2013-04-22 68 views
-4

现在我所得到的是与我所投入的价值相同的价值。所以它只是读取第一个if语句,就是这样,并输出相同的价格。意外的变量问题

$mysqli = new mysqli("localhost", "root", "", "insuredcars"); 
if ($_POST['formcar'] == '1' || $_POST['formage'] == '18' || $_POST['formNCD'] == '0' || $_POST['formPoints'] == '0') 
{ 
$query = $mysqli->query("SELECT * FROM insurance WHERE insuranceid = '3'"); 
while($row = mysqli_fetch_assoc($query)) 
{ 
    echo "<tr>"; 
    echo "<td> The price for insurance will be " . $row['insuranceprice'] . "</td>"; 
    echo "</tr>"; 
} 
echo "</table>";  
} 
else if ($_POST['formcar'] == '6' || $_POST['formage'] == '18' || $_POST['formNCD'] ==  '0' || $_POST['formPoints'] == '0') 
{ 
$query = $mysqli->query("SELECT * FROM insurance WHERE insuranceid = '2'"); 

echo "<tr>"; 
echo "<td> The price for insurance will be " . $row['insuranceprice'] . "</td>"; 
echo "</tr>"; 
echo "</table>"; 
} 
    else if ($_POST['formcar'] == '1' || $_POST['formage'] == '19' || $_POST['formNCD'] ==  '0' || $_POST['formPoints'] == '0') 
{ 
    $query = $mysqli->query("SELECT * FROM insurance WHERE insuranceid = '5'"); 

echo "<tr>"; 
echo "<td> The price for insurance will be " . $row['insuranceprice'] . "</td>"; 
echo "</tr>"; 
} 
echo "</table>"; 
+2

其中是错误,它是什么 – PSR 2013-04-22 08:09:06

+0

添加括号但仍然得到错误:解析错误:语法错误,意想不到的'}'在第16行C:\ xampp \ htdocs \ search.php – 2013-04-22 08:20:34

+0

考虑分离问题 - 不要在同一个脚本上混合使用MySQL,PHP和HTML:最终会得到无法维护且无法使用的代码。 – moonwave99 2013-04-22 10:05:37

回答

2

在PHP中,没有括号{}条件后,才执行单个线。你需要添加一些大括号。

<?php 

    $mysqli = new mysqli("localhost", "root", "", "insuredcars"); 
    if ($_POST['formcar'] == '1' || $_POST['formage'] == '18' || $_POST['formNCD'] == '0' || $_POST['formPoints'] == '0') { 
     $query = $mysqli->query("SELECT * FROM insurance WHERE insuranceid = '1'"); 
     while($row = mysqli_fetch_array($query)) { 
      echo "<tr>"; 
      echo "<td> The price for insurance will be " . $row['insuranceprice'] . "</td>"; 
      echo "</tr>"; 
     } 
     echo "</table>"; 
    } elseif ($_POST['formcar'] == '6' || $_POST['formage'] == '18' || $_POST['formNCD'] == '0' || $_POST['formPoints'] == '0') { 
     $query = $mysqli->query("SELECT * FROM insurance WHERE insuranceid = '2'"); 
    } 
    echo "<tr>"; 
    echo "<td> The price for insurance will be " . $row['insuranceprice'] . "</td>"; 
    echo "</tr>"; 
    echo "</table>"; 

?> 

我不知道发生了什么事情与<tr>部分,但是,是的,这是一个良好的开端为您服务。

+0

+1的速度:) – Stephan 2013-04-22 08:11:46

0

if语句没有括号...试试这个:

if(cond1){ 

}else if(cond2){ 

} 
0

许多{失踪或虐待放置。我试图猜测他们的立场。尝试下面的更正的语法,看看它是否按预期工作。

if ($_POST['formcar'] == '1' || $_POST['formage'] == '18' || $_POST['formNCD'] == '0' || $_POST['formPoints'] == '0') 
{ 
    $query = $mysqli->query("SELECT * FROM insurance WHERE insuranceid = '1'"); 
    while($row = mysqli_fetch_array($query)) 
    { 
     echo "<tr>"; 
     echo "<td> The price for insurance will be " . $row['insuranceprice'] . "</td>"; 
     echo "</tr>"; 
    } 
    echo "</table>";  
} 
else if ($_POST['formcar'] == '6' || $_POST['formage'] == '18' || $_POST['formNCD'] == '0' || $_POST['formPoints'] == '0') 
{ 
    $query = $mysqli->query("SELECT * FROM insurance WHERE insuranceid = '2'"); 

    echo "<tr>"; 
    echo "<td> The price for insurance will be " . $row['insuranceprice'] . "</td>"; 
    echo "</tr>"; 
    echo "</table>"; 
} 
else if ($_POST['formcar'] == '1' || $_POST['formage'] == '19' || $_POST['formNCD'] ==  '0' || $_POST['formPoints'] == '0') 
{ 
    $query = $mysqli->query("SELECT * FROM insurance WHERE insuranceid = '5'"); 

    echo "<tr>"; 
    echo "<td> The price for insurance will be " . $row['insuranceprice'] . "</td>"; 
    echo "</tr>"; 
} 
echo "</table>"; 

注:

除了支架的位置,也有你的代码中的逻辑错误。例如:

  • 第一if块应执行if ($_POST['formage'] == '18') ...很好...
  • ...但这样你应该else语句......这没有任何意义。

我的猜测是你的意思是&&而不是||,但这只是一个猜测。

+0

我已经改变它是伟大的,但由于某种原因,我得到的价值始终如一。这就像只读了第一条if语句,就是这样。 – 2013-04-22 09:06:23

+0

那么,除了括号的位置,你的代码中有一些逻辑错误。例如,第一个'if'块应该被执行'if($ _POST ['formage'] =='18')'...好,但是你的else语句也是如此......这是没有意义的。我的猜测是你的意思是'&&'而不是'||',但这只是一个猜测。也许你应该在继续使用你的代码之前了解更多关于通用控制结构和布尔运算符的知识。 – Jean 2013-04-22 10:00:47