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

Langage PHP Discussion :

Contenu d'une DB MYSQL dans un formulaire avec supprimer et Editer


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Contenu d'une DB MYSQL dans un formulaire avec supprimer et Editer
    Salut,
    J'ai ecrit un moceau de code afin de recuperer les donnees d'une base de donne Mysql et l'afficher dans un tableau. jusqu'a la pas de problemes.
    Ensuite sur chaque ligne je souhaite y ajouter un boutons "SUPPRIMER" et un autre "EDITER" mais je ne sais pas commenent ecrire mon IF affecter au bouton supprimer et editer.

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    <?php
    require ('login.php');
    
    // on cr?e la requ?te SQL 
    $sql = 'SELECT ID,Full_Name,Email,Phone,Mobile_Phone,City FROM contact'; 
    
    // on envoie la requ?te 
    $req = mysql_query($sql) or die('SQL Error !<br>'.$sql.'<br>'.mysql_error()); 
    
    ?>
    
    <style type="text/css">
    <!--
    .Style1 {color: #FFFFFF}
    -->
    </style>
    <table width="646" border="1" align="center">
      <tr>
        <th width="94" bgcolor="#003399" scope="col"><span class="Style1">ID</span></th>
        <th width="110" bgcolor="#003399" scope="col"><span class="Style1">Full Name </span></th>
        <th width="96" bgcolor="#003399" scope="col"><span class="Style1">Email</span></th>
        <th width="102" bgcolor="#003399" scope="col"><span class="Style1">Phone</span></th>
        <th width="113" bgcolor="#003399" scope="col"><span class="Style1">Mobile Phone </span></th>
        <th width="91" bgcolor="#003399" scope="col"><span class="Style1">City</span></th>
        <th width="91" bgcolor="#003399" scope="col"><span class="Style1">Action</span></th>
      </tr>
      <tr>
    <?php
    // on fait une boucle qui va faire un tour pour chaque enregistrement 
    while($data = mysql_fetch_assoc($req)) 
        { 
        // on affiche les informations de l'enregistrement en cours 
       echo "<tr>
    	<td>".$data['ID']."</td>
    	<td>".$data['Full_Name']."</td>
    	<td>".$data['Email']."</td>
    	<td>".$data['Phone']."</td>
    	<td>".$data['Mobile_Phone']."</td>
    	<td>".$data['City']."</td>
    	<td><input type=\"submit\" name=\"".$data['ID']."\"  value=\"Delete\"></td>
    	</tr>";
        } 
    // Ici je bug je ne sais plus trop quoi ecrire !!!
    
    if(isset($_POST['Delete'])) 
    {
    echo ('ligne a suprimer'$data['ID']);
    $sql = mysql_query('DELETE * FROM contact WHERE ID = '.$data['ID'].''); 
    $res = mysql_query($sql);
    if(!$res) die ("Impossible de supprimer");
    }
    
    ?>   
      </tr>
    </table>
    
    <?php
    // on ferme la connexion ? mysql 
    mysql_close(); 
    ?>
    Si vous avez une petit idee merci.
    Jerome

  2. #2
    Membre éclairé Avatar de |PaRa-BoL
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 738
    Points : 876
    Points
    876
    Par défaut
    Bonsoir,

    Tu n'as pas mi de balise form pour envoyer les données en POST.
    Il te faudra aussi mettre tes données dans des input de type "hidden" ce qui assez chian

    Tu devrais donc faire un simple lien en passant l'id de ton entré que tu récupéras en GET.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo '<a href="page.php?action=del&id='.$data['id'].'>Effacer</a>';
    Ps :

    Fait attention à ta requête SQL et encadre ta variable avec un intval() pour éviter une injection SQL

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    je n'ai pas vraiment compris comment completer mon code.
    je suis un oeu newbee dans cette histoire

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Bonjour,

    A mon avis, il ne faut pas utiliser le <input type="submit"> mais un <input type="button"> et un code JavaScript déclanché sur onclick qui va affecter une certaine valeur ($data['ID']) à un champ de formulaire caché (appelé delete_data_id par exemple) et qui soumet ensuite le formulaire. Tu récupères l'ID à supprimer avec $_POST["delete_data_id"] :
    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
    <script>
    function delete_data(id) {
        document.forms[0].delete_data_id.value = id;
        document.forms[0].submit();
    }
    </script>
     
    <form ...>
    <input type="hidden" name="delete_data_id"/>
    ...
     
    // Suppression
    if(isset($_POST['delete_data_id'])) 
    {
        echo ('ligne a suprimer : '.$_POST['delete_data_id']);
        $sql = mysql_query('DELETE * FROM contact WHERE ID = '.$_POST['delete_data_id']);
        $res = mysql_query($sql);
        if(!$res) die ("Impossible de supprimer");
    }
     
     
    	<td><input type=\"button\" onclick=\"delete_data(".$data['ID'].");\"  value=\"Delete\"></td>
    Soit dit en passant : faire le delete après le select, c'est un peu étrange car quand tu cliqueras sur delete, ça t'afficheras de nouveau la donnée que tu voulais supprimer... C'est pour ça que j'ai remonté ton code de suppression.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Points : 88
    Points
    88
    Par défaut
    Bien le bonjour,

    Je viens de voir ton code Mac, et il m'interresse beaucoup.

    Je voudrais faire la même chose que fennechaim, et je n'arrive pas bien a démenteler ton codage.

    Enfaite je me retrouve avec un label ou on dirait qu'il faut rentré son champs de BDD afin qu'il soit supprimer.Mais en vain et je pense que tu le sais bien

    Je rentre le codage java, ensuite le formulaire qui part vert un lien.php ou est noté la //suppression.

    Ensuite la fin du codage.

    Vois par toi meme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <SCRIPT language="Javascript">
    function delete_data(idnom_utilisateur) {
        document.forms[0].delete_data_idnom_utilisateur.value = idnom_utilisateur;
        document.forms[0].submit();
    }
    </script>
     
     
    //FORMULAIRE
     
    <form name="supprimer" action="fsupprimerutilisateur.php" >
    <input type="hidden" value="" name="delete_data_idnom_utilisateur"/>
    </form>

    Qui par sur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(isset($_POST['delete_data_idnom_utilisateur'])) 
    {
        echo ('ligne a suprimer : '.$_POST['delete_data_idnom_utilisateur']);
        $sql = mysql_query('DELETE * FROM nom_utilisateur WHERE idnom_utilisateur = '.$_POST['delete_data_id']);
        $res = mysql_query($sql);
        if(!$res) die ("Impossible de supprimer");
    }
    Et enfin,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type=\"button\"onclick=\"delete_data(".$data['idnom_utilisateur'].");\" value=\"DELETE\">
    J'ai quelque peu modifier id par mon champs de ma table,
    Mais rien ne se supprime :s

    Si tu pouvais me mettre dans le droit chemin

    En te remerciant

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    C'est évident :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = mysql_query('DELETE * FROM nom_utilisateur WHERE idnom_utilisateur = '.$_POST['delete_data_id']);
    Il sort d'où, ce $_POST['delete_data_id']) ? Le champ de formulaire qui contient l'ID à supprimer s'appelle delete_data_idnom_utilisateur, pas delete_data_id

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Points : 88
    Points
    88
    Par défaut
    Déjà merci pour ta réponse,

    Et oui je l'avais vu celle la ! mais je ne l'avais pas éditer sur le fofo ^^

    Donc j'ai changé cette faute, mais enfaite j'aimerais supprimer une ligne de données de mon tableau, sans à avoir à supprimer les autres.Donc un boutton supprimer à chaque fin de ligne.

    Ton code m'a l'air bien, il récupère le $_POST et le supprime.

    Je l'ai mis sur pied, et il n'y a que 1 label ^^

    Et le oneclick doit être dans des balises PHP ?!

    Merci de la réponde

    //-----------------------------------------------------------

    J'ai finalement un type button en fin de ligne, mais lorsque je clique dessus, rien ne se passe.
    Mon formulaire de type hidden doit etre avant mon button ?

  8. #8
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Citation Envoyé par Guignon Voir le message
    Je l'ai mis sur pied, et il n'y a que 1 label ^^
    Ca veut dire quoi ?

    En gros, dans mon code, tu ouvres un formulaire (<form ...>) avec le champ caché, puis construis un tableau : une ligne pour chaque donnée et dans laquelle tu mets un bouton qui appelle la fonction JavaScript delete_data avec le bon paramètre sur un onclick, à savoir la clé primaire de la donnée de cette ligne. Enfin, tu fermes le formulaire (</form>) et le tour est joué. Le HTML ressemble à ceci :
    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
    <script>
    function delete_data(id) {
        document.forms[0].delete_data_id.value = id;
        document.forms[0].submit();
    }
    </script>
     
    <form ...>
    <input type="hidden" name="delete_data_id"/>
    <table>
    <tr><td>donnee 1</td><td><input type="button" onclick="delete_data(1);"></td></tr>
    <tr><td>donnee 2</td><td><input type="button" onclick="delete_data(2);"></td></tr>
    ...
    </table>
    </form>
    Ce n'est pas bien compliqué.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Points : 88
    Points
    88
    Par défaut
    Enfaite il y avait un label au lieu d'un bouton :O ^^

    Sa c'est réglé, j'ai suivi ta procédure, et lorsque je clique sur mon bouton, rien ne se passe.

    Du changement
    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
    30
    31
    32
    33
    34
     
    <div>
    <table id="tableau">
    <script>
    function delete_data(nom_personne) {
        document.forms[0].delete_data_nom_personne.value = nom_personne;
        document.forms[0].submit();
    }
    </script>
    <?php
    if(isset($_POST['delete_data_nom_personne'])) 
    {
        echo ('ligne a suprimer : '.$_POST['delete_data_nom_personne']);
        $sql = mysql_query('DELETE * FROM `nom_utilisateur` WHERE `nom_personne` = '.$_POST['delete_data_nom_personne']);
        $res = mysql_query($sql);
        if(!$res) die ("Impossible de supprimer");
    }
    ?>
     
    <form>
    <input type="hidden" name="delete_data_nom_personne"/>
     
      <thead>
      <tr>
      <th>Nom de l'utilisateur</th>
      <th>Action</th>
      </tr></thead>
     
      <tbody>
       <?php include('tableauutilisateur.php'); ?>
      </tbody>
    </table>
    </form>
    </div>

    Mon include :

    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
     
    <?php
    //connextion a la BDD :
    include ('connectionbdd.php'); 
     
    //selection des tables de la BDD
    $sql= "SELECT nom_personne, idnom_utilisateur  FROM nom_utilisateur";
    $reponse=mysql_query($sql);
     
    //boucle qui retourne les données des champs  selectionner dans le tableau
    while($donnees=mysql_fetch_array($reponse))
    {
      echo '<tr>'.'<td>'.$donnees['nom_personne'].'</td>';
      ?><td><input type="button" onclick="delete_data(<?php '.$donnees['.$nom_personne.'].' ?>);" value="suppr"></td></tr>
      <?php
    }		
     
    mysql_close();
    ?>
    Si tu y vois quelque chose
    Merci

  10. #10
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Plusieurs choses :
    • Ajoute method="POST" dans ta balise <form> : par défaut ça doit être un GET donc ton $_POST est forcément toujours vide
    • Vérifie ton code qui génère ton tableau : je ne suis pas sûr que le onclick ait la bonne valeur.
    • As-tu établi une connexion à la base de données avant de faire ton delete ?

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Points : 88
    Points
    88
    Par défaut
    Oui il y a une connexion avant le onclick, mais pas avant le script ni le code PHP if(isset($_POST....

    Juste pour mon tableau enfaite.

  12. #12
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Ben ta requête DELETE ne risque pas de s'exécuter, alors !! Ca serait peut-être utile de se connecter à la base avant d'exécuter une requête SQL

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Points : 88
    Points
    88
    Par défaut
    Okay j'ai rentré sa,

    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
    30
     
    <?php
    //connextion a la BDD :
    include ('connectionbdd.php'); 
     
     
    if(isset($_POST['delete_data_nom_personne'])) 
    {
        echo ('ligne a suprimer : '.$_POST['delete_data_nom_personne']);
        $sql = mysql_query('DELETE * FROM `lms`.`nom_utilisateur` WHERE `nom_personne` = '.$_POST['delete_data_nom_personne']);
        $res = mysql_query($sql);
        if(!$res) die ("Impossible de supprimer");
    }
     
     
    //selection des tables de la BDD
    $sql= "SELECT nom_personne, idnom_utilisateur  FROM nom_utilisateur ";
    $reponse=mysql_query($sql);
     
     
    //boucle qui retourne les données des champs  selectionner dans le tableau
    while($donnees=mysql_fetch_array($reponse))
    {
      echo '<tr>'.'<td>'.$donnees['nom_personne'].'</td>';
      ?><td><input type="button" onclick="delete_data(<?php '.$donnees['.$nom_personne.'].' ?>);" value="suppr"></td></tr>
      <?php
    }		
     
    mysql_close();
    ?>
    Mais il n'y a pas de changement :s:s

  14. #14
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Elle ressemble à quoi ta balise form ? Tu as mis le method="POST" ? La page est quand même rafraîchie sur la même page quand tu cliques sur un bouton ? J'avais oublié de te poser une question : mon code JS fait document.forms[0] : cela suppose que le formulaire à envoyer est le premier de la page HTML : est-ce que c'est vrai ? Le plus simple c'est peut-être de le nommer pour éviter les ambiguïtés.

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Points : 88
    Points
    88
    Par défaut
    Ma balise form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <form action="fsuppr.php" method="POST">
    <input type="hidden" name="delete_data_nom_personne"/>
     
    //on include le TABLEAU avec dans la boucle :
     
    <td><input type="button" onclick="delete_data(<?php '.$donnees['.$nom_personne.'].' ?>);" value="suppr"></td></tr>
     
    //on referme le formulaire après l'include
    </form>
    Voila mon <form>

    Et non la page n'est pas rafraichie, donc il n'y a aucune requête et rien ne se passe lorsque l'on appuie dessus.

    En se qui concerne le le code JS et le formulaire, je pense que oui et c'est claire que de le nommer serait bien.

    Je vais essayé tous sa, et je te fais par de mon résultat.

    Et une petite question aussi, il ne faut pas mettre de données dans le code JS comme pour document.forms['.donnees.']

    Pour demender

    Merci

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 114
    Points : 88
    Points
    88
    Par défaut
    Merci pour le soutien Mac !

    A la prochaine !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/05/2013, 14h24
  2. Réponses: 1
    Dernier message: 06/08/2012, 18h12
  3. [MySQL] recuperer le contenu d'une table mysql dans un menu deroulant
    Par Abou Zar dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 22/02/2010, 17h49
  4. [MySQL] affiche valeurs d'une table mysql dans un formulaire htm
    Par pierre27 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/09/2007, 16h25
  5. Utiliser une table MySQL dans un menu deroulant de formulaire
    Par darkfazer dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 17/10/2006, 23h16

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