J'ai du mal à supprimer des données dans ma base de données avec mon menu déroulant. Mon menu déroulant ressemble à ceci

<form method="post" action="admin.php">
<h3>Delete a user</h3>
<select name="username">
$sql = mysqli_query($connection, "SELECT username FROM users");
while ($row = $sql->fetch_assoc()){
?>

<option value="username" name="username">
<?php echo $row['username']; ?></option>
<?php } ?>
<input type="submit" name="delete" value="Delete User">
</form>

Et cela affiche tous les utilisateurs bien comme je le veux, alors voici le php pour cela

<?php 
include('connect.php');
if(isset($_POST['delete'])) {
$username = $_POST['username'];
mysqli_query("DELETE FROM `users` WHERE `username` = '$username' ");
echo "User was deleted!";
}
?>

Ainsi, lorsque je clique sur le bouton "Supprimer l'utilisateur", il semble que je sois envoyé à admin.php et que rien ne se passe.

Comment puis-je réparer cela? Merci.

0
SebastianP 10 juil. 2017 à 14:18

3 réponses

Meilleure réponse

1. <option value="username" name="username"> Doit être <option value="<?php echo $row['username']; ?>">

2.La variable de connexion est manquante. Besoin d'être:-

mysqli_query($connection,"DELETE FROM `users` WHERE `username` = '$username' ");

Le code modifié doit être: -

Code de formulaire: -

<?php
//comment these two lines when code started working fine
error_reporting(E_ALL);
ini_set('display_errors',1);

include('connect.php');
?>
<form method="post" action="admin.php">
    <h3>Delete a user</h3>
    <select name="username">
      <?php
      $sql = mysqli_query($connection, "SELECT username FROM users");
      while ($row = mysqli_fetch_assoc($sql)){?>
        <option value="<?php echo $row['username']; ?>"><?php echo $row['username']; ?></option>
      <?php }?>
    </select>
<input type="submit" name="delete" value="Delete User">
</form>

Code php: -

<?php
//comment these two lines when code started working fine
error_reporting(E_ALL);
ini_set('display_errors',1);

include('connect.php');
if(isset($_POST['delete'])) {
    $username = $_POST['username'];
    if(mysqli_query($connection,"DELETE FROM `users` WHERE `username` = '$username' ")){
        echo "User was deleted!";
    }
}
?>

Remarque: - Effectuez toujours un rapport d'erreurs afin d'obtenir erreur et rectifiez-la.

Votre requête est vulnérable à SQL INJECTION, alors lisez à propos de prepared statements et utilisez-les.

0
Anant Singh---Alive to Die 11 juil. 2017 à 10:38

Changement

<option value="username" name="username">
<?php echo $row['username']; ?></option>

À

<option value="<?php echo $row['username'] ?>" name="username">
<?php echo $row['username']; ?></option>
1
Sehdev 10 juil. 2017 à 11:22

Vous ne mettez pas la valeur dans l'option de sélection, c'est pourquoi rien ne se passe
Remplacez simplement

<option value="username" name="username">
<?php echo $row['username']; ?></option>
<?php } ?>

Avec

<option value="<?php echo $row['username']; ?>">
<?php echo $row['username']; ?></option>
<?php } ?>

Cela fonctionnera pour vous.

1
Bibhudatta Sahoo 10 juil. 2017 à 11:33