Page 1 sur 1

passer des variables javacript a php vers ma base de donnnee

Posté : 16 oct. 2007, 12:01
par choubix
hello,

j'ai un soucis: je ne sais pas comment recuperer des variables javascript pour les traiter en php...

le probleme est le suivant:

- l'utilisateur selectionne 4 numeros sur 12 sur index.php, ils s'affichent a l'ecran.
- il renseigne son email sur la meme page puis valide son formulaire
- l'utilisateur est renvoye vers subscribe.php ou on lui demande son nom, prenom et date de naissance.
- il valide de nouveau et son compte est cree et les numeros qu'il a choisi sont renseignes dans la base de donnees.

index.php contient un lien vers le fichier javascript qui traite le choix des numeros.


le code qui s'occupe de montrer les numeros choisi doit etre celui-ci:

Code : Tout sélectionner

function displaySelectedNumbers(){ if(o=document.getElementById('boules')){ var imgs=''; var t=parseSelectedNumbersString(selectedNumbers); for(var i=0;i<t.length;i++){ imgs+='<img src="template/english/images/lotto_images/'+t[i]+'.gif" alt="'+t[i]+'" />'; } o.innerHTML=imgs; }
si c'est bien ca: comment passer le t a subscribe.php??

merci :)

Posté : 16 oct. 2007, 12:11
par Ryle
Tu peux utiliser Ajax pour envoyer des informations au serveur et les stocker en base, voire en session en attendant de disposer de toutes les données nécessaires avant l'enregistrement.

Maintenant le plus simple c'est peut être un formulaire et 4 champs hidden (ou un seul) contenant les numéros selectionnés et mis à jour lors de l'affichage des numéros par ta fonction. Lorsqu'il validera le formulaire avec son mail les numéros partiront également :)

Posté : 16 oct. 2007, 12:46
par choubix
salut Ryle,

je ne connais pas Ajax.. je programmais juste en php de mon temps ;)

est ce que le javascript que j'ai donne semble etre celui qui recupere les numeros selectionnes par l'utilisateur selon toi?

le formulaire ressemble a ca (j'ai ecourte car il y a 12 entrees):

Code : Tout sélectionner

<form id="formGrilles" action="subscribe.php" method="post" onsubmit="if(this.id.value==''){alert('You have to click on an add banner to confirm your entry.');return false;}"> <div class="play"> <div class="gridnum"> <table id="numGrilles" border="0" cellpadding="0" cellspacing="0" width="290"> <tbody><tr> <td><a href="" onclick="setNumber('number01');return(false);" onmouseout="outNumber('number01');" onmouseover="overNumber('number01');"><img src="template/english/images/lotto_images/spacer_002.gif" alt="" name="number01" id="number01" border="0" height="29" width="29"><span>1</span></a></td> <td><a href="" onclick="setNumber('number02');return(false);" onmouseout="outNumber('number02');" onmouseover="overNumber('number02');"><img src="template/english/images/lotto_images/spacer_002.gif" alt="" name="number02" id="number02" border="0" height="29" width="29"><span>2</span></a></td>
au fur et a mesure que les numeros sont selectionnes ils apparaissent sur la page. ils sont appelles par ceci (qui est dans un css):

Code : Tout sélectionner

<div id="boules"></div>

tu penses qu'un champs hidden me permettrait de recuperer les numeros et de les traiter dans subscribe.php??

merci!

Posté : 16 oct. 2007, 13:51
par Ryle
Bah regardons en détail ce que fait ta fonction :
function displaySelectedNumbers(){ 
   if(o=document.getElementById('boules')){ // soit "o" l'élément dont l'id est "boules"
      var imgs=''; 
      var t=parseSelectedNumbersString(selectedNumbers); // récupère un tableau contenant les numéro selectionnés
      for(var i=0;i<t.length;i++){ // pour chaque élément du tableau (donc chaque nb sélectionné)
         imgs+='<img src="template/english/images/lotto_images/'+t[i]+'.gif" alt="'+t[i]+'" />';  // construit une chaine html pour afficher l'image associée
      } 
      o.innerHTML=imgs; // affiches les images génétée à l'intérieur de l'élément "o"
   } 
Donc en gros, dans ta fonction, selectedNumbers, doit être une chaine contenant les numéros sélectionnés, tout comme chacun des t. Tu peux donc très bien au moment de mettre à jour le div dont l'id est "boules", mettre à jour un ou plusieurs champs hidden de ton formulaire avec les valeurs selectionnées et ainsi les récupérer lors de la soumission :)

Posté : 16 oct. 2007, 13:52
par Berzemus
Il y a 3 fonctions appelées par le html que tu donnes la: setnumber, outnumber, overnumber, et je ne les vois pas dans ce que tu as déjà fourni comme exemple.

Je dirais aussi que s'inspirer d'un code existant, c'est bien, c'est comme ça qu'on peut apprendre, mais le copier purement et simplement, ça l'est moins.

D'autant qu'il te faudra quand même des compétences en Js pour pouvoir comprendre et utiliser à bon escient un code non commenté.

Et Ajax, c'est du javascript.

Posté : 16 oct. 2007, 16:32
par Invité
bon, donc direction les tutoriaux Ajax pour moi ce soir pour voir ce que ca donne!

je te rejoins sur les codes. le truc c'est que je ne suis pas un programmeur professionnel et que la je rends se(r)vice ;) par contre j'entends bien coder le php moi meme...

donc apprendre un nouveau language ca va etre un peu tendu :(

sans compter que je viens de voir comment le formulaire etait architecture: c'est plus complique prevu:
en fait c'est 2 formulaires l'un apres l'autre. le premier contient les numeros et l'autre l'email. lors de l'envoi seul l'email est passe a la page suivante...

je vais me cogner la tete contre les murs et je reviens ;)

Posté : 17 oct. 2007, 09:52
par Ryle
Ajax n'est pas un nouveau langage... c'est rien de plus que du javascript et un principe vieux de plusieurs années qui est enfin compatible sur l'ensemble des navigateurs :)

Et pas besoin de se mettre à ajax pour ce que je t'ai dit, un simple champ hidden dans ton formulaire que tu mets à jour dans ta fonction displaySelectedNumbers() avec la valeur de la variable "selectedNumbers" et que tu n'as plus qu'à parser une fois reçu côté php :)
...
o.innerHTML=imgs; // affiches les images génétée à l'intérieur de l'élément "o" 
document.nom_formulaire.nom_champ_hidden.value = selectedNumbers;