Impossible récupérer valeur entière screen.width

Fermé
xavier - 20 mai 2022 à 19:23
jordane45 Messages postés 38307 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 - 20 mai 2022 à 21:21
voici mon code php :

<php
$size_width = '<script type="text/javascript">document.write(screen.width)</script>';
echo $size_width ; -> affiche correctement 1500, ma largeur d'écran
echo gettype ($size_width) ; ->affiche 'String'
echo intval($size_width) ; -> affiche '0 ' !!!

où est l'erreur ?

7 réponses

yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 Ambassadeur 1 550
20 mai 2022 à 19:27
bonjour as-tu testé
echo intval('1500') ;
0
jordane45 Messages postés 38307 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 4 705
20 mai 2022 à 19:30
Bonjour
L'erreur est que le PHP s'exécute côté serveur alors que le javascript s'exécute dans ton navigateur internet...
En gros, le serveur renvoie le HTML généré par ton code PHP puis ensuite le javascript y est exécuté.
Par conséquent, tu ne peux pas manipuler en PHP des variables issues du JavaScript.


0
ok, merci

mais alors, comment faire pour conditionner mes traitements php en fonction de la largeur d'écran ?
0
jordane45 Messages postés 38307 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 4 705
20 mai 2022 à 19:40
Tu ne peux pas.
Ou alors il faut le faire en AJAX.
Après, tout dépend ce que tu appelles « traitement ».... Si c'est de l'affichage, il faut te tourner vers le CSS.
0
yg_be Messages postés 23342 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 21 novembre 2024 Ambassadeur 1 550
20 mai 2022 à 19:42
qu'obtiens-tu quand tu fais:
echo strlen($size_width);
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
echo strlen($size_width); -> 68
0
jordane45 Messages postés 38307 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 4 705
Modifié le 20 mai 2022 à 19:54
C'est normal, puisque en PHP, la variable contient la chaîne de texte
<script type="text/javascript">document.write(screen.width)</script>
Et non pas la valeur retournée par le javascript, puisqu'elle n'existe pas encore vu que je le répète, le PHP est exécuté côté serveur alors que le javascript est exécuté, une fois la page chargée, dans le navigateur.
0
en fait je voudrais :

1/ conditionner largeur et hauteur de mon BODY par la taille de l'écran

mais mon code CSS suivant ne fonctionne pas

BODY {
height:805px;
}

@media (max-height:950px){
BODY {
height:600px;
}
}


2/ conditionner également le nombre de colonnes à afficher en fonction de la largeur du BODY
et je comptais faire ça en php
0
jordane45 Messages postés 38307 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 4 705
Modifié le 20 mai 2022 à 20:17
Ok, donc c'est bien côté CSS qu'il faut regarder.
Si tu as des questions en CSS, je t'invite à recréer une discussion dans le forum CSS

En attendant, tu peux mettre celle-ci en résolue.
0
ok, mais je suis preneur de la solution php/ajax pour le point 2/

ou puis-je la trouver ?
0
jordane45 Messages postés 38307 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 novembre 2024 4 705
20 mai 2022 à 21:21
Pour ce que tu veux faire, le css reste certainement la meilleur solution...

Sinon, pour l'ajax, tu peux très bien afficher ta page
puis, en javascript ( soit avec la librairie jquery et sa fonction $.ajax , soit avec la librairie native de javascript fetch() ) aller chercher les données à afficher dans un autre fichier php puis afficher les infos (via ton javascript) dans la page où tu te trouves.
Des exemples ajax (ou fetch), tu en trouveras des donnes sur internet ....
0