从表中为每行

时间:2018-04-14 18:16:25

标签: php mysqli

我卡住了,想看看是否有人可以帮助我。 我在bootstrap v4中构建了一个表,显示了该产品的产品和一些数据。我目前有一个按钮(带铅笔的绿色),当在每一行中点击时,我会转到另一个页面,在那里我可以看到并更新该产品的所有信息,红色按钮也可以从数据库mysqli中删除产品。 我现在要做的是在侧面添加一个保存按钮,其他颜色为蓝色,这样我就可以快速改变价格和数量并保存像pic一样的行 screen shot 第一个保存工作和数据库更新,因为它,但其余不。保存按钮什么都不做,不管我似乎尝试什么,我都不能在哪里。

我的代码:

<?

if(isset($_POST['s1']))
{

                $price = $_POST["price"];
                $quantity = $_POST["quantity"];
                $id = $_POST["id"];                 

$stmt = $con->prepare("UPDATE products set price=?, quantity=? WHERE id = 
?");    
$stmt->bind_param("ssi", $price, $quantity, $id);
$stmt->execute();
$stmt->close();

header('Location: products.php');
}
?>

  //taken out header of the table       

          <tbody>

            <tr>

<?php
     $raw_results = mysqli_query($con, "SELECT * FROM products") or 
die(mysqli_error($con));
while($results = mysqli_fetch_array($raw_results)){

?>
<form method=post action="">
              <td><input class="form-control size-id" value="<? echo 
$results['id']; ?>" name="id"></td>
              <td><? echo $results['title']; ?></td>
              <td><input class="form-control size-price" type="text" value=" 
              <? echo $results['quantity']; ?>" name="quantity"></td>                 
              <td><? echo $results['rrp']; ?></td>
              <td><input class="form-control size-price" type="text" value=" 
              <? echo $results['price']; ?>" name="price"></td>
              <td>
              <button type=submit name=s1 class="btn btn-outline-primary 
btn-sm btn-block-xs-only"> <i class="fa fa-floppy-o" aria-hidden="true"></i> 
</button> 
              <a href="edit_product.php?id=<?=$results['id']?>" class="btn 
btn-outline-success btn-sm" role="button"><i class="fa fa-pencil" aria- 
hidden="true"></i></a> 
              <a href="delete_product.php?id=<?=$results['id']?>" class="btn 
btn-outline-danger btn-sm" role="button"><i class="fa fa-times" aria- 
hidden="true"></i></a>
              </td>
 </tr>
             <?
  }
?>
          </tbody>

1 个答案:

答案 0 :(得分:0)

您将不会为此使用AJAX(异步JavaScript和XML)

https://www.w3schools.com/xml/ajax_intro.asp

这样您就可以更新数量和价格,而无需刷新整个页面。此外,不需要其中包含表格单元格的表单标记,该表格标记无效。

请仔细阅读本教程,您将了解该怎么做。如果没有,我甚至可以为您提供一个小代码示例。

以下脚本将提醒您发送到服务器的row_id和数量,而无需表单。

在我的例子中,我不是手工放置row_id,当然你的PHP脚本会处理这些事情

示例(假设index.html和echo.php在同一个文件夹中):

<强>的index.html

<html>
<head>
    <title>Example AJAX</title>
</head>
<body>

<table>
    <tr>
    <td>Row 1</td>
    <td><input id="quantity_1" type="text" size="3" name="quantity_1" /></td>
    <td><img src="save.png" onclick="save(1);" /></td>
    </tr>
    <tr>
    <td>Row 2</td>
    <td><input id="quantity_2" type="text" size="3" name="quantity_2" /></td>
    <td><img src="save.png" onclick="save(2);" /></td>
    </tr>
</table>

<script type="text/javascript">
    function save(row_id) {
    var quantity = document.getElementById('quantity_' + row_id).value;
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            alert(this.responseText);
        }
    };
    xhttp.open("GET", "echo.php?row_id=" + row_id + "&quantity=" + quantity, true);
    xhttp.send();
    }
</script>
</body>
</html>

<强> echo.php

<?php

echo 'row id: ' . intval($_GET['row_id']);
echo ' quantity: ' . intval($_GET['quantity']);

echo.php可能是你保存提交值的脚本;)但我把那部分留给你了。务必验证输入。切勿将$ _GET变量直接放在SQL查询中。