【问题标题】:php mysql multiply database value with form selectionphp mysql将数据库值与表单选择相乘
【发布时间】:2011-08-29 15:44:50
【问题描述】:

你好,我真的很挣扎。我被要求开发一个脚本来计算油价,但无法让它工作。我已经能够设置一个表格来更新燃油价格。

我有一个名为fuel_price 的表。在此表中将是存储在价格下的每升燃料的成本。例如,如果每升油价为 0.50 英镑,我需要将此值乘以在表单下拉列表中选择的值。

谁能指导我该怎么做??

好的,这是更新代码预览。

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

<select name="fueltype">
<option>- Select fuel type -</option>
<option value="Diesel">Diesel</option>
<option value="Red Diesel">Red Diesel</option>
<option value="Home Heating Oil">Home Heating Oil</option>
</select>
<select name="qtylitres">
<option>- Qty in Litres -</option>
<option value="100">100</option>
<option value="200">200</option>
<option value="400">400</option>
<option value="500">500</option>
<option value="900">900</option>
<option value="1000">1000</option>
</select>

<input type="hidden" name="id" value="" />
<input type="submit" name="submit" value="Submit" />
</form>

<?php

include 'mysql_connect.php';

$pdo = '';

    $stmt = $pdo->prepare("SELECT `Oil` from `fuel_price` WHERE id = '1'"); 
    if (!$stmt->execute()) { die($stmt->errorInfo[2]); } 
    $row = $stmt->fetch(); 

    $price = $row['Oil'];

    echo $_POST['qtylitres'] * $price;

?>

有人知道我哪里出错了吗??

谢谢

【问题讨论】:

  • 您的数据库中价格的区别是什么?如果您发布数据库 echema 可能带有示例数据会很好
  • @Stefano 可能是燃料的类型,因为那是他的第一个 &lt;select&gt;
  • 你不应该在浏览器中回显$_SERVER['PHP_SELF']。它容易受到 XSS 攻击。 (见seancoates.com/blogs/xss-woes

标签: php mysql calculator


【解决方案1】:
<?php

    //Connect to database here. In this example, I'll assume you connected using PDO
    //Although the same logic applies on any engine.

    $stmt = $pdo->prepare("SELECT `price` from `fuel_price` WHERE `type` = :type"); //Prepare a query
    $stmt->bindValue(':type', $_POST['type']); //Assuming the first <select> is named type
    if (!$stmt->execute()) { die($stmt->errorInfo[2]); } //Display an error and terminate script if query failed.
    $row = $stmt->fetch(); //Assuming you have only one row, fetch should only be called once.

    $price = $row['price'];

    echo $_POST['qtylitres'] * $price; //Multiply quantity with price and print result.

?>

请注意,我尚未对其进行测试,但它应该可以工作。您的标记不完整,缺少第一个 &lt;select&gt; 的开头。阅读 cmets,您应该一切顺利。

【讨论】:

  • 获取未定义变量:pdo。我已经在上面发布了完整的代码。请帮忙??
【解决方案2】:

假设您的表中有一个“价格”列,并且唯一的结果包含正确的价格:

include 'mysql_connect.php';
if (isset($_POST['submit'])) {
    // edit: added fueltype in the where clause
    $fueltype = mysql_real_escape_string($_POST['fueltype']);
    $q = "SELECT * FROM fuel_price WHERE id = '1' AND fueltype='$fueltype'";


    $result = mysql_query($q);
    $row= mysql_fetch_array($result);
    $price = $row['price'] * $_POST['qtylitres'];
    echo $price;

【讨论】:

  • 您好还没有完全运行。我已经正确计算了它,但现在需要查询燃料类型。例如 $query = "SELECT * FROM fuel_price WHERE FuelType='{$_POST['fueltype']}'" ;然后回显结果 echo $_POST['qtylitres'] * $price ['Price'];你能帮忙吗??
  • 我在 where 子句中添加了fueltype。
猜你喜欢
  • 2014-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-23
  • 1970-01-01
  • 2012-01-20
  • 1970-01-01
相关资源
最近更新 更多