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 :

[Tableaux] Remplir une table MySQL à partir d'une liste [Débutant(e)]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Par défaut [Tableaux] Remplir une table MySQL à partir d'une liste
    Bonsoir,
    je sais pas si c'est une bête question mais j'ai bien réflichi et toujours j'ai pas trouvé une bonne solution

    j'ai une liste nomée "pers2" et je veux remplire une table nomée "Personnes" avec les valeurs de cette liste.

  2. #2
    Membre émérite Avatar de sharrascript
    Homme Profil pro
    Développeur Web indépendant
    Inscrit en
    Avril 2007
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web indépendant

    Informations forums :
    Inscription : Avril 2007
    Messages : 678
    Par défaut
    bonjour sara21,

    J'aimerais bien t'aider, mais il faudrait + de précisions.

    Tu as un code de base?

    Mais si ta question est de savoir si c'est possible, la réponse est oui.

    Il suffit de faire des INSERT pour chaque personne de ta liste.

    Mais il faut précisez si tu utilise un formulaire ou autre.

    ++

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Par défaut
    Bonjour,
    voila donc j'aimerais avoir une Liste (en suppose quelle est déja remplie avec des noms) et un boutton envoyer qui permet de remplire ma table "Personnes" [id (auto) , Nom (Varchar2)] avec les noms presents dans la liste

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form method="post"  name="form1" action="" >
    <select name="pers2" size="10" multiple="multiple" >
    </select>
    <input name="envoyer" type="submit" value="Envoyer" />
    </form>
    Merci les gars et j'attend avec impatience votre aide

  4. #4
    Membre expérimenté
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    181
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 181
    Par défaut
    Salut,

    Le problème est que ta variable pers2 n'est pas un tableau, alors la variable globale $_POST['pers2'] ne peut contenir qu'une seule valeur !
    On cherche donc à obtenir un tableau pers2[], lui même dans le tableau $_POST[]...
    pour ce faire, c'est très facile, il suffit d'indiquer dans l'attribut name de la balise select que pers2 est un tableau, grâce à une paire de crochets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="pers2[]" size="10" multiple="multiple" >
    Ensuite, il te suffit de récupérer les valeur du tableau $_POST['pers2'], avec un foreach par exemple.

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Par défaut
    Bonsoir tous le monde,
    merci haze pour l'info mais ca marche pas pour mon cas et je vais vous monter tout mon code peut être que quelqu'un aura une idée

    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
     
    <?php 
    include ("connexion.php");
    $reponse = mysql_query('SELECT * FROM Personnes')or die('Erreur SQL !<br>'.$req.'<br>'.mysql_error());
    	$Tab_php_Nom = array();
    	$Tab_php_id = array();
    	$i=0;
    	while ( $datamenu = mysql_fetch_array ( $reponse ) )
    	{
    		$Tab_php_Nom[$i] = $datamenu["Nom"];
    		$Tab_php_id[$i] = $datamenu["id"];
    		$i++;
    	}
    	////////////////////////////////////////////////////
    	function TabPHP_to_JS($tableauPHP, $tableauJS) {
        	echo $tableauJS . " = new Array();";
        	for($i = 0; $i < count($tableauPHP); $i++) {
            	if (!is_array($tableauPHP[$i])) {
                	echo $tableauJS . "[" . $i . "] = '" . $tableauPHP[$i] . "';";
            	}
            	else {
                	TabPHP_to_JS($tableauPHP[$i], $tableauJS . "[" . $i . "]");
            	}
        	}
        	return;
    	}
    	///////////////////////////////////////
    echo "<script type='text/javascript'>";
            TabPHP_to_JS($Tab_php_Nom, "MaTb");
    echo "</script> ";
     
    ?>
    Partie Javascript
    Initialise une liste 1 (pers1) avec tout les personnes de la table (ca marche), puis grace au boutons tu peux changer les données de la liste1 vers la liste 2 (pers2) . les données sont toujours trier par ordre alphabétique

    Code JS : 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
     
    <SCRIPT language="JavaScript">
     //initialise une liste
         function ini(form,list1,list2){
     
              // var MaTb = new Array(100);
     
                  list1.options.length=0;
                  list2.options.length=0;
                  MaTb.sort();
                  var i
                  for (i=0; i<MaTb.length; i++) {
                      var o=new Option(MaTb[i],MaTb[i]);
                      list1.options[list1.options.length]=o;
                  }
        }
     
           //passe les données de la liste 1 à la liste 2 et les trie par ordre alphabétique
         function gtod(form,list1,list2){
                    for(yo=0;yo<list1.length;yo++){
                                     if(list1.options[yo].selected == true){
                                     var p= new Option(list1.options[yo].value,list1.options[yo].value);
                                     list2.options[list2.options.length]=p;
                                     list1.options[yo] = null;                
                                     yo=yo-1;
                                     }
                    }
                     //trie de la liste, on creer un tab, on le trie et on reconstruit la liste
     
                           var tbl = new Array()
                    for(i=0;i<list2.length;i++){
                            tbl.push(list2.options[i].value);
                    }
                    tbl.sort();//trie le tableau
                    list2.options.length=0;//efface la liste 2
                    for(i=0;i<tbl.length;i++){ //rempli la liste avec les données trié
                    var p= new Option(tbl[i],tbl[i]);
                    list2.options[list2.options.length]=p;
                    }
         }
     
    </SCRIPT>

    Code HTML : 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
     
    <body onload="ini(form1,form1.pers1,form1.pers2);">
     
    <form method="post"  name="form1" action="verif_personne.php" >
     
    <select name="pers1" size="10" multiple="multiple">
    </select>
     
    <input name="boutvD" type="button" class="style7"  onclick="gtod(this.form,this.form.pers1,this.form.pers2);" value="Ajouter" />
     
    <select name="pers2" size="10" multiple="multiple">
    </select>
     
    <input name="boutvG" type="button" class="style7"  onclick="gtod(this.form,this.form.pers2,this.form.pers1);" value="Retirer" />
     
    <input type="button" name="init" value="Initialisation"  onclick="ini(this.form,this.form.pers1,this.form.pers2);" />
     
    <input name="envoyer" type="submit" value="Envoyer"/>
     
    </form>
     
    </body>

    c'est tout ce que j'ai pu faire jusqu'a maintenant
    et le probleme maintenant c'est comment faire pour envoyer les personnes de la liste 2 (pers2) vers une table (par ex : TabMembres('id','Nom')) de ma base de données.

    Merci

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2006
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 147
    Par défaut
    Bonjour,
    j'ai essayé plein de truc mais aucune ne marche donc si je voulais changer mon select de "pers2" vers "pers2[]" comme suggerer par Haze
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <select name="pers2[]" size="10" multiple="multiple" >
    quelles seront les modifications qui doivent être apporter a ces fonctions javascript (ils marchent bien et je n'ai besion)
    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
     
    //initialise une liste
         function ini(form,list1,list2){
     
              // var MaTb = new Array(100);
     
                  list1.options.length=0;
                  list2.options.length=0;
                  MaTb.sort();
                  var i
                  for (i=0; i<MaTb.length; i++) {
                      var o=new Option(MaTb[i],MaTb[i]);
                      list1.options[list1.options.length]=o;
                  }
        }
     
           //passe les données de la liste 1 à la liste 2 et les trie par ordre alphabétique
         function gtod(form,list1,list2){
                    for(yo=0;yo<list1.length;yo++){
                                     if(list1.options[yo].selected == true){
                                     var p= new Option(list1.options[yo].value,list1.options[yo].value);
                                     list2.options[list2.options.length]=p;
                                     list1.options[yo] = null;                
                                     yo=yo-1;
                                     }
                    }
                     //trie de la liste, on creer un tab, on le trie et on reconstruit la liste
     
                           var tbl = new Array()
                    for(i=0;i<list2.length;i++){
                            tbl.push(list2.options[i].value);
                    }
                    tbl.sort();//trie le tableau
                    list2.options.length=0;//efface la liste 2
                    for(i=0;i<tbl.length;i++){ //rempli la liste avec les données trié
                    var p= new Option(tbl[i],tbl[i]);
                    list2.options[list2.options.length]=p;
                    }
         }
     
    </SCRIPT>

Discussions similaires

  1. Réponses: 6
    Dernier message: 15/06/2010, 03h18
  2. Réponses: 4
    Dernier message: 01/04/2010, 12h06
  3. [MySQL] Créer une table actuelle à partir d'une table historique
    Par cleminute dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 20/10/2009, 14h35
  4. [MySQL] Remplir une liste à partir d'une table MySQL
    Par missastro dans le forum PHP & Base de données
    Réponses: 25
    Dernier message: 27/08/2008, 17h42
  5. Réponses: 12
    Dernier message: 28/11/2006, 15h34

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