Удалить из базы данных MySQL, форма не отображается в PHP - PullRequest
0 голосов
/ 29 марта 2019

Я не знаю, что я делаю неправильно, но моя форма не отображается.

Вот код:

PostDelete.php:

<?php

session_start();

$username=$_SESSION['uname'];

// Process delete operation after confirmation
if(isset($_POST["pid"]) && !empty($_POST["pid"])){

    $cn=mysqli_connect("localhost", "root", "", "imedtalks");
    
    // Prepare a delete statement
    $sql = "DELETE FROM posts WHERE pid = ?";
    
    if($stmt = mysqli_prepare($cn, $sql)){
        // Bind variables to the prepared statement as parameters
        mysqli_stmt_bind_param($stmt, "i", $param_pid);
        
        // Set parameters
        $param_pid = trim($_POST["pid"]);
        
        // Attempt to execute the prepared statement
        if(mysqli_stmt_execute($stmt)){
            // Records deleted successfully. Redirect to landing page
            header("location: CAposts.php");
            exit();
        } else{
            echo "Oops! Something went wrong. Please try again later.";
        }
    }
     
    // Close statement
    mysqli_stmt_close($stmt);
    
    // Close connection
    mysqli_close($cn);
} else{
    // Check existence of id parameter
    if(empty(trim($_GET["pid"]))){
        // URL doesn't contain id parameter. Redirect to error page
        header("location: CAposts.php");
        exit();
    }
}
?>




  <html>

  <head>
    <title>Delete PostID-
      <?php echo $_GET["pid"];?>
    </title>

    <link href="./css/bootstrap.min.css" rel="stylesheet" />
    <script src="./scripts/jquery-3.3.1.min.js"></script>
    <script src="./scripts/bootstrap.min.js"></script>


    <style>
      
      .wrapper {
        width: 500px;
        margin: 0 auto;
      }
    </style>

  </head>

  <body>


    <div class="wrapper">
      <div class="container-fluid">
        <div class="row">
          <div class="col-md-12">
            <div class="page-header">
              <h1 class="text-center">Delete Post</h1>
            </div>
            <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="POST">
              <div class="alert alert-danger fade">
                <input type="hidden" name="pid" value="<?php echo trim($_GET[" pid "]); ?>"/>
                <div>Are you sure you want to delete this record?</div><br>
                <div>
                  <button type="submit" name="yes" class="btn btn-danger">Yes</button>
                  <a href="CAposts.php"><button type="button" name="no" class="btn btn-primary">No</button></a>
                </div>
              </div>
            </form>
          </div>
        </div>
      </div>
    </div>

  </body>

  </html>

Здесь я пытаюсь удалить строку, используя pid, полученный из URL-адреса, то есть переданного с предыдущей страницы.

Я просто хочу отобразить предупреждение, по выбору пользователя, если нажата кнопка да, страница вызывается снова, чтобы выполнить запрос sql.

Но я не знаю почему, но там появляется только заголовок «Удалить сообщение», и форма пропускается.

Я здесь использую Bootstrap 4.

1 Ответ

1 голос
/ 29 марта 2019

Это потому, что вы не инициализировали переменную перед использованием.

Поместите этот оператор:

$param_pid = trim($_POST["pid"]);

До:

mysqli_stmt_bind_param($stmt, "i", $param_pid);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...