Inserer une variable JS dans un formulaire HTML

Inserer une variable JS dans un formulaire HTML - HTML/CSS - Programmation

Marsh Posté le 25-05-2010 à 09:54:51    

Bonjour,
Voila j'ai un soucis avec mon formulaire, je souhaite récupérer une variable javascript et l'envoyer par le biais d'un formulaire. Problème, la variable n'est pas envoyer dans le script php de ma deuxième page. Voici mon code:
 
Page1:

Citation :

<body onload="document.valeur.submit()">
 
<script>
var ecran = screen.width;
</script>
 
<form name="valeur" action="http://127.0.0.1/wordpress/?page_id=4" method="POST">
<input type="HIDDEN" name="resolution" value="<script>document.write(ecran)</script>"></input>
</form>
 
</body>


 
Page2:

Citation :


<?php
         echo $_POST['resolution'].'-';
         $bloginfo = get_bloginfo('stylesheet_directory');
         $fav = $bloginfo.'/favicon.ico';    
?>


 
Dans la page2 le code n'est pas terminé, je teste juste pour l'instant si une valeur est présente dans $_POST['resolution']. Je pense que le problème vient de la page1 et du champ value dans mon input mais je ne sais pas trop comment le formuler.
 
Si quelqu'un a une idée...  :ange:  
Merci d'avance!  :)

Reply

Marsh Posté le 25-05-2010 à 09:54:51   

Reply

Marsh Posté le 25-05-2010 à 09:58:10    

Salut,

 

Je procéderais de la sorte : sur le onload(), tu appelles une fonction, qui affecte la valeur de la résolution au champ de formulaire, puis qui le submit, le tout en javascript. Le document.write() ne me paraît pas adapté à ce que tu souhaites faire.

 

=> un truc comme document.forms[0].monchamp.value = maresolution;

 

(le code n'est sans doute pas exact, j'ai pas fait de js depuis un moment)


Message édité par Fred999 le 25-05-2010 à 09:58:24
Reply

Marsh Posté le 25-05-2010 à 10:26:19    

Merci pour cette réponse, est ce que tu pourrais être un plus précis quant à l'utilisation de ton code?
Je dois remplacer le document.write par ce que tu m'as donné?

Reply

Marsh Posté le 25-05-2010 à 10:30:07    

Tu supprimes le document.write(), vu que la valeur du champ sera attribuée lors de l'exécution de la fonction.


Message édité par Fred999 le 25-05-2010 à 10:30:14
Reply

Marsh Posté le 25-05-2010 à 10:43:00    

Voila ça marche, merci beaucoup fred999 !  :)

Reply

Marsh Posté le 25-05-2010 à 11:07:17    

Bonjour,
 
Ce que veut dire Fred999, c'est un truc du genre :

Code :
  1. <script type="text/javascript">
  2. function myLoad() {
  3.   document.getElementById('resolution').value = screen.width;
  4.   document.valeur.submit();
  5. }
  6. </script>
  7. <body onload="myLoad()">
  8. <form name="valeur" action="http://127.0.0.1/wordpress/?page_id=4" method="POST">
  9. <input type="HIDDEN" id="resolution" value=""></input>
  10. </form>
  11. </body>


 
Quelque chose du genre...


---------------
Fred => http://www.meance.free.fr
Reply

Marsh Posté le 25-05-2010 à 11:22:22    

Voilà, c'est exactement ça :o

Reply

Marsh Posté le 25-05-2010 à 14:51:47    

Merci dzing35, j'ai appliqué ton code, plus propre que ce que j'avais fait moi même si ça marchait ^^
Par contre, il me reste un problème, donc quand j'arrive sur la page c'est nikel, en revanche quand je change de page il ne se souvient plus de la variable apparament, par exemple quand je suis sur page_id=6 il n'a plus l'air de se souvenir.
En fait c'est pour afficher une feuille de style différente si la résolution est de 800 ou supérieur.
Concrètement:
Page1

Citation :


<script type="text/javascript">
   
function myLoad() {
 document.getElementById('resolution').value = screen.width;
  document.valeur.submit();
 }
 
</script>
 
<body onload="myLoad()">
<form name="valeur" action="http://127.0.0.1/wordpress/?page_id=4" method="POST">
<input type="HIDDEN" name="resolution" id="resolution" value=""></input>
</form>
</body>


 
Page2

Citation :

<?php
         $bloginfo = get_bloginfo('stylesheet_directory');
         $fav = $bloginfo.'/favicon.ico';  
   
   if ($_POST['resolution']<='800') {
   $val = $bloginfo.'/style2.css';
   }
   else {
   $val = $bloginfo.'/style.css';
   }
?>
 
        <link rel="stylesheet" href="<?php echo $val ?>" type="text/css" media="screen" />
       <link rel="shortcut icon" href="<?php echo $fav; ?>"/>


 
Donc voila, la première fois quand j'arrive sur la page qui correspond à l'action du formulaire c'est à dire http://[...]page_id=4 et bien il m'affiche la seconde feuille de style (normal puisque je suis en 1024), sauf que quand je clique sur une autre page, il affiche la première, comme si la valeur contenu dans la variable $_POST['resolution'] était inférieure ou égale à 800.  
Bizarre, à la limite si elle était vide (ce que j'aurais pu comprendre) le navigateur n'afficherait aucune feuille de style, non?
J'espère que j'ai été claire lol  :ange:

Reply

Marsh Posté le 25-05-2010 à 16:04:10    

Bin ta variable $_POST n'est valable que pour la page correspondant à page_id=4, ensuite elle est paumée... il faudrait utiliser les sessions ou un cookie, parce que tu ne vas pas te trimbaler un formulaire à poster de page en page...

 

Elle est vide, par défaut vide < 800 je suppose...

Message cité 1 fois
Message édité par Fred999 le 25-05-2010 à 16:04:45
Reply

Marsh Posté le 25-05-2010 à 17:01:55    

Fred999 a écrit :

Bin ta variable $_POST n'est valable que pour la page correspondant à page_id=4, ensuite elle est paumée... il faudrait utiliser les sessions ou un cookie, parce que tu ne vas pas te trimbaler un formulaire à poster de page en page...
 
Elle est vide, par défaut vide < 800 je suppose...


 
+1
 
Perso, je crois que je ferai une première page en demandant à l'utilisateur de choisir sa résolution et je garde son choix en session ou alors optimiser le site pour du 800x600 uniquement. Ceci dit 800x600, il ne doit pas y avoir beaucoup de personnes à utiliser cette résolution...


---------------
Fred => http://www.meance.free.fr
Reply

Marsh Posté le 25-05-2010 à 17:01:55   

Reply

Marsh Posté le 25-05-2010 à 22:43:11    

Mais-le-client-a-toujours-raison [:sadnoir]

Reply

Marsh Posté le 26-05-2010 à 00:07:38    

la solution reste quand même dégueulasse :o
la meilleure technique c'est de refaire le design fluidement.
tu me files ton HTML et ta CSS et je te torche ça en deux temps trois mouvements. pour te prouver que tu n'as pas besoin de passer par des méthodes à la con pour obtenir ce dont tu as besoin :o


---------------
Blablaté par Harko
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed