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 :

Modifier les valeurs contenues dans une base de données avec un formulaire dynamique


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 3
    Points
    3
    Par défaut [Résolu] Modifier les valeurs contenues dans une BD avec un formulaire dynamique
    Bonjour,

    Tout d'abord je précise que je débute en php. Et malgré de longue recherche, je n'arrive pas à trouver la solution à mon problème.

    J'ai fait un formulaire ou les clients saisissent leurs coordonnées. Ces données sont enregistrées dans la BD. Ensuite, j'ai créé un formulaire dynamique contenant les coordonnées des différents clients qui sont enregistrés. A présent, je souhaite pouvoir modifier les enregistrements de la table client, mais je ne sais pas comment faire comme j'utilise un formulaire dynamique.


    fiche_clients.php

    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
     
    <?php 
     
    // connection à la Base de Données   
    $db = ……….
     
    $sql = "SELECT DISTINCT *
    FROM CLIENTS
    "; 
     
    $res = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
     
    echo ("<form id=\"form1\" name=\"form1\" method=\"post\" action=\"modif_clients.php\">");
     
    while ($row = mysql_fetch_assoc($res))
    {
    echo ("<input type=\"text\" size=\"8\" name='".$row['c_nom']."' "); echo 'value="'.$row['c_nom'].'">';
    echo ("<input type=\"text\" size=\"8\" name='".$row['c_prenom']."' "); echo 'value="'.$row['c_prenom'].'">';
    echo ("<input type=\"text\" size=\"20\" name='".$row['c_adresse']."' "); echo 'value="'.$row['c_adresse'].'">';
    echo ("<input type=\"text\" size=\"8\" name='".$row['c_tel']."' "); echo 'value="'.$row['c_tel'].'">';
    echo '<br />';
    }
    echo ("<br /><input align=\"center\" type=\"submit\" name=\"Submit\" value=\"Enregistrer\"></form>");
    mysql_free_result ($res); 
    mysql_close ();  
    ?>

    Voilà pour le moment ce que j'ai fait :

    modif_clients.php
    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
     
    // connection à la Base de Données   
    $db = ………. 
     
    $sql = "SELECT DISTINCT *
    FROM CLIENTS
    "; 
     
    $res = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    $data = mysql_num_rows($res);
     
    for($i=0; $i != $data ; $i++) 
    {
    if(isset($_POST['c_nom']))      $c_nom=$_POST['c_nom'];
    else      $c_nom="";
    if(isset($_POST['c_prenom']))      $c_prenom=$_POST['c_prenom'];
    else      $c_prenom="";
    if(isset($_POST['c_adresse']))      $c_adresse=$_POST['c_adresse'];
    else      $c_adresse="";
    if(isset($_POST['c_tel']))      $c_tel=$_POST['c_tel'];
    else      $c_tel="";
     
    $sql = "UPDATE INTO CLIENTS SET c_nom = UPPER (c_nom), c_prenom = UPPER (c_prenom), c_adresse = UPPER (c_adresse), c_tel = UPPER (c_tel)";
    }
    echo 'les modifications ont été enregistré avec succès';
    echo '<br /><a href="clients.php">retour</a>';
    mysql_close ();  
    ?>
    Merci de bien vouloir m'aider.
    Cali

  2. #2
    Fabouney
    Invité(e)
    Par défaut
    Salut, je vois pas l'intéret d'attribuer dinamyquement des noms différent à des champs de ton formulaire, seul les "value" doivent être remplacées par les données extraitent de la base.

    par contre il serait utile de renseigner dans un champ caché, l'id du client, afin de savoir lequel souhaite modifier ses informations.

    ou si tu as un système d'authentification, alors sauvegarde l'id dans une session ou cookie, et réutilise le une fois les modification effectuées.

    tu te donne du mal à rien là .

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Je pensais qu'il fallait avoir un nom different pour avoir des champs de taille différents (size).

    Celà dit, ca ne me dit pas comment faire pour résourdre mon problème, mais au moins ca me permet d'amériorer mon code.

    Donc merci pour tes conseils.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 5
    Points : 3
    Points
    3
    Par défaut [Résolu]
    Ca y est j'ai trouvé la solution à mon problème, et tout seul en plus!!
    Donc je me félicite. lol

    Citation Envoyé par Fabouney
    je vois pas l'intéret d'attribuer dinamyquement des noms différent à des champs de ton formulaire, seul les "value" doivent être remplacées par les données extraitent de la base.
    Et bien si, il faut bien attribuer un nom dynamique pour les différents champs enfin de pouvoir les récuperer avec $_POST, sinon ca ne fonctionne pas!!

    Pour ceux que ça intéresse, je laisse 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
     
    <?php 
    $db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
        mysql_select_db('test',$db)  or die('Erreur de selection '.mysql_error()); 
     
    $sql = "SELECT DISTINCT *
    FROM CLIENTS
    "; 
     
    $res = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
     
    echo ("<form id=\"form1\" name=\"form1\" method=\"post\" action=\"modif_clients.php\">");
    $i=0;
    while ($row = mysql_fetch_assoc($res))
    {
    $id_client = $row['id_client'];
    echo $id_client;
    ?>
    //checkbox inutile pour le moment
    /*<input type="checkbox" name="<?php echo $id_client;?>" value="checkbox" id="<?php echo $id_client;?>"/>*/
    <input type="text" size="8" name="<?php echo 'c_nom'.$i;?>" value="<?php echo $row['c_nom'];?>"/>
    <input type="text" size="8" name="<?php echo 'c_prenom'.$i;?>" value="<?php echo $row['c_prenom'];?>"/>
    <input type="text" size="20" name="<?php echo 'c_adresse'.$i;?>" value="<?php echo $row['c_adresse'];?>"/>
    <input type="text" size="9" name="<?php echo 'c_tel'.$i;?>" value="0<?php echo $row['c_tel'];?>"/>
    <br />
    <?php
    $i= $i+1;
    }
    echo ("<br /><input align=\"center\" type=\"submit\" name=\"Submit\" value=\"Enregistrer\"></form>");
     
    mysql_free_result ($res); 
    mysql_close ();  
    ?>
    modif_clients.php

    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
     
    <?php
     
    $db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error());
        mysql_select_db('test',$db)  or die('Erreur de selection '.mysql_error()); 
     
    $sql = "SELECT DISTINCT *
    FROM
    "; 
     
    $res = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    $i=0;
    while ($row = mysql_fetch_assoc($res))
    {
    $id_client = $row['id_client'];
     
    if(isset($_POST['c_nom'.$i]))      $c_nom = $_POST['c_nom'.$i];
    else      $c_nom="";
     
    if(isset($_POST['c_prenom'.$i]))      $c_prenom = $_POST['c_prenom'.$i];
    else      $c_prenom="";
     
    if(isset($_POST['c_adresse'.$i]))      $c_adresse = $_POST['c_adresse'.$i];
    else      $c_adresse="";
     
    if(isset($_POST['c_tel'.$i]))      $c_tel = $_POST['c_tel'.$i];
    else      $c_tel="";
     
    $sql = "UPDATE clients SET c_nom = '$c_nom', c_prenom = '$c_prenom', c_adresse = '$c_adresse', c_tel = '$c_tel' WHERE id_client='$id_client'";
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    $i=$i+1;
    }
    echo '<br />Les modifications ont été enregistrées avec succès';
    echo '<br /><a href="fiche_clients.php">retour</a>';
    mysql_close ();  
    ?>
    N'ésitez pas à poster pour toutes critiques ou pour améliorer le code.
    Merci

    ++

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Votre requête UPDATE n'est pas protégée : il faudrait appliquer mysql_real_escape_string sur les données issues du formulaire (POST).

    L'utilisation d'un tableau au lieu de noms dynamiques aurait surement simplifiée la chose mais si ça marche ... (une requête de moins notamment).

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/06/2015, 10h52
  2. [E03] - Modifier les valeurs affichées dans une listbox
    Par couistelle dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 10/03/2009, 14h46
  3. Lister les tables contenues dans une base Acces
    Par Lorenzole+bo dans le forum VBA Access
    Réponses: 1
    Dernier message: 17/02/2008, 22h06
  4. Réponses: 1
    Dernier message: 23/10/2005, 01h55

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