Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/03/2011, 12h41   #1
Membre à l'essai
 
Inscription : mars 2009
Messages : 170
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 170
Points : 20
Points : 20
Par défaut OnChange sur liste déroulante

Bonjour à tous,

je ne suis pas un pro en JavaScript donc je fais appel à votre savoir.

J'ai fait une fonction qui permet de lister dans un champs "liste" la totalité des éléments de ma table "catégories" de ma base de données.

je fais appel à cette fonction dans un formulaire. Le but étant de récupérer le choix de l'utilisateur. J'ai pour cela utiliser l'événement onChange="document.forms['Selectcategorie'].submit(); . Je l'ai déjà utilisé sur d'autres pages sans problème et je l'utilise sur la même page pour d'autres fonctions.

Le problème que je rencontre est que pour la fonction reprise ci-dessous, ma page ne se recharge pas uniquement avec cette fonction. Par contre, chose étrange si je fais appel (juste après) une seconde fois à cette fonction cela marche !

Je vous mets le code de ma fonction et son "appel" dans ma page ci-dessous:
Quelqu'un aurai-il une idée ?
la fonction:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
function ChooseCategorie()
{
 echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post" id="Selectcategorie">';
 ?>
<SELECT name="categorie" id="categorie" value="0" size="1" style="width:200px;" onChange="document.forms['Selectcategorie'].submit();">
<?php
 echo '<OPTION>Sélectionnez une categorie</OPTION>';
 $sql_categorie	= mysql_query("SELECT * FROM t_categorie_cat ORDER BY cat_nom ASC") or die(mysql_error());
 while ( $donnees_categorie	= mysql_fetch_array($sql_categorie) )
{
 echo '<OPTION value='.$donnees_categorie['cat_id'].'>'.$$donnees_categorie['cat_code'].' - '.ucfirst($donnees_categorie['cat_nom']).'</OPTION>';
}
 echo '</SELECT><br />';
 
 echo '</form>';
}

l'appel dans ma page:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post" class="new-client-form">
 <fieldset><legend style="font-size:20px;">1 - Choix de la categorie </legend>
 
 <!-- 1 La categorie -->
 <table>
 <tr>
 	<td>
 	<?php 
 	ChooseCategorie(); 
 	var_dump($_POST['categorie']);
 	?>
 	</td> 
 </tr>
 </table>
 </fieldset>
</form>
Je pense que cela doit-être une histoire de balise mal fermée mais je ne vois pas.

Merci pour votre aide !
paintbox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2011, 12h54   #2
Expert Confirmé
 
Avatar de javatwister
 
Homme
danseur
Inscription : août 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : danseur

Informations forums :
Inscription : août 2003
Messages : 2 667
Points : 3 035
Points : 3 035
merci beaucoup!
javatwister est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 19/03/2011, 13h39   #3
Membre expérimenté
 
Avatar de nadox
 
Homme
Développeur
Inscription : février 2010
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Développeur
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2010
Messages : 360
Points : 545
Points : 545
?

Euh...combien de formulaire as-tu ? Quel formulaire veux-tu envoyer ?

Tu as regardé le code HTML généré ? (doit faire mal au yeux....!)
nadox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2011, 14h02   #4
Membre à l'essai
 
Inscription : mars 2009
Messages : 170
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 170
Points : 20
Points : 20
Hello nadox,

merci pour ton aide.

En fait, mes listes déroulantes sont dans 1 formulaire et puis l'appel des fonctions se fait dans un formulaire général qui contient d'autres listes déroulantes (sous forme de fonctions). Ces dernières fonctionnent parfaitement.

Je peux faire qu'un seul formulaire pour le tout? Et ce serait ce formulaire que je rechargerais pour toutes les fonctions liste que j'ai ?
paintbox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2011, 14h18   #5
Membre expérimenté
 
Avatar de nadox
 
Homme
Développeur
Inscription : février 2010
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Développeur
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2010
Messages : 360
Points : 545
Points : 545
Euh deux choses :

1- au niveau validatité du HTML, on ne devrais pas avoir un formulaire qui contient un autre formulaire...
2- au niveau de ton problème, le formulaire a un 'id' mais pas de 'name', et c'est bien le 'name' qui est utilisé pour
Code :
document.nom_de_mon_formulaire.submit()
(cf ma réponse précédente)

C'est d'ailleurs plus propre de faire :
Code :
document.forms['nom_de_mon_formulaire'].submit()
Enfin, tout est question de validité/interopérabilité entre les navigateurs ensuite...
nadox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2011, 14h20   #6
Expert Confirmé
 
Avatar de javatwister
 
Homme
danseur
Inscription : août 2003
Messages : 2 667
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : danseur

Informations forums :
Inscription : août 2003
Messages : 2 667
Points : 3 035
Points : 3 035
sachant aussi qu'un formulaire ne doit pas avoir d'attribut name...
__________________
On ne mord pas, on manifeste seulement notre tristesse face à des exposés de situations qui défient notre entendement binaire.
javatwister est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2011, 14h36   #7
Membre expérimenté
 
Avatar de nadox
 
Homme
Développeur
Inscription : février 2010
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Développeur
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2010
Messages : 360
Points : 545
Points : 545
Oui javatwister, si le doctype est strict. (ce qui d'ailleurs devrait être le cas sur un nouveau projet...)

Mais je crois que paintbox cherche à faire en sorte que ça marche sans même s'interresser au respect des standards

Citation:
Envoyé par paintbox Voir le message
Je peux faire qu'un seul formulaire pour le tout? Et ce serait ce formulaire que je rechargerais pour toutes les fonctions liste que j'ai ?
Tu ne recharge pas un formulaire mais la page complète à chaque fois... donc je ne vois pas l'intérêt d'avoir plusieurs formulaires... par contre, tu vas faire quoi avec ce formulaire 'global' au final ? Toujours poster sur la page courante ? Enregistrer les données dans la base ?
nadox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2011, 14h44   #8
Membre à l'essai
 
Inscription : mars 2009
Messages : 170
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 170
Points : 20
Points : 20
En fait, mon formulaire est utilisé dans un back-office. Cette page me permet d'ajouter un nouveau produit dans ma base. Sur cette page, j'affiche sous forme de liste les "catégories" de produits ainsi que d'autres infos. De plus, l'utilisateur peut également ajouter une nouvelle catégorie.

Le but final du formulaire "général" est donc d'engristrer le nouveau produit dans la base de données.

J'ai essayé en mettant name="blabla" à mon formulaire mais cela ne change rien.

Question ? Pourquoi est ce que cette fonction si j'y fait appel à nouveau dans le même formulaire fonctionne?
paintbox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2011, 14h51   #9
Membre expérimenté
 
Avatar de nadox
 
Homme
Développeur
Inscription : février 2010
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Développeur
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2010
Messages : 360
Points : 545
Points : 545
et :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
function ChooseCategorie()
{
 echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post" id="Selectcategorie" name="Selectcategorie">';
 ?>
<SELECT name="categorie" id="categorie" value="0" size="1" style="width:200px;" onChange="document.forms['Selectcategorie'].submit();">
<?php
 echo '<OPTION>Sélectionnez une categorie</OPTION>';
 $sql_categorie	= mysql_query("SELECT * FROM t_categorie_cat ORDER BY cat_nom ASC") or die(mysql_error());
 while ( $donnees_categorie	= mysql_fetch_array($sql_categorie) )
{
 echo '<OPTION value='.$donnees_categorie['cat_id'].'>'.$$donnees_categorie['cat_code'].' - '.ucfirst($donnees_categorie['cat_nom']).'</OPTION>';
}
 echo '</SELECT><br />';
 
 echo '</form>';
}
ne fonctionne pas ?
le name est a mettre sur le formulaire sur lequel on fait le submit...
nadox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2011, 14h57   #10
Membre à l'essai
 
Inscription : mars 2009
Messages : 170
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 170
Points : 20
Points : 20
Non, cela ne fonctionne pas.

Par contre si je répète l'appel de la fonction juste après le premier appel, elle fonctionne comme ceci:

Code :
1
2
3
4
5
6
 
 	<?php 
 	ChooseCategorie(); 
 	ChooseCategorie(); 
 	var_dump($_POST['categorie']);
 	?>
Ce qui me fait penser que ce doit être une balise mal fermé ou un truc du genre?
paintbox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2011, 15h03   #11
Membre expérimenté
 
Avatar de nadox
 
Homme
Développeur
Inscription : février 2010
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Développeur
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2010
Messages : 360
Points : 545
Points : 545
Bon je me rends compte que le problème n'est pas javascript mais bien PHP...

Le problème javascript aurait été corrigé avec l'ajout du name(je ne sais pas si tu as vu j'ai modifié le dernier code que j'ai posté)

Par contre, je ne suis pas expert en PHP, mais je crois voir deux erreurs :
- ton select n'est pas écrit par un echo (donc a priori écrit seulement à l'endroit ou tu défini ta fonction)
- tu as un double $ quelque part...

As-tu le code HTML généré, c'est lui qui te permettras de voir si le html est correct ?

De plus, nous ne sommes pas sur le forum PHP, le Javascript est éxécuté coté client, pas coté serveur !
nadox est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h42.


 
 
 
 
Partenaires

Hébergement Web