Problème de suppression MySQL via formulaire PHP

Petit nouveau ! | 4 Messages

08 janv. 2016, 15:35

bonjour j'essaye de supprimé des utilisateur sur ma base de donné via un formulaire mais jarrive pas voila mon code

Code : Tout sélectionner

<?php include("fonctions.php"); connectMaBase(); ?> <html> <head><title>Formulaire de saisie utilisateur </title> <meta charset="UTF-8"> </head> <body> <h1>Inscrivez-vous !</h1> <h2>Ajouter supprimer et modifier les donnees demandées :</h2> <form name="inscription" method="post" action="form.php"> Entrez votre pseudo : <input type="text" name="pseudo"/> <br/> Sexe ? <input type="radio" name="sexe" value="G"/>Garcon<input type="radio" name="sexe" value="F"/>Fille<br/> Entrez votre age : <input type="int" name="age"/><br/> <input type="submit" name="valider" value="Ajouter"/> <input name="Afficher" type="submit" ID="Afficher" value="Afficher" /> </form> <form action="form.php?ID= <?php echo $ID;?>" method="post"> <input type="submit" name="Supprimer" value="Supprimer <?php echo $ID;?>" /> </form> <?php if (isset ($_POST['valider'])){ //On récupère les valeurs entrées par l'utilisateur : $pseudo=$_POST['pseudo']; $age=$_POST['age']; $sexe=$_POST['sexe']; //On construit la date d'aujourd'hui //strictement comme sql la construit $today = date("y-m-d"); //On prépare la commande sql d'insertion $sql = 'INSERT INTO Utilisateurs VALUES("","'.$pseudo.'","'.$sexe.'","'.$age.'","'.$today.'")'; /*on lance la commande (mysql_query) et au cas où, on rédige un petit message d'erreur si la requête ne passe pas (or die) (Message qui intègrera les causes d'erreur sql)*/ mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error()); echo '<p>Le pseudo à été ajouter avec succès. <a href=form.php>Retour au Formulaire.</a></p>'; // on ferme la connexion mysql_close(); } //supprimer if (isset($_POST['Afficher'])) $sql = mysql_query("SELECT * FROM Utilisateurs" ); while($data = mysql_fetch_array($sql)) { echo $data['ID']." ".$data['pseudo']." ".$data['sexe']." ".$data['age']." ".'<input type= "checkbox" name="case" ID="case"></a>' . "<br/>" ; } ?> <?php // On place dans une variable l'id transmit dans l'url if(isset($_POST["Supprimer"]) & isset($_GET["ID"]) ){ // on se connecte à la base de données $sql = mysql_query("DELETE FROM Utilisateurs WHERE ID ='form.php?ID= '") or die('Requête invalide : ' . mysql_error()); //on informe que le message est supprimé echo '<p>votre nom à été supprimé avec succès.</p>'; // Fermeture de la connexion à la base de données mysql_close(); } ?> </body> </html>

Mammouth du PHP | 881 Messages

08 janv. 2016, 16:18

Deux choses dans ton traitement,
d'abord la date: MySQL est capable de générer sa date, inutile de le faire pour lui

Code : Tout sélectionner

//On construit la date d'aujourd'hui //strictement comme sql la construit $today = date("y-m-d"); //On prépare la commande sql d'insertion $sql = 'INSERT INTO Utilisateurs VALUES("","'.$pseudo.'","'.$sexe.'","'.$age.'","'.$today.'")';
devient donc

Code : Tout sélectionner

//On prépare la commande sql d'insertion $sql = 'INSERT INTO Utilisateurs VALUES("","'.$pseudo.'","'.$sexe.'","'.$age.'", NOW() )';
Afin de supprimer ton usager, tu cherches une variable non définie.
L'usage de var_dump($_POST) t'aiderais à voir que
$_POST["Afficher"] n'est pas définie dans le deuxième formulaire. Oui, tu as bien deux formulaires et chacun est indépendant.
D'une part, tu pourrais n'avoir qu'un formulaire, ce serait plus simple à gérer (puisque tes deux postent vers form.php), d'autre part si tu veux garder deux formulaires distincts, il répéter les informations qui serviront à post.php
Ainsi, ton deuxième formulaire devrait AUSSI avoir un input "Afficher" afin que post.php puisse le trouver et que « if ($_POST["Afficher"]) » puisse travailler.
Soyez artisans de paix

Petit nouveau ! | 4 Messages

08 janv. 2016, 16:27

mon prob c est le delete

Mammouth du PHP | 881 Messages

08 janv. 2016, 16:45

Il y a des fautes

le if: esperluettes doubles et non simple ( blabla && bliblu ) et non ( blabla & bliblu )

Ensuite, que vient faire "form.php" dans la formule du DELETE ? C'est la variable $_POST qui devrait être utilisée, comme vous le faites dans le traitement d'une nouvelle inscription.

Code : Tout sélectionner

<?php // On place dans une variable l'id transmit dans l'url //Ici esperluettes doubles plutôt que simple if(isset($_POST["Supprimer"]) & isset($_GET["ID"]) ){ // on se connecte à la base de données //On doit récupérer les données de la même façon ici que vous le faites pour l'inscription, par la variable $_POST et non par "form.php? " $sql = mysql_query("DELETE FROM Utilisateurs WHERE ID ='form.php?ID= '") or die('Requête invalide : ' . mysql_error()); //on informe que le message est supprimé echo '<p>votre nom à été supprimé avec succès.</p>';
Soyez artisans de paix

Petit nouveau ! | 4 Messages

08 janv. 2016, 16:54

cest sa mon prob je c pas quoi mettre dans le WERE ID=' '

Mammouth du PHP | 881 Messages

08 janv. 2016, 17:08

Mais oui, vous savez, puisque vous le faites ici :

Code : Tout sélectionner

if (isset ($_POST['valider'])){ //On récupère les valeurs entrées par l'utilisateur : $pseudo=$_POST['pseudo']; $age=$_POST['age']; $sexe=$_POST['sexe'];
Votre code de suppression deviendra donc:

Code : Tout sélectionner

$sql = mysql_query("DELETE FROM Utilisateurs WHERE ID =".$_POST["ID"]." ) or die('Requête invalide : ' . mysql_error());
Soyez artisans de paix

Petit nouveau ! | 4 Messages

08 janv. 2016, 17:37

jai deja fait sa marche pas

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

08 janv. 2016, 19:25

Modération :
Merci de respecter la règle 1 problématique = 1 sujet sur le forum et de ne pas "voler" le sujet d'un autre pour venir y poser sa question.
J'ai divisé le sujet en 2 pour + de lisibilité et facilité les réponses sur ce sujet.



Par ailleurs, merci de faire un effort pour que l'on puisse t'aider efficacement, et les phrases/réponses laconiques ne sont pas d'une grande aide, comme par exemple
jarrive pas voila mon code
mon prob c est le delete
jai deja fait sa marche pas
Nous sommes là pour te débloquer là où tu bloques ou t'aider à comprendre les messages d'erreur mais pas pour faire le travail à ta place.
C'est à toi de débuguer tes scripts et d'indiquer précisément ce qui ne marche pas, à quel niveau, quels sont les messages d'erreurs et qu'as tu essayé pour corriger.
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 881 Messages

08 janv. 2016, 20:17

Attention aux majuscules / minuscules PHP et MySQL sont sensibles à ça.
Soyez artisans de paix