使用PHP从表单获取数据

时间:2019-05-21 12:37:20

标签: php mysql

我有一个php文件,它使用从mysql数据库中获取的数据为我创建一个表。

<?php

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
      echo "<tr>";
      echo "<td>" . $row['ID'] . "</td>";
      echo "<td>" . $row['Name'] . "</td>";
      echo "<td>" . $row['CountryCode'] . "</td>";
      echo "<td>" . $row['District'] . "</td>";
      echo "<td>" . $row['Population'] . "</td>";
      echo "<td>" . $row['Price'] . "</td>";
      echo "<td><input type=\"number\" name="quantity" id="quantity"></td>";
      echo "</tr>";
    }
} else {
    echo "0 results";
}
$conn->close();

?>

在每一行的末尾,我都有一个输入数字,以便可以计算每种产品的数量(在这种情况下为国家/地区)。如何获得每个国家的金额,乘以价格,然后在表格末尾返回总计?

2 个答案:

答案 0 :(得分:1)

您必须在表格周围添加一个表单标签,然后对每行的记录价格*数量求和

我在这里所做的是检查是否在POST变量中设置了数量。如果存在,则将数据放入数量值中。之后,您必须使用记录ID的键将能够放入数组的数量的名称命名为ID。

此后,如果表单提交,则数量将作为查询字符串发送回页面。然后我将价格乘以数量,然后将其相加得出变量。完成循环后,在表末尾回显sum变量。

$html = '';
if ($result->num_rows > 0) {
    $html .= '<form method="GET" action="" target="_self>';

    $row = $result->fetch_assoc();

    if(isset($_GET['quantity'][$row['ID']]))
        $qty = $_GET['quantity'][$row['ID']];
    else
        $qty = 0;

    $sum = 0;
    // output data of each row
    while ($row) {
        $html .= '<tr>';
        $html .= '<td>' . $row['ID'] . '</td>';
        $html .= '<td>' . $row['Name'] . '</td>';
        $html .= '<td>' . $row['CountryCode'] . '</td>';
        $html .= '<td>' . $row['District'] . '</td>';
        $html .= '<td>' . $row['Population'] . '</td>';
        $html .= '<td>' . $row['Price'] . '</td>';
        $html .= '<td>
                    <input type="number" name="quantity[' . $row['ID'] . ']"  value="' . $qty . '">
                  </td>';
        $html .= '<td>' . ($sum += $row['Price'] * $qty) . '</td>';
        $html .= '</tr>';
    }
    $html .= '<input name="submitForm" value="submitForm">';
    $html .= '</form>';
    $html .= '<tr>';
    $html .= '<td>Total = '.$sum.'</td>';
    $html .= '</tr>';
} else {
    $html .= "0 results";
}
$conn->close();

echo htmlspecialchars($html);

请记住使用htmlspecialchars回显结果。

答案 1 :(得分:1)

如果要使用PHP进行操作,则必须分两个步骤进行操作,因为PHP是在服务器中处理的。因此,您将输入所需的所有数量,并在按下“计算”按钮时,该页面会将所有值发送到服务器,服务器将计算所需的一切并提供最终结果。

我看到此解决方案的一个问题是,一旦获得所需的所有数量,就必须再次获得价格。我的效率不是很高,因为您已经在第一页上有了它们。我在这里看到两个解决方案:

  1. 显示值时,请在$_SESSION字段中跟踪价格,这样您就可以在离开页面后访问价格,而不必从数据库中获取价格。
  2. 当您显示值时,请在input字段中显示价格(我建议使用readonly,以便用户在此处不会更改此值),因此价格将包含在其中浏览器将发送到服务器的$_POST(或$_GET,如果使用此变量)。

如果您只想显示该值,而后又不使用它,则可以使用javascript来计算它,这可能会更容易。

即使不是这里要点,但在while循环上通过PHP显示input时也要小心,因为这里所有input都具有相同的id,这样会使计算您想要的东西变得更加困难。

希望有帮助!