Incoherence variable Php/javascript
tme1589
-
tme1589 -
tme1589 -
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.
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:
- Incoherence variable Php/javascript
- Easy php - Télécharger - Divers Web & Internet
- Telecharger javascript - Télécharger - Langages
- Expert php pinterest - Télécharger - Langages
- Vba excel sélectionner une plage de cellules variable ✓ - Forum VB / VBA
- Variable d'environnement temp - Forum Word
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']);"
;)
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']);"
;)
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