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 :

Relire un formulaire [Fait]


Sujet :

Langage PHP

  1. #1
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut Relire un formulaire
    Bonjour,
    Je génère un formulaire correspondant a des individus dont je récupère le prenom et le nom.
    A chaque occurence a la lecture de ma base je crée une ligne.
    Je veux que ces informations soit modifiable car les données peuvent être fausses ou incomplètes.
    Ma question est comment faire pour relire ce formulaire dont le nombre de ligne peu varier et dont les champs ne sont pas nommés car généré par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <TH width="242" class="Maclasse" scope="col">
    <INPUT class="Maclasse" value="<?php ECHO $affichage['Prénom']?>">
    <INPUT class="Maclasse" value="<?php ECHO $affichage['Nompat'] ?>">
    </TH>
    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    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
    while($affichage = mysql_fetch_array($result))
    {
    ?>
     
    <TH width="242" class="Maclasse" scope="col">
    <INPUT type="text" name="prenom_<?php echo $affichage['MonId']; ?>" class="Maclasse" value="<?php ECHO $affichage['Prénom']?>">
    <INPUT name="nom_<?php echo $affichage['MonId']; ?>"  class="Maclasse" value="<?php ECHO $affichage['Nompat'] ?>">
    </TH>
     
    <?php
    }
     
    //Traitement des données
    foreach($_POST as $name => $value)
    {
        //On repère les noms postés
        if(substr($name, 0, 4) == "nom_")
        {
           //On récupère l'id
           $eleve_split = explode("_", $name);
           $res = mysql_query("update eleve set NomPat='".$value."', Prenom='".$_POST['prenom_'.$eleve_split[1]]."' where id=".$eleve_split[1]);
        }
    }
    Pas forcément très propre ni très optimisé, mais ca doit fonctionner

  3. #3
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    Bonjour Ratapapa,
    Merci de ta réponse!
    Comme j'aime bien comprendre ce que je fais, peux tu m'explique un peu ta manip?
    Je vois que tu fais un while de $affichage, mais cette variable représente le contenu des enregistrements de ma base.
    A+

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Si tu donnes à plusieurs inputs HTML l'attribut name="prenoms[]", alors tu recevras dans PHP un tableau du style :
    Soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ?>
    <th width="242" class="Maclasse" scope="col">
    <?php
    while()
    {
       ?>
       <input type="text" name="prenoms[]" value="<?php echo $affichage['Prénom']?>" />
       <input type="text" name="noms[]" value="<?php echo $affichage['Nompat']?>" />
       <?php
    }
    ?>
    </th>
    <?php
    Donne pour 2 tours de while :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $_POST['prenoms'][0] == 'Dudule'
    $_POST['prenoms'][1] == 'Machin'
     
    $_POST['noms'][0] == 'Duchmol'
    $_POST['noms'][1] == 'Truc'
    (Désolé pour les exemples...)

    Plus d'infos dans mes tutoriels

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Juin 2005
    Messages : 572
    Points : 716
    Points
    716
    Par défaut
    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
    //Tant que l'on trouve un enregistrement dans le résultat de la requete, on l'insère dans la variable affichage
    while($affichage = mysql_fetch_array($result))
    {
    ?>
     
    <TH width="242" class="Maclasse" scope="col">
    <!-- On récupère l'identifiant de chaque enregistrement pour un update ultérieur -->
    <INPUT type="text" name="prenom_<?php echo $affichage['MonId']; ?>" class="Maclasse" value="<?php ECHO $affichage['Prénom']?>">
    <INPUT name="nom_<?php echo $affichage['MonId']; ?>"  class="Maclasse" value="<?php ECHO $affichage['Nompat'] ?>">
    <!-- on peut prévoir un input type hidden qui déterminera si l'élève a été modifié ou non grace a une fonction javascript sur l'evenement onChange de nom et prenom -->
    </TH>
     
    <?php
    }
     
    //Traitement des données : on liste tous les champs postés
    foreach($_POST as $name => $value)
    {
        //On repère les noms postés
        if(substr($name, 0, 4) == "nom_")
        {
           //On récupère l'id (après le "_")
           $eleve_split = explode("_", $name);
           //On fait l'update qui convient
           $res = mysql_query("update eleve set NomPat='".$value."', Prenom='".$_POST['prenom_'.$eleve_split[1]]."' where id=".$eleve_split[1]);
        }
    }
    J'ai rajouté 2-3 commentaires mais je ne vois pas vraiment quoi dire de plus
    Il faudrait effectivement se tourner vers des tutoriels si c'est la première fois que tu fais appel à une base de données en php.

    EDIT : La méthode proposée par yogui est sympa également mais il te faut stocker l'identifiant dans un champ supplémentaire pour l'update

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Je vois deux solutions :
    • Mettre l'identifiant dans les crochets pour forcer les clefs du tableau final ;
    • Laisser les crochets vides et utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach($_POST['prenoms'] as $i => $prenom)
    {
       //...
    }

  7. #7
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    Merci à vous deux!
    Avec ça je devrais pouvoir me débrouiller.
    Bonne journée.

  8. #8
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    Bonjour,
    Après quelque jours de vacances je me remet dedans.
    Je vais utiliser vos deux solutions, puisque je vais ajouter une petite précision qui à sont inportance, la relecture de mon formulaire se fait dans un programme appelé et mes informations initiales sont memorisées dans un tableau.
    Donc la variable $result, dont tu parle Ratapapa dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while($affichage = mysql_fetch_array($result))
    , est elle celle correspondant à:
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <FORM method="post" action="Majclasstest.php" >
    Si oui, dois-je transmettre $result en variable session ou différemment?
    Si non, elle doit correspondre à un mysql_query correspondant à la relecture du formulaire donc comment définir cette relecture?
    Merci!
    A+

  9. #9
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Tu trouveras dans mes articles un tutoriel sur les formulaires contenant un exemple de formulaire multipages.
    J'y utilise des sessions mais ce n'est pas le problème, je pense que tu sais utiliser une base de données (oui, $result est une ressource issue de mysql_query).

  10. #10
    GYK
    GYK est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    406
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 406
    Points : 94
    Points
    94
    Par défaut
    Merci Yogui je vais aller voir tes tutos, et surtout essayer de les comprendre.
    Comme je dis "aller voir", n'entends pas par là qu'ils ne sont pas clair, mais comme je ne suis pas de formation PHP, cela ne sera sans doute pas évident pour moi.
    A+

Discussions similaires

  1. Création d'un formulaire sous flash?
    Par ultrakas dans le forum Flash
    Réponses: 5
    Dernier message: 11/01/2005, 18h33
  2. [CR][Access] intégrer un viewer dans un formulaire access
    Par nicolak dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 13/01/2003, 15h52
  3. []Problème avec les formulaires Outlook
    Par davidinfo dans le forum Outlook
    Réponses: 6
    Dernier message: 05/12/2002, 09h59
  4. [VB6][Formulaire]Appliquer un Scrollbar a une Form
    Par Boil dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 09/11/2002, 03h51
  5. [CR] Tranfert de formulaire a travers une page HTMl
    Par LIEU dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 12/09/2002, 08h37

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