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

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

  1. Modérateur
    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.

    1. ok, merci

      mais alors, comment faire pour conditionner mes traitements php en fonction de la largeur d'écran ?
      1. Modérateur
        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.
    2. Contributeur
      qu'obtiens-tu quand tu fais:
      echo strlen($size_width);
      1. echo strlen($size_width); -> 68
        1. Modérateur
          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.
      2. 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
        1. Modérateur
          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.
      3. ok, mais je suis preneur de la solution php/ajax pour le point 2/

        ou puis-je la trouver ?
        1. Modérateur
          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 ....