Php + MySQL редактирование \ форма обновления

0

Я попытался изменить свои данные в БД, но он разбился и сказал, что мои переменные не определены. После ввода команды isset ($ _ POST) мои данные не редактируются в БД с сообщением "Не обновлено". Вот мой файл редактирования:

  <?php

 // connect to the database

  include('mysql_connect.php');

// get results from database

  $result = mysqli_query($conn,"SELECT * FROM products")

  or die(mysqli_error());
 ?>

<html>
 <head>
<title>Update Data</title>
<link rel="stylesheet"  href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" >
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
</head>
 <body>
<h1>Product list update</h1>
<hr>
<table style=" width:'50%'!important " class='table'>
  <tr bgcolor='#CCCCCC'>
   // Table 
      <th>SKU</th>
      <th>Name</th>
      <th>Price</th>
      <th>Type</th>
      <th>Details</th>
  </tr>

 <?php
 while ($res = mysqli_fetch_array($result)){

 echo "<tr><form action=update.php method=post>";
 echo "<td><input type=text name=sku_p value='".$res['sku_product']."'></td>";
 echo "<td><input type=text name=name_p value='".$res['name_product']."'></td>";
 echo "<td><input type=text name=price_p value='".$res['price_product']."'></td>";
 echo "<td><input type=text name=type_p value='".$res['type_product']."'></td>";
 echo "<td>
      Size for DVD: <input type=text name=sizedvd_p value='".$res['sizedvd_product']."'><br>
      Weight for Book: <input type=text name=weightbook_p value='".$res['weightbook_product']."'><br>
      For Furniture<br>
      H: <input type=text name=heightfurn_p value='".$res['heightfurn_product']."'><br>
      W: <input type=text name=widthfurn_p value='".$res['widthfurn_product']."'><br>
      L: <input type=text name=lengthfurn_p value='".$res['lengthfurn_product']."'><br></td>";

  echo "<input type=hidden name=id_p value='".$res['id_product']."'>";

  echo "</form></tr>";

  }
  ?>
 <a href="index.php">Home</a><br>
 <a href="update.php"><input type="submit" name="update" value="Submit"></a>
   </table>
   </body>
 </html>

И вот файл update.php, который не может обновить мои данные в DB

<?php 
// connect to the database

$conn = mysqli_connect('localhost', 'root', '');

//Select DB
mysqli_select_db($conn, 'product_list');


// Update (in this case i have problems, which can't give an opportunity to change data in DB)

if(isset($_POST['update'])){

 $result = mysqli_query($conn, "UPDATE products SET name_product='$_POST[name_p]', price_product='$_POST[price_p]', sku_product='$_POST[sku_p]', type_product='$_POST[type_p]',
    sizedvd_product='$_POST[sizedvd_p]', weightbook_product='$_POST[weightbook_p]', heightfurn_product='$_POST[heightfurn_p]', widthfurn_product='$_POST[widthfurn_p]', lengthfurn_product='$_POST[lengthfurn_p]'
    WHERE id_product='$_POST[id_p]' ");

}
   echo "Not Update";

?>
  • 0
    Хорошей практикой считается цитирование ваших свойств HTML.
  • 0
    Я не верю, что $_POST[name_p] является допустимым синтаксисом.
Показать ещё 9 комментариев
Теги:

2 ответа

0
Лучший ответ

Проверьте приведенный ниже код и посмотрите, работает ли он. Дайте мне знать, какую ошибку вы получите.

<?php
// connect to the database
include('mysql_connect.php');
// get results from database
$result = mysqli_query($conn,"SELECT * FROM products");
or die(mysqli_error());
?>
<html>
<head>
    <title>Update Data</title>
    <link rel="stylesheet"  href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" >
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
</head>
<body>
    <h1>Product list update</h1>
    <hr>
    <table style=" width:'50%'!important " class='table'>
        <tr bgcolor='#CCCCCC'>
            <th>SKU</th>
            <th>Name</th>
            <th>Price</th>
            <th>Type</th>
            <th>Details</th>
        </tr>
        <?php while ($res = mysqli_fetch_array($result)) { ?>
        <tr>
            <form action="update.php" method="post">
                <td><input type="text" name="sku_p" value="<?php echo $res['sku_product']; ?>"></td>
                <td><input type="text" name="name_p" value="<?php echo $res['name_product']; ?>"></td>
                <td><input type="text" name="price_p" value="<?php echo $res['price_product']; ?>"></td>
                <td><input type="text" name="type_p" value="<?php echo $res['type_product']; ?>"></td>
                <td>
                    Size for DVD: <input type="text" name="sizedvd_p" value="<?php echo $res['sizedvd_product']; ?>"><br>
                    Weight for Book: <input type="text" name="weightbook_p" value="<?php echo $res['weightbook_product']; ?>"><br>
                    For Furniture<br>
                    H: <input type="text" name="heightfurn_p" value="<?php echo $res['heightfurn_product']; ?>"><br>
                    W: <input type="text" name="widthfurn_p" value="<?php echo $res['widthfurn_product']; ?>"><br>
                    L: <input type="text" name="lengthfurn_p" value="<?php echo $res['lengthfurn_product']; ?>"><br>
                </td>
                <input type="hidden" name="id_p" value="<?php echo $res['id_product']; ?>">
                <input type="submit" name="update" value="Submit">
            </form>
        </tr>
        <?php } ?>
        <a href="index.php">Home</a>
    </table>
</body>
</html>

и ваш update.php

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "product_list";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

if (isset($_POST['update'])) {
    $sql = "UPDATE products SET name_product = '$_POST[name_p]', price_product = '$_POST[price_p]', sku_product = '$_POST[sku_p]', type_product = '$_POST[type_p]', sizedvd_product = '$_POST[sizedvd_p]', weightbook_product = '$_POST[weightbook_p]', heightfurn_product = '$_POST[heightfurn_p]', widthfurn_product = '$_POST[widthfurn_p]', lengthfurn_product = '$_POST[lengthfurn_p]', WHERE id_product = '$_POST[id_p]'";
} else {
    echo "Nothing was posted";
}

if (mysqli_query($conn, $sql)) {
    echo "Record updated successfully";
} else {
    echo "Error updating record: " . mysqli_error($conn);
}

mysqli_close($conn);
?>
  • 0
    синтаксическая ошибка "или умереть" имеет перед собой точку с запятой.
  • 0
    @ JeanPaul98 Это работает, спасибо!
0

Вы должны использовать тэг <form> вне цикла while. Теги <form> используются только один раз (не в цикле).

Ваш HTML-код должен быть:

<?php

// connect to the database

include('mysql_connect.php');

// get results from database

$result = mysqli_query($conn,"SELECT * FROM products")

or die(mysqli_error());

?>

<html>
<head>
<title>Update Data</title>
<link rel="stylesheet"  href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" >
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
</head>
<body>
<h1>Product list update</h1>
<hr>

<form action=update.php method=post>

<table style=" width:'50%'!important " class='table'>
  <tr bgcolor='#CCCCCC'>
      <th>SKU</th>
      <th>Name</th>
      <th>Price</th>
      <th>Type</th>
      <th>Details</th>
  </tr>

 <?php
 while ($res = mysqli_fetch_array($result)){

 echo "<tr>";
 echo "<td><input type=text name=sku_p value='".$res['sku_product']."'></td>";
 echo "<td><input type=text name=name_p value='".$res['name_product']."'></td>";
 echo "<td><input type=text name=price_p value='".$res['price_product']."'></td>";
 echo "<td><input type=text name=type_p value='".$res['type_product']."'></td>";
 echo "<td>
      Size for DVD: <input type=text name=sizedvd_p value='".$res['sizedvd_product']."'><br>
      Weight for Book: <input type=text name=weightbook_p value='".$res['weightbook_product']."'><br>
      For Furniture<br>
      H: <input type=text name=heightfurn_p value='".$res['heightfurn_product']."'><br>
      W: <input type=text name=widthfurn_p value='".$res['widthfurn_product']."'><br>
      L: <input type=text name=lengthfurn_p value='".$res['lengthfurn_product']."'><br></td>";

  echo "<input type=hidden name=id_p value='".$res['id_product']."'>";

  echo "</tr>";

  }
  ?>
  <a href="index.php">Home</a><br>
  <input type="submit" name="update" value="Submit">

 </table>

 </form>
 </body>
 </html>

И файл.php должен быть:

<?php

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "product_list";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

if (isset($_POST['update'])) {
    $sql = "UPDATE products SET name_product = '$_POST[name_p]', price_product = '$_POST[price_p]', sku_product = '$_POST[sku_p]', type_product = '$_POST[type_p]', sizedvd_product = '$_POST[sizedvd_p]', weightbook_product = '$_POST[weightbook_p]', heightfurn_product = '$_POST[heightfurn_p]', widthfurn_product = '$_POST[widthfurn_p]', lengthfurn_product = '$_POST[lengthfurn_p]', WHERE id_product = '$_POST[id_p]'";

     mysqli_query($conn, $sql);

} else {
    echo "Nothing was posted";
}

mysqli_close($conn);

?>
  • 0
    Ничего не произошло, просто показывалось пустое поле без сообщения, когда isset($_POST['update']) но если я поставил isset($_POST['Submit']) я могу видеть только сообщение "ничего не было опубликовано"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню