IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

suppression d'une element d'une table à partir d'un formulaire


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Par défaut suppression d'une element d'une table à partir d'un formulaire
    Bonjour,

    J'ai crée une liste qui me récupère les noms de ma table contact.
    J'aimerais que lorsque j'appuie sur le bouton submit lorsque j'ai choisie un nom, que ce nom et donc sa ligne soit effacé de ma table.
    Mais il y a un problème dans ma 2eme requête à cause des guillemets simple qui m'empêchent d'interpréter ma commande je pense.
    Et si je mets des antislash, ça n'exécute rien du tout.
    Pouvez-vous m'aidez??

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <?php
     
    include_once('connexion-PDO.php');
    $table= "contact";
    $sql= 'SELECT DISTINCT nom FROM contact ORDER BY nom ASC';
    $sth=$dbh->query($sql);
    $row=$sth->fetchAll(PDO::FETCH_COLUMN, 0);
    if(isset($_POST['nom']) && trim($_POST['nom'])!=''){
    $sql2='DELETE FROM contact WHERE nom= $_POST['nom']';
    $gg=$dbh->query($sql2);
    echo 'votre contact'.$_POST['nom'].' est bien effacé' ;}
     
    if ($dbh) {
    $dbh = NULL;}
    ?>
    Lequel de ces contacs voulez-vous supprimer?
    <form method="POST" class="search">
    		<label for="name">Par nom</label>
    		<select name="name" id="name" class="search">
    			<option value=""></option>
    			<?php
    				//cree un item par nom precedemment trouvee dans le fichier XML
    				foreach($row as $g){ 
    				echo '<option value="', $g, '">', $g, '</option>';}
    			?>
    		</select>
    		<input type="submit" value="OK" />
    	</form>
    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    La bonne syntaxe serait ... d'utiliser une requete preparée.
    Cependant il y a un problème dans ta conception, si plusieurs personnes ont le même nom, tu les effaces toutes.
    Il faut faire une liste de choix ayant l'id de la ligne comme valeur, et faire la suppression en se basant sur cet id.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Par défaut
    ok bon j'ai trouvé pour la suppression voila le nouveau code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    <?php
     
    include_once('connexion-PDO.php');
    $table= "contact";
    $sql= 'SELECT DISTINCT nom FROM contact ORDER BY nom ASC';
    $sth=$dbh->query($sql);
    $row=$sth->fetchAll(PDO::FETCH_COLUMN, 0);
    if(isset($_POST['nom']) && trim($_POST['nom'])!=''){
    $sql2='DELETE FROM contact WHERE nom="'.$_POST['nom'].'"';
    $gg=$dbh->query($sql2);
    echo 'votre contact '.$_POST['nom'].' est bien effacé' ;}
     
    if ($dbh) {
    $dbh = NULL;}
    ?>
    Lequel de ces contacs voulez-vous supprimer?
    <form method="POST" class="search">
    		<label for="name">Par nom</label>
    		<select name="nom" id="nom" class="search">
    			<option value=""></option>
    			<?php
    				//cree un item par nom precedemment trouvee dans le fichier XML
    				foreach($row as $g){ 
    				echo '<option value="', $g, '">', $g, '</option>';}
    			?>
    		</select>
    		<input type="submit" value="OK" />
    	</form>
    Oui si 2 personnes ont le même nom du coup je les effaces toutes .
    Si je fait qu'une liste d' id, la personne qui effacera le contact ne saura pas quel est son id à ce contact. Et même si j'affiche ma base entière pour qu'elle choisisse l'id correspondant au non de la personne à effacer si j'ai 2000 personnes dans ma bases, bon courage.

    A moins que je fasse choisir le nom de la personne à effacer, et une fois que j'ai choisie je l'affiche et s'il y en à plusieurs elles vont toutes s'afficher normalement et à partir de là je peux faire choisir l'id pour l'effacer
    ça peut marcher ça?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Et même si j'affiche ma base entière pour qu'elle choisisse l'id correspondant au non de la personne à effacer si j'ai 2000 personnes dans ma bases, bon courage.
    Et tu comptes sur les gens ayant le meme nom pour passer de 2000 entrées à une liste de 200 ?

    Ta syntaxe actuelle n'est pas bonne : si le nom contient une apostrophe, boum ca ne fonctionne pas.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Par défaut
    Non c pas ça.
    Pour moi si j'affiche juste une liste avec les id je ne vois pas comment les gens pourront choisir le nom de la personne a effacer. c'est ça que je ne comprend pas.
    Je débute avec mysql donc désoler

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Dans un liste, il y a une "value" qui est transmis par le formulaire et un texte affichée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<option value="' . $id . '">' . $nom . '</option>';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  2. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo