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

xavier -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour as-tu testé
echo intval('1500') ;
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
xavier
 
ok, merci

mais alors, comment faire pour conditionner mes traitements php en fonction de la largeur d'écran ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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
xavier
 
echo strlen($size_width); -> 68
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
xavier
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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
xavier
 
ok, mais je suis preneur de la solution php/ajax pour le point 2/

ou puis-je la trouver ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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