使用php单击按钮时从数据库中减少值
Posted
技术标签:
【中文标题】使用php单击按钮时从数据库中减少值【英文标题】:Decrement value from database on button click with php 【发布时间】:2018-08-20 19:23:10 【问题描述】:我正在创建一个拼车网站,我需要一些帮助。我创建了一个按钮,如果人们单击该按钮,那么汽车中的可用空间值将减一(这意味着单击它的人将保留该位置)。所以这个值必须在数据库中改变,当我刷新页面时,它会在我显示信息的表上改变。这是我到目前为止写的,但似乎没有改变。提前致谢!
<tbody>
<?php while ($row=mysqli_fetch_array($results))
?>
<tr>
<td><?php echo $row['username_krijim']; ?> </td>
<td><?php echo $row['nisja']; ?> </td>
<td><?php echo $row['destinacioni']; ?> </td>
<td><?php echo $row['data_krijim']; ?> </td>
<td><?php echo $row['ora_krijim']; ?> </td>
<td ><?php echo $row['vende_krijim']; ?> </td>
<td><?php echo $row['cmimi_krijim']; ?> </td>
<td><?php echo $row['mesazhi_krijim']; ?> </td>
<td><form action="index_show.php" method="POST"><input class="btn btn-primary" style="background:#f2545f;" type="submit" name="rezervo" value="Rezervo"></form></td>
<?php
if(isset($_POST['rezervo']))
$id_krijim=$row['id_krijimi'];
$sql = "UPDATE krijo_itinerar SET vende_krijim=vende_krijim-1 WHERE id_krijimi='$id_krijim'";
mysqli_query($db, $sql);
?>
</tr>
<?php ?>
</tbody>
【问题讨论】:
您需要将动作添加到按钮,可能通过POST使用表单或使用AJAX调用脚本 @juanbits 不熟悉 AJAX 如果你不熟悉ajax,你可以使用表单。或搜索如何做到这一点。你可以在***.com/questions/41391067/…阅读一些东西 注意:mysqli
的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query
接口混淆。在您对程序风格投入过多之前,值得转换一下。示例:$db = new mysqli(…)
和 $db->prepare("…")
程序接口是 PHP 4 时代引入的 mysqli
API 的产物,不应在新代码中使用。
警告:当使用mysqli
时,您应该使用parameterized queries 和bind_param
将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug。 切勿将$_POST
、$_GET
或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。
【参考方案1】:
您可以使用表单发送 POST 请求来告诉 PHP 进行初始化。
<td><form action="" method="POST"><input class="btn btn-primary" style="background:#f2545f;" type="button" name="rezervo" value="Rezervo"></form></td>
<?php
if (isset($rezervo))
$sql = "UPDATE krijo_itinerar SET vende_krijim=vende_krijim-1 WHERE username_krijim='".$username_krijim."'";
mysqli_query($db, $sql);
?>
我也没有看到变量$username_krijim
被设置。我不知道它是否在您的代码中的其他地方,但这也可能导致您的问题。
编辑:
好的,我看到的问题是变量没有通过 PHP 发送。我提供的之前的编辑不起作用我会尝试考虑一些事情。
【讨论】:
试过了还是不行 $username 变量是从哪里发送的? @Besart 来自数据库。这意味着我使用另一个文件,驱动程序通过表单决定他们有多少可用空间并通过该表单将其发送到数据库。在这个文件中,我现在只是连接到数据库。还有什么我应该做的吗? 您能否发布更多代码(例如设置 $username_krijim 的位置?)我担心它没有被传递给表单,因此查询不完整,因此无法执行。 我犯了一个错误,我认为应该是 id_krijimi='$id_krijimi' 。每次创建新行程时,此 ID 都会自动递增。以上是关于使用php单击按钮时从数据库中减少值的主要内容,如果未能解决你的问题,请参考以下文章