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 :

Enregistrements multiples à partir d'un seul formulaire


Sujet :

Langage PHP

  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2
    Par défaut Enregistrements multiples à partir d'un seul formulaire
    Bonjour,

    J'affiche, par l'intermédiaire d'une boucle do...while, plusieurs enregistrements dans un tableau. Les données s'inscrivent dans des champs textes ouverts à la modification. Tous ces champs constituent un formulaire.

    Au lieu de devoir cliquer ligne par ligne, enregistrement par enregistrement, pour inscrire les modifications dans une base de données SQL, j'aimerais pouvoir modifier tous les enregistrements affichés en cliquant une fois sur le bouton submit.

    En espérant que vous me compreniez, pouvez-vous me dire comment faire pour gérer une boucle lors de l'enregistrement, alors que je ne sais pas à l'avance combien d'enregistrements vont devoir être mis à jour?

    D'avance un grand merci pour vos réponses...

  2. #2
    Membre éclairé Avatar de JmL40
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 348
    Par défaut
    Bonjour,

    Tu fais un UPDATE sur tous les champs. Ainsi, tous les modifications seront pris en compte meme pour les champs qui n'ont pas été modifié.

    Cette méthode est simple, mais très fastidieuses car si l'utilisateur fais une modification innattendue elle sera quand meme pris en compte.

    Une autre méthode plus longue consiste à comparer le contenu de ton champs dans la table, avec la valeur poster dans le formulaire, si ces deux diffèrent tu fais un update. Cette méthode peut-ête valable dans le cas ou tu affiches une valeur dans ton formulaire.

    Cordialement

  3. #3
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2
    Par défaut
    Bonjour,

    Merci de votre réponse. J'ai cependant du mal m'exprimer.

    Mon but est de mettre à jour plusieurs enregistrements (lignes) d'une table avec les valeurs d'un formulaire qui affiche lui-même ces plusieurs enregistrements. Cette UPDATE devrait se faire en bloc (tous les enregistrements affichés) en un submit du formulaire et non ligne par ligne (enregistrement par enregistrement).

    Pratiquement : j'ai une liste de noms (chacun est un enregistrement de ma table), j'affiche chaque nom sur une ligne dans un input text. L'utilisateur va modifier plusieurs noms, donc plusieurs enregistrements de ma table, et doit pouvoir, d'un clic sur le bouton envoyer, mettre à jour tous les enregistrements. Comment puis-je faire?

    D'avance merci de votre réponse

  4. #4
    Membre éclairé Avatar de JmL40
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 348
    Par défaut
    Bonsoir,

    Justement, tu récupère ainsi chaques enregistrements (ou nom) dans ta table, tu affiche tout ca dans ton formulaire soit des input text, comme tu veux !

    Ensuite quand tu soumet ton formulaire, tu peut faire un UPDATE c'est certain. J'ai implémenter ce type de solution dans une application.
    Tu as deux solutions :

    - Faire un update direct sur tous tes champs en utilisant le principe de concaténation.

    - Soit faire une vérification entre la valeur postée et la valeur du champ contenu dans ta bd, soit plusieurs update

    En clair :

    Solution 1 :

    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
     
    $requete = 'UPDATE Table SET';
     
    if(isset($_POST["champ1"]))
    {
        $requete.= 'champBD1 = $_POST["champ1"]';
    }
     
    if(isset($_POST["champ2"]))
    {
        $requete.= 'champBD2 = $_POST["champ2"]';
    }
     
    if(......){} //ainsi de suite
     
    $requete.= 'WHERE ..... = .... ;';
     
    mysql_query($requete);
    Tu peut optimiser tout cela bien sur. En fait, tu vérifie si la valeur poster existe bien, ou plutot si elle contient une valeur. Si celle-ci est vide ta condition IF ne sera pas prise en compte.

    Deuxième solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //tu recupere le contenu de chaque champs de ta base
    // et tu compare
     
    if($data["champbd1"] != $_POST["champ1"]
    {
    $requete = 'UPDATE ....';
     
    }
    //ainsi de suite
    Voila tout, enfin je pense que ta la ou les solutions sinon ....

    Cordialement

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/09/2020, 17h30
  2. Réponses: 6
    Dernier message: 17/05/2013, 10h52
  3. [AC-2010] selectionner un enregistrement a partir d'un sous formulaire
    Par Nephi dans le forum IHM
    Réponses: 5
    Dernier message: 04/10/2010, 10h10
  4. Enregistrement multiple dans une base à partir d'un formulaire
    Par ange_dragon dans le forum Modélisation
    Réponses: 2
    Dernier message: 05/06/2007, 15h28
  5. Enregistrements multiples renvoyés à partir d'une excécution
    Par Didier100 dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/07/2004, 15h25

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