Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1096 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [js] Insertion dans une bdd du choix dans une liste

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[js] Insertion dans une bdd du choix dans une liste

n°702616
force_jaun​e
you play, you pay
Posté le 19-04-2004 à 11:21:35  profilanswer
 

Bonjour tout le monde
voila mon petit probleme:
Je voudrais insérer dans une bdd chaque valeur que l'utilisateur aura choisi dans une liste. donc j'utilise un petit 'onchange' et la je balance ma fonction qui utilise du php pour inserer la valeur choisie dans ma bdd. Mais je ne sais pas pkoi (suis pas une star en js :) ) mais ma fonction n'est jamais appelée, j'ai testé en lui demandant de lancer un 'alert' dans ma fonction, et cet 'alert' ne s'ouvre jamais.
Voila mon code :  

Code :
  1. // la fonction que je lance
  2. function EntrerDansTable()
  3. {
  4. code_It = document.frmDemo1.zlItem.selectedIndex;
  5. numcom=document.saisie.numcom.value;
  6. alert ("script lance" );
  7. <?
  8. $sql= "insert into com2cat (numcom, numsscat) values ('".$numcom."' , '".$code_It."' )";
  9. if ( ! $resultat=mysql_query($sql))
  10. echo "ERREUR dans la table sscat : ".mysql_error($resultat);
  11. ?>
  12. }
  13. //et la partie de mon formulaire en php ou la fonction devrait etre lancée
  14. echo "&nbsp;<B>Sous catégories</B>&nbsp;";
  15. echo "&nbsp;<SELECT NAME='zlItem' onChange='EntrerDansTable()'>\n";
  16. for ($cpt = 0; $cpt < $max_lignes; $cpt++)
  17.   echo "<OPTION>".ereg_replace(".", "--", $option_max)."</OPTION>\n";
  18. echo "</SELECT>&nbsp;\n";
  19. if (!isset($zlItem)) $zlItem = -1;
  20. echo "<SCRIPT LANGUAGE='JavaScript'>\n;ModifierListe(".$zlItem." );\n</SCRIPT>\n";


 
Donc si vous voyez d'ou viens mon erreur...
En tout cas, merci de m'avoir lu ;)


Message édité par force_jaune le 19-04-2004 à 11:39:00
mood
Publicité
Posté le 19-04-2004 à 11:21:35  profilanswer
 

n°702622
Lord II
PIB2000
Posté le 19-04-2004 à 11:28:57  profilanswer
 

Salut,
 
C'est une idée ou il y a du php dans ta fonction js ???
 
Pierre

n°702630
jagstang
Pa Capona ಠ_ಠ
Posté le 19-04-2004 à 11:34:24  profilanswer
 

essaie l'event onclick pour voir

n°702631
force_jaun​e
you play, you pay
Posté le 19-04-2004 à 11:34:36  profilanswer
 

heu non, c'est pas une idée, mais à priori ça doit passer, non??? j'ai déjà vu dans des scripts sur le net des fonctions js avec du php dedans, en plus je suis obligé, vu que je dois mettre a jour ma bdd

n°702632
force_jaun​e
you play, you pay
Posté le 19-04-2004 à 11:35:11  profilanswer
 

ok jagstang, je vais voir le onclick a la place

n°702634
force_jaun​e
you play, you pay
Posté le 19-04-2004 à 11:36:59  profilanswer
 

avec le onclick, ca fais tj pareil, ma fonction se lance pas :( , merci qd meme ;)

n°702639
jagstang
Pa Capona ಠ_ಠ
Posté le 19-04-2004 à 11:38:49  profilanswer
 

donne un bout de code généré stp

n°702641
force_jaun​e
you play, you pay
Posté le 19-04-2004 à 11:41:04  profilanswer
 

excuse moi, je vois pas ce que tu veux dire par 'bout de code généré', si tu veux les erreurs affichées, en fait je n'ai aucune erreur

n°702643
jagstang
Pa Capona ಠ_ಠ
Posté le 19-04-2004 à 11:43:01  profilanswer
 

non, le source html généré par ton code PHP...

n°702644
fred777888​999
Posté le 19-04-2004 à 11:43:08  profilanswer
 

force_jaune a écrit :

Bonjour tout le monde
voila mon petit probleme:
Je voudrais insérer dans une bdd chaque valeur que l'utilisateur aura choisi dans une liste. donc j'utilise un petit 'onchange' et la je balance ma fonction qui utilise du php pour inserer la valeur choisie dans ma bdd. Mais je ne sais pas pkoi (suis pas une star en js :) ) mais ma fonction n'est jamais appelée, j'ai testé en lui demandant de lancer un 'alert' dans ma fonction, et cet 'alert' ne s'ouvre jamais.
Voila mon code :  

Code :
  1. // la fonction que je lance
  2. function EntrerDansTable()
  3. {
  4. code_It = document.frmDemo1.zlItem.selectedIndex;
  5. numcom=document.saisie.numcom.value;
  6. <?
  7. $sql= "insert into com2cat (numcom, numsscat) values ('".$numcom."' , '".$code_It."' )";
  8. if ( ! $resultat=mysql_query($sql))
  9. echo "ERREUR dans la table sscat : ".mysql_error($resultat);
  10. ?>
  11. }
  12. //et la partie de mon formulaire ou la fonction devrait etre lancée
  13. echo "&nbsp;<B>Sous catégories</B>&nbsp;";
  14. echo "&nbsp;<SELECT NAME='zlItem' onChange='EntrerDansTable()'>\n";
  15. for ($cpt = 0; $cpt < $max_lignes; $cpt++)
  16.   echo "<OPTION>".ereg_replace(".", "--", $option_max)."</OPTION>\n";
  17. echo "</SELECT>&nbsp;\n";
  18. if (!isset($zlItem)) $zlItem = -1;
  19. echo "<SCRIPT LANGUAGE='JavaScript'>\n;ModifierListe(".$zlItem." );\n</SCRIPT>\n";


 
Donc si vous voyez d'ou viens mon erreur...
En tout cas, merci de m'avoir lu ;)


decidement, on en revient tj au meme point : le JS = langage cote client, le php, cote serveur. Tu dois faire 1 formulaire qui appele une page php pour faire les insert, tu ne peux pas le faire cote client.
ton code est bon, mais il faut lancer 1 nouvelle page asp avec un document.saisie.submit() à la place de ton code php et mettre ton code php dans le script 'action' de ton formulaire (apres avoir recupere les valeurs postees) d'ailleurs, remplace ton echo php par un alert et tu verra que ta fonction est bien appelee sur le onChange, mettre 1 onClick ne changera strictement rien.


Message édité par fred777888999 le 19-04-2004 à 11:44:50
mood
Publicité
Posté le 19-04-2004 à 11:43:08  profilanswer
 

n°702659
force_jaun​e
you play, you pay
Posté le 19-04-2004 à 12:04:56  profilanswer
 

Jagstang>> heu, en fait le html généré par mon php, est assez enorme, vu que j'ai une trentaine de catégories et une dizaien de sous categories par categorie, donc en gros j'ai 1400 lignes.Et par contre bizarrement, je ne trouve pas le code de ma fonction 'EntrerDansLaTable' dans le source alors que j'ai une autre fonction js 'ModifierListe'qui s'affiche.  
 
fred777888999>> En fait j'ai eu beaucoup de mal à décider de la structure de mon code, sachant que j'ai un gros formulaire qui fait appel régulièrement à ma bdd. C'est un formulaire qui permet de rentrer des nouveaux clients et leurs options ds une bdd. Il y a beaucoup d'informations à entrer et plusieurs tables qui sont modifiées à chaque fois. Mon commanditaire préfère avoir tout le formulaire sur la même page. Donc si je peux le faire, c'est mieux comme ça. En plus, j'ai du javascript qui me produit des tableaux, et je ne sais pas comment faire passer ces tableaux entre plusieurs pages. Donc j'ai décidé de faire une structure comme suit :  

Code :
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <?php
  6. $echec="";
  7. if ($validation)
  8. {
  9. // tests de saisie et eventuellement, remplissage de 'echec'
  10. }
  11. if($echec=="" ) {
  12. //code a executer sur les saisies si pas d'erreur de saisies
  13. }
  14. if(!$validation || $echec != "" ) { ?>
  15. <!-- formulaire -->
  16. <?php
  17. }
  18. ?>
  19. </body>
  20. </html>


Dans mon formulaire je dois faire appel souvent  à du php, pour générer des listes notamment.  
Et je pense que avec ma structure, ça peut marcher, vu que ma génération de listes dynamiques (affichage d'une liste de sous categories en fonction de la categorie selectionnée dans une premiere liste (PHP + JS)) fonctionne tres bien, donc je ne vois pas pourquoi ca ne marcherai pas... Mais bon si vraiment tu penses que ce n'est pas possible, je découperai le formulaire en plusieurs pages.  
 
J'ai rajouté dans le code de mon premier message le 'alert' qui ne s'affiche toujours pas.
 

n°702665
Lord II
PIB2000
Posté le 19-04-2004 à 12:11:09  profilanswer
 

Ce qui nous dérange c'est que tu as mis du code php ( executé coté serveur) à l'interieur de ton code javascript ( executé coté client).
 
Donc ce qui se produit sur ta page, c'est que le parseur php, parse la page, execute le code php, et ensuite envoie le tout au client.
 
Donc, tes requetes de modification présentes dans la focntion EntrerDansBase ne sont pas là, donc ta fonction ne fait rien.
 
Pour que cela marche, il faut que lors de l'appel de la fonction, tu appel une page sur ton serveur pour faire les modifications.

n°702666
Lord II
PIB2000
Posté le 19-04-2004 à 12:12:43  profilanswer
 

Tu dis que la focntion entrerdanslatable n'est pas présente dans la source de la page, ce qui tendrait à dire que tu as un autre souci, car la fonction n'existe pas....

n°702670
force_jaun​e
you play, you pay
Posté le 19-04-2004 à 12:17:08  profilanswer
 

ok, je viens de capter :) dsl, c dur les debuts de semaine :), je vais essayer de voir comment je pourrai faire, merci de m'avoir désembué le cerveau :D
 
En fait, apres une petite reflexion, y a tj un truc que je capte pas, j'ai fait exactement pareil pour afficher ma seconde liste en fonctions du choix de ma première liste, et ca marche tres bien, voici le code :

Code :
  1. $sql = "SELECT numero, intitule FROM catgencom ORDER BY intitule";
  2. $resultat = mysql_query($sql);
  3. echo "<FORM METHOD=POST NAME='frmDemo1'>";
  4. echo "<BR>&nbsp;<B>Catégorie</B>&nbsp;";
  5. echo "&nbsp;<SELECT NAME='zlRubrique' onChange='MettreAJourListe(-1)'>\n";
  6. while ($enr = mysql_fetch_array($resultat)) {
  7.   echo "<OPTION VALUE='".$enr[0]."'";
  8.   if ($zlRubrique == $enr[0]) echo " SELECTED";
  9.   echo ">".htmlspecialchars($enr[1])."</OPTION>\n";
  10. }
  11. echo "</SELECT>&nbsp;\n";


Dans ce code, la fonction MettreAJourListe est bien appelée à chaque clic de l'utilisateur.
Donc en fait je comprends bien pourquoi ca marche pas ma seconde liste, mais je comprends plus pourquoi mon affichage de seconde liste marche :D


Message édité par force_jaune le 19-04-2004 à 12:18:36
n°702673
Lord II
PIB2000
Posté le 19-04-2004 à 12:19:27  profilanswer
 

Y aurait-il moyen de voir le code la fonction MettreAJourListe ?

n°702680
force_jaun​e
you play, you pay
Posté le 19-04-2004 à 12:23:36  profilanswer
 

Bien sur :)  

Code :
  1. function MettreAJourListe(code_item) {
  2.  
  3.   lg = document.frmDemo1.zlItem.length;
  4.  
  5.   // On vide la liste
  6.   for (i = lg - 1; i >= 0; i--) {
  7.     document.frmDemo1.zlItem.options[i] = null;
  8.   }
  9.    
  10.   code_rub = document.frmDemo1.zlRubrique.selectedIndex;
  11. <?php
  12. // Génération des Items par Rubriques
  13. $sql = "SELECT numero FROM catgencom ORDER BY numero";
  14. $resultat = mysql_query($sql);
  15. $max_lignes = 0;
  16. $option_max = '';
  17. while ($enr = mysql_fetch_array($resultat)) {
  18.  
  19.   $sql  = "SELECT numero,intitule ";
  20.   $sql .= "FROM sscatcom ";
  21.   $sql .= "WHERE categorie='".$enr[0]."'";
  22.   $sql .= "ORDER BY intitule";
  23.   $resultat2 = mysql_query($sql);
  24.   echo "  if (document.frmDemo1.zlRubrique.options[code_rub].value == ".$enr[0]." ) {\n";
  25.   echo "    document.frmDemo1.zlItem.length = ".(mysql_num_rows($resultat2)).";\n";
  26.   $cpt = 0;
  27.   while ($enr2 = mysql_fetch_array($resultat2)) {
  28.     echo "    document.frmDemo1.zlItem.options[".$cpt."].value = ".$enr2[0].";\n";
  29.     echo "    document.frmDemo1.zlItem.options[".$cpt."].text  = \"".$enr2[1]."\";\n";
  30.     echo "    if (code_item == ".$enr2[0]." ) document.frmDemo1.zlItem.options[".$cpt."].selected = true;\n";
  31.     $cpt++;
  32.     if ($cpt > $max_lignes) $max_lignes = $cpt;
  33.     if (strlen($enr2[1]) > strlen($option_max)) $option_max = $enr2[1];
  34.   }
  35.   echo "  }\n";
  36. }
  37. ?>
  38.      
  39. }


en fait je viens de voir que cette fonction est la meme que modifierListe, ds mon premier post, c'est juste que j'ai changé le nom entre temps
sinon, je suis bien conscient que mon code est crade et que je melange sans arret php et js, mais bon je debute, je voyais aps trop comment faire autrement


Message édité par force_jaune le 19-04-2004 à 12:25:43
n°702684
Lord II
PIB2000
Posté le 19-04-2004 à 12:31:39  profilanswer
 

D'après le code que je semble entreapercevoir au travers de ces lignes, il semblerait que tu gènére tous les cas possibles , pour ensuite les tester grâce à la fonction JS.
 
Je ne serait pas étonné que le poids de la page soit énorme.
 
A mon avis, il y a moyen de faire bien plus simple. Il faudra bien sur faire des rechargmenets de pages, ou alors coder les données en JS via des tableaux ce qui permettra de ne faire qu'une seule petite fonction de test.

n°702783
force_jaun​e
you play, you pay
Posté le 19-04-2004 à 14:22:00  profilanswer
 

oui, c'est ça, je génère tous les cas possibles (que je retrouve dans le source de la page). C'est vrai que la page fait a peu pres 85ko sans les images :D C'est fait pour marcher en localhost principalement, donc ce n'est pas un réel probleme en soi, mais c'est clair qu'il doit y avoir moyen d'optimiser tout ça.
 
Mais je comprends par contre toujours pas pourquoi le code de ma fonction MettreAJourListe est executé à chaque clic de l'utilisateur, alors que le 'alert' de ma fonction EntrerDansTable ne peut pas être executé à chaque clic.

n°702954
force_jaun​e
you play, you pay
Posté le 19-04-2004 à 16:03:19  profilanswer
 

Bon en fait, c'est important que je fasse ce formulaire sur une seule page, donc je continue dans ma voie (qui a dit têtu?? :D ).
Et en fait ça a l'air de bien marcher, j'ai juste quelques petits problèmes de syntaxes en js, vu que je débute, mais mes fonctions js s'executent correctement lorsque l'utilisateur clique sur mes listes.
J'ai seulement un problème de passage de variables entre mon js et mon php, mais en cherchant un peu je devrai trouver

n°702962
jagstang
Pa Capona ಠ_ಠ
Posté le 19-04-2004 à 16:09:37  profilanswer
 

passer des valeurs
 
PHP --> JS (pas de problème)
JS --> PHP (pas possible sans recharger la page (GET ou POST))
 
Tétu oui, mais pas trop tout de même...

n°703004
force_jaun​e
you play, you pay
Posté le 19-04-2004 à 16:35:23  profilanswer
 

et c'est meme pas possible en ajoutant un petit formulaire avec des champs "hidden" dans ma fonction js??? histoire de recuperer avec un post ensuite sans recharger la page.
Parce que franchement mon formulaire fais 700 lignes et g pas trop envie maintenant de changer de stratégie et tout recommencer en plusieurs pages :(

n°703059
jagstang
Pa Capona ಠ_ಠ
Posté le 19-04-2004 à 17:19:49  profilanswer
 

c'est de la bidouille mais c'est faisable. Bon courage

n°703101
force_jaun​e
you play, you pay
Posté le 19-04-2004 à 17:51:59  profilanswer
 

ok merci, ca me donne un peu de courage si tu me dis que c'est faisable, je continue...

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [js] Insertion dans une bdd du choix dans une liste

 

Sujets relatifs
Flash insertionprogramme qui change une liste de ligne sur un fichier txt (débutant)
[Access97] Recherche avec l'option "tous" (zone de liste modifiable)[ACCESS] Liste déroulante dans formulaire
Liste des fichiers d'un repertoire[Flash] Insertion dynamique de bitmap à partir de la bibliothèque
[css] liste décalée[PHP] Liste des variables globales.
Liste déroulante et valeur renvoyéeModification textes en fonction d'un choix de menu déroulant
Plus de sujets relatifs à : [js] Insertion dans une bdd du choix dans une liste


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR