简体   繁体   English

PHP:HTML 隐藏输入值在查询 mysql 时生成错误

[英]PHP: A HTML hidden input value generates an error upon querying mysql

I'm working on a webpage where I allow users to edit their car information.我正在开发一个网页,允许用户编辑他们的汽车信息。 In the mainlining, there is an edit button (input - type text with a hidden key value) where it takes the user to this "edit car info" page.在主线中,有一个编辑按钮(输入 - 键入带有隐藏键值的文本),它将用户带到这个“编辑汽车信息”页面。 Initially, once the page is opened for the first time, this hidden value is used to query the database, retrieve original information and and set them as placeholders for the field.最初,一旦第一次打开页面,这个隐藏值将用于查询数据库、检索原始信息并将它们设置为字段的占位符。 The user can write information in the input field then press the "submit edit" button which then updates the row in the database table.用户可以在输入字段中写入信息,然后按“提交编辑”按钮,然后更新数据库表中的行。 However, I get an error that the name of the hidden value is undefined.但是,我收到一个错误,即隐藏值的名称未定义。 I don't understand how it can be undefined for the update query when it was working just fine for the select query.我不明白当它对选择查询工作得很好时,它是如何为更新查询未定义的。 Can anyone shed a light on this?任何人都可以对此有所了解吗? What should I do?我该怎么办? This is a picture of the errors:这是错误的图片:

这是错误的图片

This is the mainlanding code: (hidden value is set here)这是大陆代码:(这里设置隐藏值)

<?php
$mysqli= new mysqli("localhost", "root","","Car_registration"); 
if(empty($_SESSION)) // if the session not yet started
session_start();
if(isset($_SESSION['username'])) { // if user already logged in
header("location: mainlanding_user.php"); //send to homepage
exit;
}
?> 

<!DOCTYPE html>

<html>

<head>
  <title> Car Registration: User's Mainlanding </title>
  <link href="css/style3.css" rel="stylesheet">
</head>

<body>

<header> 

<h1>Account Information</h1>
<img id="img1" src= "image/car.jpg" alt ="car image">

</header> 

<nav id='nav'>
<form action="logout.php">
<input type="submit" value="  Logout " id="button">
</form>
</nav>


<h2>Profile </h2>

<div class='container1'>

<?php 

$username="root";
$password="";
$database="Car_registration";

$mysqli= new mysqli("localhost",$username,$password,$database); 


$query= "select * from driver where username='".$_SESSION['logged_username']."'";
$result = $mysqli->query($query);


while( $row = $result->fetch_assoc() ){

echo "<div id='container'>" ;
echo "<dl> <dt>First Name</dt> <dd>".$row['Fname'];
echo "</dd> <br> <dt>Last name</dt><dd>".$row['Lname'];
echo "</dd> <br> <dt>License Number</dt><dd>".$row['license_no'];
echo "</dd> <br> <dt>Age</dt><dd>".$row['Age'];
echo "</dd> <br> <dt>Birthday</dt><dd>".$row['bdate'];
echo "</dd> <br> <dt>City</dt><dd>".$row['City'];
echo "</dd></dl>";
echo "</div>";

$license_no = $row['license_no']; //used for finding cars

}

?>


<div class="align-me">
  <div class="form-wrapper" action="search_plate_no.php">
    <form class="center">
      <input class="input-fields" name="search" type="text" placeholder="Search a plate number">
      <input class="input-fields submit" name="find" type="submit" value="Search">
    </form>
  </div>
</div>






<h3> Registered Cars </h3>

<div class='container2'>

<?php 

$username="root";
$password="";
$database="Car_registration";

$mysqli= new mysqli("localhost",$username,$password,$database); 


$query= "select * from cars where license_no='".$license_no."'";
$result = $mysqli->query($query);


echo "<table border=1>
<tr>
<th>Plate No.</th>
<th>License No.</th>
<th>Car Type</th>
<th>Fines</th>
<th>City</th>
<th>Edit</th>
<th>Delete</th>
</tr>";


while ($temp = $result->fetch_assoc()){
?> 

<tr>
    <td><?php echo $temp['Plate_no']; ?></td>
    <td><?php echo $temp['license_no']; ?></td>
    <td><?php echo $temp['Car_type']; ?></td>   
    <td><?php echo $temp['Fines']; ?></td>
    <td><?php echo $temp['city']; ?></td>         
   <td>
   <form action = "edit_car.php" method="post">
      <input type="hidden" name="id" value="<?php echo $temp['Plate_no']; ?>">
      <input type="submit" name="edit" value="Edit">
   </form>
</td>

<td>
   <form action = "delete_car.php" method="post">
      <input type="hidden" name="id" value="<?php echo $temp['Plate_no']; ?>">
      <input type="submit" name="delete" value="Delete">
   </form>
</td>
    
  </tr> 
<?php
}
?>
</table>

</div>

 
<form action="register_car.php">
<input type="submit" value="  Register Car " id="button2">
</form>

<footer> 
<h4> All rights belong to Car Registration Inc. </h4>
<img id="img3" src= "image/license.png" alt ="license plates image">

</footer>


</body>

</html>

Edit car page: (Error is generated here)编辑汽车页面:(此处产生错误)

 <!DOCTYPE html>
<html>

<head>
  <title> Edit Car Information Page </title>
  <link href="css/style2.css" rel="stylesheet">
   
</head>

<body>

<div class="container">

<header> 
<h1>Edit Car Information </h1>
<img id="img1" src= "image/register.png" alt ="Registration image">
</header>  

<?php 

$username="root";
$password="";
$database="Car_registration";

$mysqli= new mysqli("localhost",$username,$password,$database); 

$plate_no= $_POST["id"]; //This line causes an error 
$_SESSION['plateNo'] = $plate_no; 

$query= "select * from cars where Plate_no='".$plate_no."'";
$result = $mysqli->query($query);  

while( $row = $result->fetch_assoc()){

$plate_no = $row['Plate_no']; 
$car_type = $row['Car_type']; 
}

?>

<main>
<h2> You can only edit the following information: </h2>

<form action="" method="post">

<label for="car_type_input">Car Type:</label>
<input type="text" placeholder="<?php echo $car_type?>" id="car_type_input" name="car_type_input"><br><br>


<div class="vertical-center">
<input type="submit" value="  Submit Edit "  name="button1" id="button1">
</div>

</form>

<?php 

$username="root";
$password="";
$database="Car_registration";

$mysqli= new mysqli("localhost",$username,$password,$database); 

if( isset($_POST['button1']) ){  //If user changed field, take value. If not, keep old value. 

if( !empty($_POST['car_type_input']) ){ //If there is user input 
$car_type_2 = $_POST['car_type_input']; 
$query= "update cars set Car_type='".$car_type_2."' WHERE Plate_no='".$_SESSION['plateNo']."'";
}


if ($mysqli->query($query))
echo "Fields updated successfuly!";
else 
echo "Update Fields Failed!";

}

?>


</main>
<footer> 
<h3> All rights belong to Car Registration Inc. </h3>
<img id="img3" src= "image/license.png" alt ="license plates image">

</footer>

</div>
</body>

</html>
Use $plate_no= $_POST['id']; instead of $plate_no= $_POST["id"];

Here why you close the while loop ??这里为什么要关闭 while 循环?

while ($temp = $result->fetch_assoc()){
?> 

and here too还有这里

<?php
}

Try this:尝试这个:

print"<h3> Registered Cars </h3>

<div class='container2'>";


$username="root";
$password="";
$database="Car_registration";

$mysqli= new mysqli("localhost",$username,$password,$database); 


$query= "select * from cars where license_no='".$license_no."'";
$result = $mysqli->query($query);


echo "<table border=1>
<tr>
<th>Plate No.</th>
<th>License No.</th>
<th>Car Type</th>
<th>Fines</th>
<th>City</th>
<th>Edit</th>
<th>Delete</th>
</tr>";


while ($temp = $result->fetch_assoc())
{

print"
<tr>
    <td><?php echo $temp['Plate_no']; ?></td>
    <td><?php echo $temp['license_no']; ?></td>
    <td><?php echo $temp['Car_type']; ?></td>   
    <td><?php echo $temp['Fines']; ?></td>
    <td><?php echo $temp['city']; ?></td>         
   <td>
   <form action = "edit_car.php" method="post">
      <input type="hidden" name="id" value="<?php echo $temp['Plate_no']; ?>">
      <input type="submit" name="edit" value="Edit">
   </form>
</td>

<td>
   <form action = "delete_car.php" method="post">
      <input type="hidden" name="id" value="<?php echo $temp['Plate_no']; ?>">
      <input type="submit" name="delete" value="Delete">
   </form>
</td>
    
  </tr> ";

}
print"</table>

</div>";

you are not sending id that's because error appears use this code to check if id exists first:您没有发送id那是因为出现错误,首先使用此代码检查id存在:

$plate_no='';
$car_type = '';
if(isset($_POST["id"])){
    $plate_no= $_POST["id"]; //This line causes an error 
    $_SESSION['plateNo'] = $plate_no; 

    $query= "select * from cars where Plate_no='".$plate_no."'";
    $result = $mysqli->query($query);  

    while( $row = $result->fetch_assoc()){
        $plate_no = $row['Plate_no']; 
        $car_type = $row['Car_type']; 
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM