Votre question

Hierarchiser submit et onclick (pour un même bouton)

Tags :
  • Php
  • Programmation
Dernière réponse : dans Programmation
22 Février 2011 15:49:56

Bonjour à tous,

Je suis plutôt débutant...

Dans une page PHP, j'affiche des graphes en javascript, dont les valeurs dépendent de choix de menus déroulants.

J'aimerais donc que le bouton submit du formulaire (method POST) actualise également les données des graphes via l'appel d'une fonction Javascript :
<input type="submit" value=" Valider " onclick="updateData();">

Mon problème est que la fonction javascript updateData est appelée avant la validation du formulaire et le rafraichissement de la page (donc les graphes apparaissent brièvement avec les données non actualisées, puis la page s'actualise et les graphes disparaissent...)

Voilà, je ne sais pas si c'est bien clair.

Je vous remercie d'avance pour votre aide!

Autres pages sur : hierarchiser submit onclick bouton

a c 145 L Programmation
22 Février 2011 16:37:09

Il est normal (et logique) que le onclick se fasse avant le submit.
Si ton, graphique doit être mis à jour avec les nouvelles données postées, c'est lors de la réception qu'il faut traiter ça, vraissembablement en PHP.
Ou bien, si tu veux juste que ton bouton de validation mette à jour tes graphiques sans poster la page, il te suffit de modifier ta balise form et d'ajouter: onsubmit="return false;"
Ceci aura pour effet de bloquer l'envoi du formulaire.
m
0
l
22 Février 2011 16:53:14

Merci pour la réponse.

"c'est lors de la réception qu'il faut traiter ça "
=> oui c'est bien mon problème, étant donné que je poste sur la même page (qui s'appelle resultats.php)

en gros, j'ai cette architecture (j'essaie de mettre l'essentiel) :

mysql_connect(SERV,LOGIN,PASSWORD) ; mysql_select_db(BASE) ;
puis les SQLquery en fonction des valeurs indiquées dans les menus déroulants ;
puis PHP pour calculer les données à afficher sur les graphes ;

puis :

<html> <head>
<script type="text/javascript" language="javascript" src="./js/AnyChart.js"></script>
</head>

<form action="resultats.php" method="post" id="idresult" name="idresult">
<input type="submit" value=" Valider " onclick="updateData();">

<div id="container"></div>
<script type="text/javascript" language="javascript">
var chart = new AnyChart("./swf/AnyChart.swf");
chart.width = 350;
chart.write("container");

function updateData() {
var datagm = document.getElementById('idresult').donneesgm.value.toString();
chart.setData(datagm);}
</script>

<textarea id="donneesgm" style="visibility:hidden">
<anychart>
Ici le descriptif du graphe
</anychart>
</textarea>
</form>
</body>
</html>


Voilà, merci, et bonne fin de journée
Guillaume
m
0
l
Contenus similaires
a c 145 L Programmation
22 Février 2011 17:26:16

Est-ce que d'appeler la fonction depuis la balise body (onload="updateData();") ne serait pas ta solution ?
Je pense qu'avec le code complet, ou la page en ligne, ce serait plus simple de t'aider.

Soit dit entre nous, je pense que c'est sur le principe qu'il y a un souci :) 
m
0
l
22 Février 2011 17:39:23

génial je crois que c'est bon!
mais effectivement, il doit y avoir beaucoup de soucis sur le principe de mon code...

en tout cas je te remercie grandement pour ta réactivité!
m
0
l
a c 145 L Programmation
22 Février 2011 20:48:45

De rien :) 

Si tu veux qu'on revoie le principe, n'hésite pas à demander. Je pars du principe que si on peut appeler un javascript onload, c'est qu'on peut travailler au niveau serveur (donc en php), mais je peux me tromper :) 
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS