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.
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.
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.
++
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
Merci les gars et j'attend avec impatience votre aide
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>
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 :
Ensuite, il te suffit de récupérer les valeur du tableau $_POST['pers2'], avec un foreach par exemple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part <select name="pers2[]" size="10" multiple="multiple" >
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
Partie Javascript
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> "; ?>
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
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 Hazequelles 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 <select name="pers2[]" size="10" multiple="multiple" >
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>
Ah d'accord, quand j'ai lu ta première réponse j'ai cru que ma solution ne marchait pas, alors qu'en fait tu ne l'avais pas encore essayé.Envoyé par sara21
Bon, j'ai tenté de reproduire ta page chez moi, mais je n'y suis arrivé qu'à moitié car je n'y connais rien du tout en javascript.
Si j'ai bien compris, le code JS ne sert qu'à faire passer des membres de la liste "pers1" à la liste "pers2" à l'aide de boutons, et vice versa.
Ce que je ne comprends pas, c'est à quoi sert le javascript une fois que les membres de la liste pers2 sont envoyés dans le formulaire...
La récupération des données de ce formulaire doit se faire uniquement côté serveur, c'est à dire en PHP non ?
La cible du formulaire est verif_action.php, donc si tu veux récupérer la liste depuis cette page :
C'est simplement un tableau pers2[], lui même dans le tableau $_POST[].
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?php if (isset($_POST['pers2'])) { echo '<ul>contenu du tableau pers2[] :'; foreach($_POST['pers2'] as $element) { echo '<li>'.$element.'</li>'; } echo '</ul>'; } ?>
j'ai testé ceci mais rien n'est affiché
Par contre lorsque j'enleve le test
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <?php if (isset($_POST['pers2'])) { echo '<ul>contenu du tableau pers2[] :'; foreach($_POST['pers2'] as $element) { echo '<li>'.$element.'</li>'; } echo '</ul>'; } ?>il m'affiche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (isset($_POST['pers2']))
contenu du tableau pers2[] :
Warning: Invalid argument supplied for foreach() in c:\program files\easyphp1-8\www\Test15\verif_personne.php on line 5
Bonsoir,
Je ne maitrise pas trop le javascript, mais pour que la méthode avec le if(isset) fonctionne, il faut que dans ta balise <form> de ton formulaire il y ai la méthode:
Et là! Cela fonctionnera.
Code : Sélectionner tout - Visualiser dans une fenêtre à part method='POST'
++
La méthode POST est déjà correctement indiquée dans les attributs du formulaire :
Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part <form method="post" name="form1" action="verif_personne.php" >
Si absolument rien n'est affiché lorsqu'il y a la condition :
avant le code, ça signifie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (isset($_POST['pers2']))
- soit la cible n'a jamais reçu la liste pers2 du formulaire !
- soit aucun nom n'a été sélectionné
Dans ces deux cas, la variables $_POST['pers2'] n'est pas définie.
Donc forcément, si tu enlèves cette condition, foreach() reçoit une variable vide en argument et envoie un message d'erreur.
Es-tu sûr que la valeur de l'attribut action correspond bien au nom de ton fichier cible ?
Si tu veux tester directement ce que je raconte, tu peux toujours essayer ce bout de code pour te faire une idée du but visé (utilise Ctrl pour sélectionner plusieurs noms à la fois) :
Si ensuite tu n'y arrives toujours pas dans ton projet, fais voir le code de la page entière afin qu'on puisse essayer de voir ou ça coince...
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 <body> <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" > <p> <select name="pers2[]" size="10" multiple="multiple" > <option value="valeur 1">nom 1</option> <option value="valeur 2">nom 2</option> <option value="valeur 3">nom 3</option> <option value="valeur 4">nom 4</option> <option value="valeur 5">nom 5</option> </select> </p> <p> <input type="submit" value="Envoyer" /> </p> </form> <?php if (isset($_POST['pers2'])) { echo '<ul>contenu de la liste pers2[] :'; foreach($_POST['pers2'] as $element) { echo '<li>'.$element.'</li>'; } echo '</ul>'; } ?> </body>
Bonsoir tout le monde et merci a toi Haze pour ton effort
ton code marche bien (apres que j'ai supprimé <?php echo $_SERVER[PHP_SELF]; ?>)
mais le probleme c'est que si je dois utiliser la liste pers2 comme un tableau (pers2[]) alors il faut que je modifie mes fonctions javascript qui ont comme parametres des listes et non des tableaux (et c'est dommage parcequ'elles marchent tres bien en+ ces fonctioons sont tres importantes dans mon projet). est-ce qu'il y a une idée pour remedier a ca ?
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 <body> <form method="post" action=""> <p> <select name="pers2[]" size="10" multiple="multiple" > <option value="valeur 1">nom 1</option> <option value="valeur 2">nom 2</option> <option value="valeur 3">nom 3</option> <option value="valeur 4">nom 4</option> <option value="valeur 5">nom 5</option> </select> </p> <p> <input type="submit" value="Envoyer" /> </p> </form> <?php if (isset($_POST['pers2'])) { echo '<ul>contenu de la liste pers2[] :'; foreach($_POST['pers2'] as $element) { echo '<li>'.$element.'</li>'; } echo '</ul>'; } ?> </body>
Ah, pourtant $_SERVER['PHP_SELF'] contient juste l'adresse du script PHP exécuté, ça permet de s'assurer que le fichier cible du formulaire est le même que celui qui contient le formulaire, quelque soit le nom du fichier...Envoyé par sara21
Remplacer list2 par list2[] dans tes fonctions javascript rend le code inopérant ?
Désolé mais je ne connais pas du tout ce langage...
Si ton problème se situe effectivement au niveau du JS, peut-être devrais-tu tenté ta chance dans le forum approprié ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager