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 :

Récupération valeurs issues de formulaire dynamique [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Par défaut Récupération valeurs issues de formulaire dynamique
    Bonjour,

    Je vous explique mon problème.
    J'ai un formulaire avec une liste déroulante à choix multiples modules.
    En le soumettant, j'arrive à générer sur la même page pour chacun des modules sélectionnés à deux nouveaux éléments (une zone texte et des boutons radio) :

    module 1 :
    zone texte
    boutons 1 et 2

    module 2 :
    zone texte
    boutons 1 et 2

    etc...

    Jusque là, ça va. Mon problème est que je n'arrive pas à récupérer mes nouvelles variables pour les insérer dans la base de données, elles ne sont pas reconnues.

    Je vous met 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
    ...
    $modules = $_POST['MODULES'];
    ...
     
     
    <FORM  name="formulaire2"  action="formation.php" method="post">
    <p>
    <br>
     
    <?php
     
    //Génération des nouveaux éléments pour chaque module 
    echo "MODULES DE LA FORMATION"," ",$formation," ",$annee," : ";
    echo '<br><br>';
      for ($i=0; $i<count($modules); $i++)
       {  
        echo  $modules[$i]," ",":", " " ;
        echo '<br>';
    	echo "COEFFICIENT : <input type='text' name='coeff[]' maxlength=2 size=2></input>";
        echo '<br>';
    	echo "SEMESTRE : <input type='radio' value='1' name='sem[]' > S1 <input type='radio' value='2' name='sem[]' > S2";
    	echo '<br><br>';
       }
     
     
     
    //Connection à la base de données
    connectMaBase(); //Fonction prédéfinie
     
    $coefficent=$_POST['coeff[]'];
    $semestre=$_POST['sem[]'];
     
    //Insertion dans la table modules
    for ($j=0; $j<count($modules); $j++)
    {
     $sqlmodules = "INSERT INTO modules VALUES ('".$modules[$j]."','".$formation."','".$annee."','".$coefficent[$j]."','".$semestre[$j]."' )"; 
     mysql_query ($sqlmodules) or die ('Erreur d\'insertion sur la table note !'.$sqlmodules.'<br />'.mysql_error());
    }    
     
     
    //On ferme la connexion
    mysql_close();
     
     
    ?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <input Type="submit" Value="ENVOYER" name="VALIDATION">
    <input Type="reset" Value="ANNULER" name="ANNULER">
     
    </FORM>
    Si quelqu'un voit le problème, merci d'avance.

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    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
    ..
    if(isset($_POST['coeff'])){
    $coefficent=$_POST['coeff'];//ici tu récupère un tableau
    $modules=$_POST['module'];
    $semestre=$_POST['sem'];
    //Insertion dans la table modules
    for ($j=0; $j<count($modules); $j++)
    {
     $sqlmodules = "INSERT INTO modules VALUES ('".$modules[$j]."','".$formation."','".$annee."','".$coefficent[$j]."','".$semestre[$j]."' )"; 
     mysql_query ($sqlmodules) or die ('Erreur d\'insertion sur la table note !'.$sqlmodules.'<br />'.mysql_error());
    }    
      
    }
    tu doit aussi dans ton formulaire2 mettre des champs de type hidden pour envoyer les modules que tu récupèrera à la ligne bleu en haut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
      for ($i=0; $i<count($modules); $i++)
       {  
        echo  $modules[$i]," ",":", " " ;
        echo '<br>';
    echo "<input type='hidden' name='modules[]' value='".$modules[$i]."'></input>";
    	echo "COEFFICIENT : <input type='text' name='coeff[]' maxlength=2 size=2></input>";
        echo '<br>';
    	echo "SEMESTRE : <input type='radio' value='1' name='sem[]' > S1 <input type='radio' value='2' name='sem[]' > S2";
    	echo '<br><br>';
       }
    attention aux variables $formation et $annee qui doivent aussi etre affecté d'une valeur quelque part avant leurs utilisation dans la requête

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Par défaut
    Merci, ça marche comme ça.

    Par contre, je viens de remarquer que je ne peux cocher qu'une seule fois le semestre pour l'ensemble des modules.
    Si je coche, S1 pour le premier module et ensuite S1 pour le second module, le choix se décoche pour le premier.

    Comment je pourrait contrer ce problème?

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    570
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Septembre 2003
    Messages : 570
    Par défaut
    cela est dù au nom qui est identique pour toute les radios, j'avoue ne pas avoir y pensé plutôt.
    mettre quelque chose de ce genre dans ta première boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo "SEMESTRE : <input type='radio' value='1' name='sem".$i."' > S1 <input type='radio' value='2' name='sem".$i."' > S2";
    et dans la récupération de tes post enleve :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $semestre=$_POST['sem'];
    que tu mettra dans ta deuxième boucle avec cette petite modif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for ($j=0; $j<count($modules); $j++)
    {
    $semestre=$_POST['sem'.$j];
     $sqlmodules = "INSERT INTO modules VALUES ('".$modules[$j]."','".$formation."','".$annee."','".$coefficent[$j]."','".$semestre."' )"; 
     mysql_query ($sqlmodules) or die ('Erreur d\'insertion sur la table note !'.$sqlmodules.'<br />'.mysql_error());
    }

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    526
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 526
    Par défaut
    Super, merci.

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 22/11/2011, 09h47
  2. [MySQL] Récupération valeur issue de liste déroulante dynamique
    Par stefsas dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 24/02/2010, 12h08
  3. Récupération de valeurs d'un formulaire dynamique
    Par Invité dans le forum Struts 1
    Réponses: 8
    Dernier message: 17/04/2009, 15h26
  4. récupérer les valeurs d'un formulaire dynamique
    Par une_tite_question dans le forum Langage
    Réponses: 4
    Dernier message: 05/08/2008, 16h06
  5. Récupérer valeur champs de formulaire dynamique
    Par antillejj dans le forum ASP
    Réponses: 1
    Dernier message: 22/12/2006, 07h17

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