在字段为空时按 Php 编辑页面中的 'update' 按钮将从 URL 中删除 ID
Pressing 'update' button in my Php edit page while a field is empty removes the id from the URL
所以我有一个 PHP CRUD 系统,可以添加、编辑和删除条目 from/to 一个数据库。有问题的 CMS 是一种药物 table。我可以使用添加按钮并填写表格向此 table 添加药物,我也可以通过简单地删除它们来删除药物。但问题之一是系统的 edit/update 部分。
编辑功能本身工作正常,我能够编辑一个条目,它将 post 到数据库并显示在 table 中,因为用户被重定向回 table 显示所有药物的页面,但是,当我从字段中删除文本,将其留空并按更新时,我收到一条错误消息,提示文本字段为空,但是,我也注意到 id页面顶部的不再存在,这给了我一个未定义的 index:error。
我已将问题缩小为仅仅是因为输入类型 "submit" 出于某种原因将其删除。
URL 在文本字段为空的情况下按更新之前:
php_files/DrugEdit.php?Drug_ID=23
URL 在文本字段为空的情况下按更新后:
eMAR/php_files/DrugEdit.php
程序如何工作(附代码):
Php 通过从 URL 获取 Drug_ID 创建的变量(在本例中为 23)
$Drug_ID = $_GET['Drug_ID'];
然后从数据库中获取字段数据赋值给变量
$result = mysqli_query($conn, "SELECT * FROM drugs WHERE Drug_ID=$Drug_ID");
while($res = mysqli_fetch_array($result))
{
$Drug_Name = $res['Drug_Name'];
$Allergies = $res['Allergies'];
$Side_effects = $res['Side_effects'];
$Type_of_Medication = $res['Type_of_Medication'];
$Dosage = $res['Dosage'];
}
?>
然后数据以我可以编辑数据的形式显示
<form name="form1" method="post" action="DrugEdit.php">
<table border="0">
<tr>
<td>Drug_Name <?php echo $drug_name_error ?></td>
<td><input type="text" Name="Drug_Name" value="<?php echo $Drug_Name;?>"></td>
</tr>
<tr>
<td>Allergies</td>
<td><input type="text" Name="Allergies" value="<?php echo $Allergies;?>"></td>
</tr>
<tr>
<td>Side_effects</td>
<td><input type="text" Name="Side_effects" value="<?php echo $Side_effects;?>"></td>
</tr>
<tr>
<td>Type_of_Medication</td>
<td><input type="text" Name="Type_of_Medication" value="<?php echo $Type_of_Medication;?>"></td>
</tr>
<tr>
<td>Dosage</td>
<td><input type="text" Name="Dosage" value="<?php echo $Dosage;?>"></td>
</tr>
<tr>
<td><input type="hidden" Name="Drug_ID" value=<?php echo $_GET['Drug_ID'];?>></td>
<td><input type="submit" Name="update" value="Update"> </td>
</tr>
</table>
</form>
如果按下更新按钮,它会运行下面的代码块:
$drug_name_error = " ";
if(isset($_POST['update']))
{
$Drug_ID = $_POST['Drug_ID'];
$Drug_Name=$_POST['Drug_Name'];
$Allergies=$_POST['Allergies'];
$Side_effects=$_POST['Side_effects'];
$Type_of_Medication=$_POST['Type_of_Medication'];
$Dosage=$_POST['Dosage'];
// checking empty fields
if(empty($Drug_Name) || empty($Allergies) || empty($Side_effects) || empty($Type_of_Medication) || empty($Dosage)) {
if(empty($Drug_Name)) {
$drug_name_error = "<font color='red'>Drug_Name field is empty.</font><br/>";
}
if(empty($Allergies)) {
echo "<font color='red'>Allergies field is empty.</font><br/>";
}
if(empty($Side_effects)) {
echo "<font color='red'>Side_effects field is empty.</font><br/>";
}
if(empty($Type_of_Medication)) {
echo "<font color='red'>Type_of_Medication field is empty.</font><br/>";
}
if(empty($Dosage)) {
echo "<font color='red'>Dosage field is empty.</font><br/>";
}
} else {
//updating the table
$result = mysqli_query($conn, "UPDATE drugs SET Drug_Name='$Drug_Name' ,Allergies='$Allergies' ,Side_effects='$Side_effects' ,Type_of_Medication='$Type_of_Medication',Dosage='$Dosage' WHERE Drug_ID=$Drug_ID");
//redirecting to the display page. In our case, it is index.php
header("Location: ../drug_manager.php");
}
}
感谢您花时间阅读我的问题。希望我已经为您提供了足够的信息。
input type "submit" removes it for some reason
因为您正在提交表单,并且表单提交操作的 URL 在 <form>
元素中定义:
<form name="form1" method="post" action="DrugEdit.php">
请注意 URL 上没有 Drug_ID
值。但是,在表单处理代码中,您并不是在 URL 中 寻找 ,而是在 post:[=17] 的形式中寻找它=]
$Drug_ID = $_POST['Drug_ID'];
所以我不太确定你是从哪里得到这个错误的。但是,如果在您的表单逻辑中的某处您正在 也 寻找 $_GET['Drug_ID']
,或者只是希望它位于 URL 上以满足某些下游需求,那么您可以只需将其添加到 URL:
<form name="form1" method="post" action="DrugEdit.php?Drug_ID=<?php echo $_GET['Drug_ID'];?>">
所以我有一个 PHP CRUD 系统,可以添加、编辑和删除条目 from/to 一个数据库。有问题的 CMS 是一种药物 table。我可以使用添加按钮并填写表格向此 table 添加药物,我也可以通过简单地删除它们来删除药物。但问题之一是系统的 edit/update 部分。
编辑功能本身工作正常,我能够编辑一个条目,它将 post 到数据库并显示在 table 中,因为用户被重定向回 table 显示所有药物的页面,但是,当我从字段中删除文本,将其留空并按更新时,我收到一条错误消息,提示文本字段为空,但是,我也注意到 id页面顶部的不再存在,这给了我一个未定义的 index:error。
我已将问题缩小为仅仅是因为输入类型 "submit" 出于某种原因将其删除。
URL 在文本字段为空的情况下按更新之前: php_files/DrugEdit.php?Drug_ID=23
URL 在文本字段为空的情况下按更新后: eMAR/php_files/DrugEdit.php
程序如何工作(附代码):
Php 通过从 URL 获取 Drug_ID 创建的变量(在本例中为 23)
$Drug_ID = $_GET['Drug_ID'];
然后从数据库中获取字段数据赋值给变量
$result = mysqli_query($conn, "SELECT * FROM drugs WHERE Drug_ID=$Drug_ID");
while($res = mysqli_fetch_array($result))
{
$Drug_Name = $res['Drug_Name'];
$Allergies = $res['Allergies'];
$Side_effects = $res['Side_effects'];
$Type_of_Medication = $res['Type_of_Medication'];
$Dosage = $res['Dosage'];
}
?>
然后数据以我可以编辑数据的形式显示
<form name="form1" method="post" action="DrugEdit.php">
<table border="0">
<tr>
<td>Drug_Name <?php echo $drug_name_error ?></td>
<td><input type="text" Name="Drug_Name" value="<?php echo $Drug_Name;?>"></td>
</tr>
<tr>
<td>Allergies</td>
<td><input type="text" Name="Allergies" value="<?php echo $Allergies;?>"></td>
</tr>
<tr>
<td>Side_effects</td>
<td><input type="text" Name="Side_effects" value="<?php echo $Side_effects;?>"></td>
</tr>
<tr>
<td>Type_of_Medication</td>
<td><input type="text" Name="Type_of_Medication" value="<?php echo $Type_of_Medication;?>"></td>
</tr>
<tr>
<td>Dosage</td>
<td><input type="text" Name="Dosage" value="<?php echo $Dosage;?>"></td>
</tr>
<tr>
<td><input type="hidden" Name="Drug_ID" value=<?php echo $_GET['Drug_ID'];?>></td>
<td><input type="submit" Name="update" value="Update"> </td>
</tr>
</table>
</form>
如果按下更新按钮,它会运行下面的代码块:
$drug_name_error = " ";
if(isset($_POST['update']))
{
$Drug_ID = $_POST['Drug_ID'];
$Drug_Name=$_POST['Drug_Name'];
$Allergies=$_POST['Allergies'];
$Side_effects=$_POST['Side_effects'];
$Type_of_Medication=$_POST['Type_of_Medication'];
$Dosage=$_POST['Dosage'];
// checking empty fields
if(empty($Drug_Name) || empty($Allergies) || empty($Side_effects) || empty($Type_of_Medication) || empty($Dosage)) {
if(empty($Drug_Name)) {
$drug_name_error = "<font color='red'>Drug_Name field is empty.</font><br/>";
}
if(empty($Allergies)) {
echo "<font color='red'>Allergies field is empty.</font><br/>";
}
if(empty($Side_effects)) {
echo "<font color='red'>Side_effects field is empty.</font><br/>";
}
if(empty($Type_of_Medication)) {
echo "<font color='red'>Type_of_Medication field is empty.</font><br/>";
}
if(empty($Dosage)) {
echo "<font color='red'>Dosage field is empty.</font><br/>";
}
} else {
//updating the table
$result = mysqli_query($conn, "UPDATE drugs SET Drug_Name='$Drug_Name' ,Allergies='$Allergies' ,Side_effects='$Side_effects' ,Type_of_Medication='$Type_of_Medication',Dosage='$Dosage' WHERE Drug_ID=$Drug_ID");
//redirecting to the display page. In our case, it is index.php
header("Location: ../drug_manager.php");
}
}
感谢您花时间阅读我的问题。希望我已经为您提供了足够的信息。
input type "submit" removes it for some reason
因为您正在提交表单,并且表单提交操作的 URL 在 <form>
元素中定义:
<form name="form1" method="post" action="DrugEdit.php">
请注意 URL 上没有 Drug_ID
值。但是,在表单处理代码中,您并不是在 URL 中 寻找 ,而是在 post:[=17] 的形式中寻找它=]
$Drug_ID = $_POST['Drug_ID'];
所以我不太确定你是从哪里得到这个错误的。但是,如果在您的表单逻辑中的某处您正在 也 寻找 $_GET['Drug_ID']
,或者只是希望它位于 URL 上以满足某些下游需求,那么您可以只需将其添加到 URL:
<form name="form1" method="post" action="DrugEdit.php?Drug_ID=<?php echo $_GET['Drug_ID'];?>">