【问题标题】:Form input type equal to dynamic table result表单输入类型等于动态表结果
【发布时间】:2017-11-03 03:24:15
【问题描述】:

我如何获得完全相同的“id”值,它从数据库进入我的 HTML 表,也输入到表单提交值中?

这是我迄今为止所做的:
我已经生成了两件可以正常工作的东西:

  1. 从数据库表的三列生成结果的 html 表
  2. 每行都有一个“出售”提交按钮

您可以在下面的代码中看到。 “id”的值固定为 3。所以每当我按下“Sell”按钮时,id 为 3 的产品的数量列中会增加 1 个单位。

问题:
我真正想要的是根据特定行使值动态变化。
如果我在“ID 1”的行上按“sell”,那么我希望将“1”作为值动态添加到表单中。
如果我在“ID 2”的行上按“sell”,那么我希望将“2”作为值动态添加到表单中......等等。

<html>
<body>

<form id="sellAndBuy" method="POST">
<input type="hidden" name="qty" value="1">
<input type="hidden" name="id" value="3">

<?php

echo "<table style='border: solid 2px black; text-align:left;'>";
echo "<tr><th>Product</th><th>Stock</th><th>ID</th></tr>";

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "name";

echo "<td>";
try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $stmt = $conn->prepare("SELECT product_name, product_quantity, product_id FROM product ");
    $stmt->execute();

    // set the resulting array to associative
    $result = $stmt->fetchAll(PDO::FETCH_OBJ);

    foreach ($result as $v) {
      echo "<td style='width:150px;border:1px solid black;'>";
      echo "</td>";
      echo '<tr>';
      echo '<td>' .$v->product_name. "</td>";
      echo '<td>' . $v->product_quantity. "</td>";
      echo '<td>' . $v->product_id.  "</td>";
      echo '<td> <button type="submit" onclick="askForSell()">  Sell  </button>  </td>
            <td> <button type="submit" onclick="askForBuy()">   Buy   </button> </td>';
     echo '</tr>';

     }
      echo "</td>";
}

catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}
$conn = null;
echo "</table>";

?>

<br>
<br>
<br>

</form>
<script>
form=document.getElementById("sellAndBuy");
function askForSell() {
    form.action="sellAndBuy.php";
    form.submit();
}
function askForBuy() {
    form.action="buyProducts.php";
    form.submit();
}

</script>


</body>
</html>

【问题讨论】:

    标签: php forms dynamic html-table


    【解决方案1】:

    您可以通过函数传入产品 ID,然后将其填充到输入字段中,例如:

    ...
    
        echo '<td> <button type="submit" onclick="askForSell('.$v->product_id.')">  Sell  </button>  </td>
                    <td> <button type="submit" onclick="askForBuy('.$v->product_id.')">   Buy   </button> </td>';
    
    ...
    
    function askForSell(id) {
        form.action="sellAndBuy.php";
        form['id'].value = id;
        form.submit();
    }
    function askForBuy(id) {
        form.action="buyProducts.php";
        form['id'].value = id;
        form.submit();
    }
    

    【讨论】:

    • 我按照你的建议试过了,但是生成的值为空。
    • 我搞定了。之前空值的原因是我在 askForSell(id) 中错过了“id”。非常感谢您的帮助!
    【解决方案2】:

    你可以在没有JS的情况下根据按下的按钮提交变量:

    <button type="submit" name="id" value="1">Sell</button>
    

    此外,按钮可以包含formaction 属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-26
      • 1970-01-01
      • 2013-05-18
      • 2017-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多