未使用 isset() 函数调用按钮
Button not being called with isset() function
我在尝试构建一个非常简单的库存管理系统时遇到了一些问题。
我正在做的是在 html table 中显示数据库中的数据,并在每一行中创建两个按钮:一个用于编辑,一个用于删除项目。问题是我无法使用 isset()
函数调用这些按钮,我不明白为什么。我试图为这些创建一个特定的功能,但仍然不起作用。有人知道吗?
代码如下:
P.S.: 不要介意小的英文错误或缺少括号。我不得不稍微更改一下代码。
function searchTablet(){
if(isset($_POST['btnSearchTablet'])){
global $connection;
$query="SELECT * FROM tablet";
$run=mysqli_query($connection, $query);
echo "<table class='table table-striped'>";
echo "<thead>";
echo "<tr>";
echo "<th>ID</th>";
echo "<th>Brand</th>";
echo "<th>Model</th>";
echo "<th>Color</th>";
echo "<th>Price</th>";
echo "<th>Fabrication Date</th>";
echo "<th>Provider</th>";
echo "<th>Registration Date</th>";
echo "<th>Edit</th>";
echo "<th>Delete</th>";
echo "</tr>";
echo "</thead>";
while($obj=mysqli_fetch_object($run)){
echo "<tr>";
echo "<td>$obj->id</td>";
echo "<td>$obj->idBrand</td>";
echo "<td>$obj->idModel</td>";
echo "<td>$obj->idColor</td>";
echo "<td>$obj->price</td>";
echo "<td>$obj->fabricationDate</td>";
echo "<td>$obj->idProvider</td>";
echo "<td>$obj->registrationDate</td>";
echo "<td><a href='resultTablet.php?btnEditTablet{$obj->id}'class='btn btn-primary' name='btnEditTablet'>Alterar</a></td>";
echo "<td><a href='resultTablet.php?btnDeleteTablet{$obj->id}' class='btn btn-danger' name='btnDeleteTablet'>Excluir</a></td>";
echo "</tr>";
if(isset($_POST["btnDeleteTablet{$obj->id}"])){
$idTablet=$obj->id;
$delQuery="DELETE FROM tablet WHERE id='$idTablet'";
$delRun=mysqli_query($connection, $delQuery);
if($delRun){
echo "<div class='alert alert-success' role='alert'>Device was successfuly deleted.</div>";
}else{
echo "<div class='alert alert-danger' role='alert'>Error.</div>";
}
}
}
如果提交的是空字符串,isset()
将 return false,因此请尝试使用 !empty()
。
一如既往...看起来 Whosebug 用户是有毒且不友好的,甚至不尝试帮助想要进入编程的新人。
所以我会尽力帮助你。
如果您通过 URL 传递参数,则必须使用 $_GET
而不是 $_POST
方法。
此外,我会改变
<a href='resultTablet.php?btnEditTablet{$obj->id}'class='btn btn-primary' name='btnEditTablet'>Alterar</a>
至
<a href='resultTablet.php?btnEditTablet={$obj->id}'class='btn btn-primary' name='btnEditTablet'>Alterar</a>
所以你可以这样做:
if(isset($_GET["btnDeleteTablet"])){
你会像这样通过 $_GET
获得 id:
$idTablet=$_GET["btnDeleteTablet"];
此更改后,您可以关闭之前使用的 while loop
这 if(isset($_GET["btnDeleteTablet"]))
行,
你也不需要 $obj->id
不再,因为您将 $_GET
数据与 while loop
或您之前编写的任何其他代码分离。
另外,我看到你在 table 中忘记了 <tbody> </tbody>
。
编辑:
另外,你在做什么
if(isset($_POST['btnSearchTablet'])){
单击删除按钮后,这将不起作用。
你不应该那样使用它,因为点击删除按钮后你的页面将转到 URL 和 $_GET
参数,如果逻辑会阻止
if(isset($_GET["btnDeleteTablet"])){
逻辑正常。
所以整体移动
if(isset($_GET["btnDeleteTablet"])){
...
}
共 if(isset($_POST['btnSearchTablet'])){
同时阅读 $_POST
和 $_GET
方法,阅读表单
你真的需要它。
此外,我建议您使用程序来分析请求,这样您就可以了解 post 如何移动数据。
我建议您安装 Fiddler
程序,这样您就可以看到 post
、get
数据是如何移动的。
好的,我会尝试最后修复你的代码,这样它就可以工作了:
<?php
function searchTablet(){
global $connection;
if(isset($_GET['btnDeleteTablet'])){
deleteTablet();
}
//I dont why are you using it so I commented it out.
//if(isset($_POST['btnSearchTablet'])){
//}
displaySearchTablet();
}
function displaySearchTablet(){
global $connection;
$query = "SELECT * FROM tablet";
$run = mysqli_query($connection, $query);
while($obj = mysqli_fetch_object($run)){
//Combine all rows into one variable
$table_rows .= "
<tr>
<td>{$obj->id}</td>
<td>{$obj->idBrand}</td>
<td>{$obj->idModel}</td>
<td>{$obj->idColor}</td>
<td>{$obj->price}</td>
<td>{$obj->fabricationDate}</td>
<td>{$obj->idProvider}</td>
<td>{$obj->registrationDate}</td>
<td>
<a href='resultTablet.php?btnEditTablet={$obj->id}' class='btn btn-primary' name='btnEditTablet'>Alterar</a>
</td>
<td>
<a href='resultTablet.php?btnDeleteTablet={$obj->id}' class='btn btn-danger' name='btnDeleteTablet'>Excluir</a>
</td>
</tr>";
}
$result_table =
"<table class='table table-striped'>
<thead>
<tr>
<th>ID</th>
<th>Brand</th>
<th>Model</th>
<th>Color</th>
<th>Price</th>
<th>Fabrication Date</th>
<th>Provider</th>
<th>Registration Date</th>
<th>Edit</th>
<th>Delete</th>
</tr>
</thead>
<tbody>
$table_rows
</tbody>
</table>";
echo $result_table;
}
function deleteTablet(){
global $connection;
$id = $_GET['btnDeleteTablet'];
$query = "DELETE FROM tablet WHERE id = '$id'";
$run = mysqli_query($connection, $query);
if($run){
echo "<div class='alert alert-success' role='alert'>Device was successfuly deleted.</div>";
}else{
echo "<div class='alert alert-danger' role='alert'>Error.</div>";
}
}
我说的很基础,所以你能看懂。
我没有传递参数或返回任何东西,这样你会更容易理解。
祝你编程之路顺利。
我在尝试构建一个非常简单的库存管理系统时遇到了一些问题。
我正在做的是在 html table 中显示数据库中的数据,并在每一行中创建两个按钮:一个用于编辑,一个用于删除项目。问题是我无法使用 isset()
函数调用这些按钮,我不明白为什么。我试图为这些创建一个特定的功能,但仍然不起作用。有人知道吗?
代码如下:
P.S.: 不要介意小的英文错误或缺少括号。我不得不稍微更改一下代码。
function searchTablet(){
if(isset($_POST['btnSearchTablet'])){
global $connection;
$query="SELECT * FROM tablet";
$run=mysqli_query($connection, $query);
echo "<table class='table table-striped'>";
echo "<thead>";
echo "<tr>";
echo "<th>ID</th>";
echo "<th>Brand</th>";
echo "<th>Model</th>";
echo "<th>Color</th>";
echo "<th>Price</th>";
echo "<th>Fabrication Date</th>";
echo "<th>Provider</th>";
echo "<th>Registration Date</th>";
echo "<th>Edit</th>";
echo "<th>Delete</th>";
echo "</tr>";
echo "</thead>";
while($obj=mysqli_fetch_object($run)){
echo "<tr>";
echo "<td>$obj->id</td>";
echo "<td>$obj->idBrand</td>";
echo "<td>$obj->idModel</td>";
echo "<td>$obj->idColor</td>";
echo "<td>$obj->price</td>";
echo "<td>$obj->fabricationDate</td>";
echo "<td>$obj->idProvider</td>";
echo "<td>$obj->registrationDate</td>";
echo "<td><a href='resultTablet.php?btnEditTablet{$obj->id}'class='btn btn-primary' name='btnEditTablet'>Alterar</a></td>";
echo "<td><a href='resultTablet.php?btnDeleteTablet{$obj->id}' class='btn btn-danger' name='btnDeleteTablet'>Excluir</a></td>";
echo "</tr>";
if(isset($_POST["btnDeleteTablet{$obj->id}"])){
$idTablet=$obj->id;
$delQuery="DELETE FROM tablet WHERE id='$idTablet'";
$delRun=mysqli_query($connection, $delQuery);
if($delRun){
echo "<div class='alert alert-success' role='alert'>Device was successfuly deleted.</div>";
}else{
echo "<div class='alert alert-danger' role='alert'>Error.</div>";
}
}
}
isset()
将 return false,因此请尝试使用 !empty()
。
一如既往...看起来 Whosebug 用户是有毒且不友好的,甚至不尝试帮助想要进入编程的新人。
所以我会尽力帮助你。
如果您通过 URL 传递参数,则必须使用 $_GET
而不是 $_POST
方法。
此外,我会改变
<a href='resultTablet.php?btnEditTablet{$obj->id}'class='btn btn-primary' name='btnEditTablet'>Alterar</a>
至
<a href='resultTablet.php?btnEditTablet={$obj->id}'class='btn btn-primary' name='btnEditTablet'>Alterar</a>
所以你可以这样做:
if(isset($_GET["btnDeleteTablet"])){
你会像这样通过 $_GET
获得 id:
$idTablet=$_GET["btnDeleteTablet"];
此更改后,您可以关闭之前使用的 while loop
这 if(isset($_GET["btnDeleteTablet"]))
行,
你也不需要 $obj->id
不再,因为您将 $_GET
数据与 while loop
或您之前编写的任何其他代码分离。
另外,我看到你在 table 中忘记了 <tbody> </tbody>
。
编辑:
另外,你在做什么
if(isset($_POST['btnSearchTablet'])){
单击删除按钮后,这将不起作用。
你不应该那样使用它,因为点击删除按钮后你的页面将转到 URL 和 $_GET
参数,如果逻辑会阻止
if(isset($_GET["btnDeleteTablet"])){
逻辑正常。 所以整体移动
if(isset($_GET["btnDeleteTablet"])){
...
}
共 if(isset($_POST['btnSearchTablet'])){
同时阅读 $_POST
和 $_GET
方法,阅读表单
你真的需要它。
此外,我建议您使用程序来分析请求,这样您就可以了解 post 如何移动数据。
我建议您安装 Fiddler
程序,这样您就可以看到 post
、get
数据是如何移动的。
好的,我会尝试最后修复你的代码,这样它就可以工作了:
<?php
function searchTablet(){
global $connection;
if(isset($_GET['btnDeleteTablet'])){
deleteTablet();
}
//I dont why are you using it so I commented it out.
//if(isset($_POST['btnSearchTablet'])){
//}
displaySearchTablet();
}
function displaySearchTablet(){
global $connection;
$query = "SELECT * FROM tablet";
$run = mysqli_query($connection, $query);
while($obj = mysqli_fetch_object($run)){
//Combine all rows into one variable
$table_rows .= "
<tr>
<td>{$obj->id}</td>
<td>{$obj->idBrand}</td>
<td>{$obj->idModel}</td>
<td>{$obj->idColor}</td>
<td>{$obj->price}</td>
<td>{$obj->fabricationDate}</td>
<td>{$obj->idProvider}</td>
<td>{$obj->registrationDate}</td>
<td>
<a href='resultTablet.php?btnEditTablet={$obj->id}' class='btn btn-primary' name='btnEditTablet'>Alterar</a>
</td>
<td>
<a href='resultTablet.php?btnDeleteTablet={$obj->id}' class='btn btn-danger' name='btnDeleteTablet'>Excluir</a>
</td>
</tr>";
}
$result_table =
"<table class='table table-striped'>
<thead>
<tr>
<th>ID</th>
<th>Brand</th>
<th>Model</th>
<th>Color</th>
<th>Price</th>
<th>Fabrication Date</th>
<th>Provider</th>
<th>Registration Date</th>
<th>Edit</th>
<th>Delete</th>
</tr>
</thead>
<tbody>
$table_rows
</tbody>
</table>";
echo $result_table;
}
function deleteTablet(){
global $connection;
$id = $_GET['btnDeleteTablet'];
$query = "DELETE FROM tablet WHERE id = '$id'";
$run = mysqli_query($connection, $query);
if($run){
echo "<div class='alert alert-success' role='alert'>Device was successfuly deleted.</div>";
}else{
echo "<div class='alert alert-danger' role='alert'>Error.</div>";
}
}
我说的很基础,所以你能看懂。 我没有传递参数或返回任何东西,这样你会更容易理解。
祝你编程之路顺利。