WordPress

php — Jak zapobiec dodawaniu danych do bazy danych localhost po odświeżeniu?

  • 4 maja, 2020
  • 3 min read
php — Jak zapobiec dodawaniu danych do bazy danych localhost po odświeżeniu?


-3

Obecnie próbuję przesłać dane do bazy danych, co udało mi się pomyślnie wykonać. Następnie wyświetlam go na editPage.php i mam opcję usunięcia dowolnych danych wprowadzonych do bazy danych. Problem polega na tym, że za każdym razem, gdy usuwam wiersz danych z bazy danych, moja strona jest odświeżana, a następnie te same dane są ponownie wprowadzane do bazy danych. Jak mogę temu zapobiec?

Oto mój editPage.php, który umożliwia wstawianie, przeglądanie i usuwanie danych.

<?php
session_start();

$connect = mysqli_connect("localhost", "root", "", "skilltask2");

if ($_SESSION["loggedin"] == false) {
    header('Location: skillsTask2.php');
}
if(isset($_POST['content']) || isset($_POST['header']) || isset($_POST['image'])){
    $displayText = $_POST['content'];
    $displayHeader = $_POST['header'];
    $dir="images/";
    $file=$dir.basename($_FILES["image"]["name"]);
    $query = "INSERT INTO `content` (`image`) VALUES ('$file')";
    if(strlen($displayText)>0){
        $query = "INSERT INTO `content` (`text`, `header`, `image`) VALUES ('$displayText', '$displayHeader', '$file')";
    }

    if (mysqli_query($connect, $query)) {
        echo '<script>alert("Title, Text and Image has been uploaded to database")</script>';
    }
}
?>

<!DOCTYPE html>
<html>
<head>
    <title>Edit Page</title>
    <script src="
    <link rel="stylesheet" href="editPage.css">
    <script>
        function deleteContent(id,header) {
            var xhr = new XMLHttpRequest();
            xhr.open("GET", "processDelete.php?id="+id, true);
            xhr.send();
            alert("You have deleted "+header);
            location.reload();
        }
    </script>
</head>
<body>
    <br>
    <br>
    <div class="container" style="width:25vw;">
        <h3 align="center">Update and Insert Headers, Text and Images</h3>
        <br>
        <form method="post" enctype="multipart/form-data">
            <h3>Title</h3>
            <input type="text" name="header" required />
            <br>
            <br>
            <h3>Text</h3>
            <input type="text" name="content" required />
            <br>
            <br>
            <h3>Image</h3>
            <input type="file" name="image" required />
            <br>
            <br>
            <br>
            <input type="submit" name="all" value="Upload All" />
        </form>
        <br>
        <br>
        <?php
            echo "<a href=\"skillsTask2.php\">Logout</a>";
        ?>
    </div>
    <div id="rightSide">
        <?php
                    $conn = mysqli_connect("localhost", "root", "", "skilltask2");
                    $query = "SELECT * FROM content ORDER BY `id` DESC";  
                    $result = mysqli_query($connect, $query); 
                        while($row = mysqli_fetch_array($result))   {  
                        $theimage = $row['image'];
                        $theheader = $row['header'];
                        $thetext = $row['text'];
                        $id = $row['id'];
                         echo "<div id='card'>
                                <img src=\"".$theimage."\" >
                                <div id='cardHeader'>
                                    <b>$theheader</b><br>$thetext
                                </div>
                                <button onclick=deleteContent($id,'$theheader')>Delete</button>
                        </div>
                        ";
                        }
        ?>
    </div>
</body>
</html>

A oto moja strona processDelete.php, która usuwa linie kodu z bazy danych.

<?php
    session_start();
    $connect = mysqli_connect("localhost", "root", "", "skilltask2");
    $id=$_GET['id'];
    $query = "DELETE FROM content WHERE id=$id"; 
    $result = mysqli_query($connect,$query) or die ( mysqli_error());
?>

Mam nadzieję, że możesz pomóc. Dzięki jeszcze raz.

Warto przeczytać!  rozwój motywu - Dropdown Przełącz podział w Bootstrap Navwalker Wordpress


Źródło