Supprimer de ma base avec php

Résolu
Sihemnecib Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonjour,
Je suis une débutante en PHP et j'ai fait une page contient un bouton supprimer qui permet a un administrateur de supprimer un compte d'un utilisateur (client) voilà mon code
<? php
include'ConnexionMySql.php';
$requet=mysql_query("SELECT * FROM patient WHERE nom_patient ='".$nom) or die(mysql_error());

if(isset($_POST ['delete'])
) { //pour verifier les info sont inserer ou s'il ne sont pas vide

$nom = $_POST['nom'];

$sql="DELETE  FROM  test  WHERE nom_patient='$nom' " ;
mysql_query($sql) ;
echo"<html> <font color=green> <center>  [ Mr/Mme: $nom ]  a été supprimer avec succée  !!!  </center> </font> <html>";

//on ferme la connexion a la base


}
else{
die('<html> <font color=red>Erreur SQL, Les champs sont peut etre vide! <br /> </font></html>'.mysql_error()); // rammemne l'erreurr
}
?>
<form method="POST" Action="" >
Nom :
<input type="text" name="nom" size="25"placeholder="Le nom a supprimer ici" required />
<input type="submit" name="Delete" value="Supprimer" />
<input type="reset" name="Annuler"  />
</form>

Merc de me aider c urgent svp

3 réponses

  1. Utilisateur anonyme
     
    Alors je n'ai pas testé n'ayant pas eu le temps de créer une base de donné mais voilà comment je procèderai (à tester j'ai corrigé à la va-vite)

    Contenu de connexionmysl
    $dbuser = "root";
    $dbpassword = "";
    $dbname = "donees";
    $dbhost = "localhost";
    //Connection
    $mysqli = new mysqli($dbhost, $dbuser, $dbpassword, $dbname);
    if (mysqli_connect_error()) {
        printf("Connection à la base de donnée impossible: ", mysqli_connect_error());
        exit();
    }
    


    Votre fichier :

    PHP
    if (isset($_POST ['delete'])) { //pour verifier les info sont inserer ou s'il ne sont pas vide 
        $nom = $_POST['nom'];
    
            $sql = "DELETE FROM patient WHERE nom_patient=$nom";
            mysql_query($mysqli, $sql);
            echo"<html> <font color=green> <center> [ Mr/Mme: $nom ] a été supprimer avec succée !!! </center> </font> <html>";
    
    //on ferme la connexion a la base 
        } else {
            echo '<html> <font color=red>Erreur Les champs sont peut etre vide! <br /> </font></html>'; // rammemne l'erreurr 
        }
    
        ?> 
    


    HTML
    <!DOCTYPE html>
    <html>
        <body>
            <form method="POST" Action="" > 
                Nom : 
                <input type="text" name="nom" size="25"placeholder="Le nom a supprimer ici" required /> 
                <input type="submit" name="Delete" value="Supprimer" /> 
                <input type="reset" name="Annuler" /> 
            </form> 
        </body>
    </html>
    


    Encore une fois c'est baclé mais je suis prêt à revoir après que vous ayez testé ;)
    0
    1. Utilisateur anonyme
       
      Je crois que je suis même incomplet je vous renvoie une nouvelle version d'ici peu (sort du travail)
      0
    2. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      Bonjour,

      Attention ligne 6 .. tu as mis mysql_query .. alors que tu as utilisé l'extension mysqli dans la connexion.

      Ensuite, dans la requête
        $sql = "DELETE FROM patient WHERE nom_patient=$nom";
      

      Si la variable $nom est de type string .. il faut la mettre entre quotes.
        $sql = "DELETE FROM patient WHERE nom_patient='$nom'";
      


      Il faut également penser à mettre du débug en cas d'erreurs dans les requêtes par exemple :
       if(!mysqli_query($mysqli, $sql) ) {
          echo "Erreur : ".mysqli_error($mysqli);
       }
      



      et enfin... il est préférable de récupérer "proprement" les variables AVANT de les utiliser.
      $nom = isset($_POST['nom']) ? $_POST['nom'] : NULL;
      
      0
    3. Utilisateur anonyme
       
      Voilà à tester !! Si vous avez des questions je reste à votre disposition en message privé ou en commentaire !

      <?php
      $dbuser = "root";
      $dbpassword = "";
      $dbname = "";
      $dbhost = "localhost";
      //Connection
      $mysqli = new mysqli($dbhost, $dbuser, $dbpassword, $dbname);
      if (mysqli_connect_error()) {
          printf("Connection à la base de donnée impossible: ", mysqli_connect_error());
          exit();
      }
      
      $alert = '';
      if (isset($_POST ['delete'])) { //pour verifier les info sont inserer ou s'il ne sont pas vide 
          $nom = isset($_POST['nom']) ? $_POST['nom'] : NULL;
      
      
          $verif_if_exist = "SELECT * FROM patient WHERE nom_patient =$nom";
          $verification = mysqli_query($mysqli, $verif_if_exist);
      
          if (mysqli_num_rows($verification) === 1) //verifie qu'il n'y a bien qu'une personne qui porte ce nom 
      {
              $sql = "DELETE FROM patient WHERE nom_patient='$nom'";
              if(!mysqli_query($mysqli, $sql) ) {
          echo "Erreur : ".mysqli_error($mysqli);
       }
              $alert = '<font color=green> <center> [ Mr/Mme: $nom ] a été supprimer avec succée !!! </center> </font>';
          } elseif (mysqli_num_rows($verification) > 1) {
              $alert = '<font color=red>Erreur plusieurs personnes portent ce nom! <br /> </font>'; // rammemne l'erreurr 
          } elseif (mysqli_num_rows($verification) < 1) {
              $alert = '<font color=red>Erreur Le nom est introuvable ! <br /> </font>';
          } else {
              $alert = '<font color=red>Erreur Les champs sont vide ! <br /> </font>';
          }
      }
      ?> 
      <!DOCTYPE html>
      <html>
          <body>
              <?php
              if ($alert) {
                  echo $alert;
              }
              ?>
              <form method="POST" Action="" > 
                  Nom : 
                  <input type="text" name="nom" size="25"placeholder="Le nom a supprimer ici" required /> 
                  <input type="submit" name="delete" value="Supprimer" /> 
                  <input type="reset" name="Annuler" /> 
              </form> 
          </body>
      </html>
      
      0
    4. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Utilisateur anonyme
       
      Penses à corriger en tenant compte de mes remarques précédentes. :-)
      0
    5. Utilisateur anonyme > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Ah oui désolé pas vu je corrige merci des conseils ;) pour ce qui est des débugs je tiens compte essentiellement de la connection à la base de donnée ! si la table ou la colonne n'existe pas rien ne s'execute mais c'est vrai tu as raison ;)
      0
  2. NHenry Messages postés 15235 Date d'inscription   Statut Modérateur Dernière intervention   387
     
    Quelle est la question ?

    l'urgence est pour toi, pas pour nous, nous sommes des bénévoles avec une vie à s'occuper.
    0
    1. Utilisateur anonyme
       
      Son code à quelques erreurs de synthaxe mais c'est vrai que tu as raison sur la question elle n'est pas explicite :)
      0
  3. Utilisateur anonyme
     
    Voici la solution final résolvant les problèmes d'éxécutions pour ceux qui passerais pas là ! Problème résolu en accompagnement par message privé !

    <?php
    $dbuser = "root"; //a changer avec nom d'utilisateur base de donnée
    $dbpassword = ""; // mot de passe du nom d'utilisateur
    $dbname = "test"; //le nom de la table
    $dbhost = "localhost"; //le serveur mysql localhost = par défaut en local
    //Connection
    $mysqli = new mysqli($dbhost, $dbuser, $dbpassword, $dbname); //Se connecte à la db
    if (mysqli_connect_error()) { // renvoie un message d'erreur
        printf("Connection à la base de donnée impossible: ", mysqli_connect_error());
        exit();
    }
    
    $alert = ''; // on s'en sert pour faire apparaitre les messages d'erreurs
    if (isset($_POST ['delete'])) { //pour verifier les info sont inserer ou s'il ne sont pas vide 
        $nom = isset($_POST['nom']) ? $_POST['nom'] : NULL;
    
    
        $verif_if_exist = "SELECT * FROM patient WHERE nom_patient ='$nom'"; //verifie l'existance
        $verification = mysqli_query($mysqli, $verif_if_exist); //connection db pour vérifier 
    
        if (mysqli_num_rows($verification) == 1) //verifie qu'il n'y a bien qu'une personne qui porte ce nom 
    {
            $sql = "DELETE FROM patient WHERE nom_patient='$nom'";
            if(!mysqli_query($mysqli, $sql) ) {
        echo "Erreur : ".mysqli_error($mysqli);
     }
            $alert = '<font color=green> <center> [ Mr/Mme: $nom ] a été supprimer avec succée !!! </center> </font>';
        } elseif (mysqli_num_rows($verification) > 1) { //Message d'erreur si plus d'une personne
            $alert = '<font color=red>Erreur plusieurs personnes portent ce nom! <br /> </font>'; // rammemne l'erreurr 
        } elseif (mysqli_num_rows($verification) < 1) { //message d'erreur s'il n'y a personne
            $alert = '<font color=red>Erreur Le nom est introuvable ! <br /> </font>';
        } else { //champs vide +code inutile puisque tu met required dans le formulaire
            $alert = '<font color=red>Erreur Les champs sont vide ! <br /> </font>';
        }
    }
    ?> 
    <!DOCTYPE html>
    <html>
        <body>
            <?php // ici on affichera nos messages d'erreurs
            if ($alert) {
                echo $alert;
            }
            ?>
            <form method="POST" Action="" > 
                Nom : 
                <input type="text" name="nom" size="25"placeholder="Le nom a supprimer ici" required /> 
                <input type="submit" name="delete" value="Supprimer" />  <!-- Attention à ne pas mettre "Delete" au lieu de "delete" sinon rien ne marche -->
                <input type="reset" name="Annuler" /> 
            </form> 
        </body>
    </html>
    
    0