PHP: скрытое входное значение HTML генерирует ошибку при запросе mysql

#php #html #mysql #html-input

#php #HTML #mysql #html-ввод

Вопрос:

Я работаю над веб-страницей, где я разрешаю пользователям редактировать информацию о своем автомобиле. В основной строке есть кнопка редактирования (ввод текста со скрытым значением ключа), которая переводит пользователя на страницу «редактировать информацию об автомобиле». Первоначально, как только страница открывается в первый раз, это скрытое значение используется для запроса к базе данных, извлечения исходной информации и установки их в качестве заполнителей для поля. Пользователь может ввести информацию в поле ввода, затем нажать кнопку «отправить редактирование», которая затем обновляет строку в таблице базы данных. Однако я получаю сообщение об ошибке, что имя скрытого значения не определено. Я не понимаю, как оно может быть неопределенным для запроса обновления, когда оно отлично работало для запроса выбора. Кто-нибудь может пролить свет на это? Что мне делать? Это изображение ошибок:

Это изображение ошибок

Это основной исходный код: (здесь задается скрытое значение)

 <?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>

 

Редактировать страницу автомобиля: (Здесь генерируется ошибка)

  <!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>
 

Комментарии:

1. Не публикуйте изображения текста

2. $plate_no= $_POST["id"]; //This line causes an error В чем ошибка?

3. Ошибка находится на картинке, которую я связал. Это «неопределенный индекс: идентификатор» в строке 27

Ответ №1:

 Use $plate_no= $_POST['id']; instead of $plate_no= $_POST["id"];
 

Ответ №2:

Вот почему вы закрываете цикл while??

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

и здесь тоже

 <?php
}
 

Попробуйте это:

 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>";

 

Комментарии:

1. Это для того, чтобы я мог распечатать таблицу в html вместо того, чтобы повторять html внутри кода php. Он отлично работает так, как я это делаю, но спасибо за предложение!

Ответ №3:

вы не отправляете 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']; 
    }
}
 

Комментарии:

1. Я попробую это сделать и дам вам знать, как все пройдет. Какие действия я должен предпринять в случае, если id не задан? Я пытался отправить plate_no в качестве переменной сеанса

2. это ваше решение, вы можете проверить это и сделать это обязательным или сделать что-то еще