Récupération d'une résolution php/javascript
Résolu
YoshK
Messages postés
26
Date d'inscription
Statut
Membre
Dernière intervention
-
kij_82 Messages postés 4089 Date d'inscription Statut Contributeur Dernière intervention -
kij_82 Messages postés 4089 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, je rencontre un problème pour détecter la résolution de l'utilisateur via javascript et la transférer dans une variable PHP:
Je pensai que cela allez suffire:
<?php $size = echo '<script language=\"JavaScript\">screen.width</script>'; ?>
Mais une erreur m' est retourné, pour précision j'utilise la variable $size pour permettre l'adaptation de mes images (bannière, menu, ...) à la résolution de l'utilisateur via d'autres variables:
<?php
if ($size <= 900)
{
$banniere = 800;
$menu = 'P';
}
else ($size >= 1300)
{
$banniere = 1280;
$menu = 'G';
}
else
{
$banniere = 1024;
$menu = 'M';
}
?>
Merci d'avoir prit la peine de lire mon problème !
Je pensai que cela allez suffire:
<?php $size = echo '<script language=\"JavaScript\">screen.width</script>'; ?>
Mais une erreur m' est retourné, pour précision j'utilise la variable $size pour permettre l'adaptation de mes images (bannière, menu, ...) à la résolution de l'utilisateur via d'autres variables:
<?php
if ($size <= 900)
{
$banniere = 800;
$menu = 'P';
}
else ($size >= 1300)
{
$banniere = 1280;
$menu = 'G';
}
else
{
$banniere = 1024;
$menu = 'M';
}
?>
Merci d'avoir prit la peine de lire mon problème !
A voir également:
- Récupération d'une résolution php/javascript
- Récupération de déchets - Guide
- Easy php - Télécharger - Divers Web & Internet
- Comment recuperer une video sur youtube - Guide
- Telecharger javascript - Télécharger - Langages
- Convertisseur récupération de texte - Guide
6 réponses
Bonjour,
Attention, le PHP est une langage qui s'exécute coté serveur, alors que le javascript s'exécute coté client.
Conclusion, dans ton code, ce qui est mis dans ta variable PHP n'est pas la résultante de ton code javascript, mais ton code lui même (sous forme de texte)
L'erreur affiché est donc plutôt logique et normale. Tu ne peux pas procéder de cette façon.
Ce qu'il faut faire :
Gérer des fichiers CSS différent, que tu charge en fonction de la résolution détectée.
Par exemple, tu as fais 3 fichiers CSS dans lesquels tu as définie 3 classes de style, une pour chaque style de bannière / menu (il faut donc que tu traduise $bannière et $menu sous forme de propriété CSS)
Ensuite, avant de chargé ta page PHP courante, tu vas exécuter le code javascript qui permet de détecter la résolution, et en fonction de la résolution (toujours en code javascript donc), tu vas charger le fichier CSS correspondant.
C'est une manière comme une autre de le faire.
Attention, le PHP est une langage qui s'exécute coté serveur, alors que le javascript s'exécute coté client.
Conclusion, dans ton code, ce qui est mis dans ta variable PHP n'est pas la résultante de ton code javascript, mais ton code lui même (sous forme de texte)
L'erreur affiché est donc plutôt logique et normale. Tu ne peux pas procéder de cette façon.
Ce qu'il faut faire :
Gérer des fichiers CSS différent, que tu charge en fonction de la résolution détectée.
Par exemple, tu as fais 3 fichiers CSS dans lesquels tu as définie 3 classes de style, une pour chaque style de bannière / menu (il faut donc que tu traduise $bannière et $menu sous forme de propriété CSS)
Ensuite, avant de chargé ta page PHP courante, tu vas exécuter le code javascript qui permet de détecter la résolution, et en fonction de la résolution (toujours en code javascript donc), tu vas charger le fichier CSS correspondant.
C'est une manière comme une autre de le faire.
Merci pour ton aide, une fois posé le problème était effectivement évident. J'ai cependant trouvé une solution autre, l'utilisation d'une page supplémentaire contenant un formulaire caché pour transmettre la résolution de l'utilisateur:
récupéré par la suite sur la page principale du site:
la redirection est en réalité instantanée mais on prévoit le cas ou le serveur serait saturé...
<body onload="document.formRes.resolution.value = screen.width; document.formRes.submit();"> <p style="text-align:center">Vous allez être redirigé dans quelques secondes...<br/> si la redirection automatique ne fonctionne pas cliquez <a href="accueil.php">ici</a></p> <form method="post" action="accueil.php" name="formRes"> <input type="hidden" name="resolution"> </form> </body>
récupéré par la suite sur la page principale du site:
$size = $_POST['resolution'];
la redirection est en réalité instantanée mais on prévoit le cas ou le serveur serait saturé...
J'ai cependant un autre problème, la résolution est enregistré dans une variable de session pour être effective sur toute les pages de mon site web.
Voila la nouvelle allure de mon include PHP:
Le problème est que lorsque j'accède à une nouvelle page du site, j'obtiens un jolie message d'erreur:
"Notice: Undefined index: resolution in C:\...\monInclude.php on line 21"
la ligne 21 correspondant au début de mon "if"...
Voila la nouvelle allure de mon include PHP:
<?php if ( isset($_POST['resolution'])) $_SESSION['resolution'] = $_POST['resolution']; if ($_SESSION['resolution'] <= 900) { $banniere = 800; $menu = 'P'; } else if ($_SESSION['resolution'] >= 1200) { $banniere = 1280; $menu = 'G'; } else { $banniere = 1024; $menu = 'M'; } ?>
Le problème est que lorsque j'accède à une nouvelle page du site, j'obtiens un jolie message d'erreur:
"Notice: Undefined index: resolution in C:\...\monInclude.php on line 21"
la ligne 21 correspondant au début de mon "if"...
Est-ce que tu as bien l'instruction 'session_start()' au début de toutes tes pages PHP ?
Peux-tu mettre le code entier (pour l'accueil)?
Au pire, essai de mettre l'identifiant dans ton champ caché (sur ta page intermédiaire) (<input type='hidden' id='resolution' name='resolution' ... />)
Peux-tu mettre le code entier (pour l'accueil)?
Au pire, essai de mettre l'identifiant dans ton champ caché (sur ta page intermédiaire) (<input type='hidden' id='resolution' name='resolution' ... />)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question