Incoherence variable Php/javascript

Fermé
tme1589 - 11 juin 2008 à 11:34
 tme1589 - 11 juin 2008 à 14:47
Bonjour,
Voici mon soucis:


<script type="text/javascript">
document.write(screen.width)
var r= screen.width //recuperation de la resolution dans r
document.write(r);
</script>

<?php $reso="<script>document.write(r);</script>"; // r dans une variable php $reso
echo $reso; // cela affiche reso=1280

if($reso >1025)
{
echo 'non';
}
//je ne rentre pas dans cet boucle
if($reso < 1025)
{
echo 'yes';
} //je rentre dans cette boucle,alors que $reso=1280>


Je ne comprend donc pas pourquoi je ne rentre pas dans la bonne boucle,etant donnée que ma variable fait plus de 1025.
Merci d'avance.
A voir également:

1 réponse

Bonjour,


Il s'agit d'un problème de compréhension du fonctionnement de PHP et Javascript.

Ce qu'il faut comprendre, c'est que le PHP est exécuté sur le serveur, avant que la page ne soit transmise au navigateur du visiteur. Le Javascript s'exécute ensuite sur le navigateur du visiteur.

Dans ton cas, la variable PHP $reso n'est pas un entier contenant 1280, mais c'est une chaîne de caractères qui contient "<script>document.write(r);</script>".

Lorsque tu fais "echo $reso", cela écrit dans la source HTML du document le code "<script>document.write(r);</script>", qui est par la suite interprété comme du Javascript sur le navigateur du visiteur.

Les deux tests tentent de comparer $reso, qui est une chaîne de caractères, avec l'entier 1025, ce qu'ils ne parviennent pas à faire, et donc il ne rentre dans aucun des deux blocs if.


En pratique, si tu veux pouvoir afficher une page différente selon la taille de la fenêtre du navigateur, il te faudra appeler une page PHP en ajoutant comme paramètre GET la valeur de la résolution : l'url de la page sera donc de la forme page.php?reso=1280.
Ensuite, pour récupérer cette valeur, il te suffira dans la page PHP de faire : "$reso = intval($_GET['reso']);"


;)
0
d'accord,j'ai testé ça fonctionne mais je pense m'être compliqué la vie pour ce que je veux faire.

quand j'essaye tout en Js cela ne fonctionne pas ex:

<script type="text/javascript">
if(screen.width<1025)
{</script>
<td background="fond.jpg">
<script>
}
</script>


ou

<script type="text/javascript">
if(screen.width<1025)
{
<td background="fond.jpg">
}
</script>

on ne peux pas inserer du html de la sorte dans un test en js?merci
0