Version complète: sur le forum Webmaster Hub : Faire communiquer une variable en php et javascript
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net
Chark
Pour un meilleur confort visuel, je cherche à detecter la largeur du navigateur du l'internaute qui se connecte à mon site, pour ensuite afficher un nombre d'article par page ( pour un site de commerce ) en rapport.

la fonction JS :
CODE
var largeur;
largeur = screen . width;


Mais comment récuperer cette variable en variable php ?
J'aimerais que "var largeur" soit récupérée dans une variable php du type $largeur

Une solution ? ( de plus, si il existe une solution sans JS je suis preneur aussi )

merci
Compte supprimé
une première solution ici http://www.commentcamarche.net/faq/sujet-8...ion-d-affichage
Chark
merci,
J'y avais pensé oui mais est il possible de faire cela sans modifier l'URL ou recharger la page ?
Leonick
Attention à ne pas confondre largeur d'écran et largeur du navigateur !
En plus, même en supposant que l'on navigue plein écran, comment peut-on être sur que le visiteur ne navigue pas avec un bandeau latéral ?
Chark
Je suis bien d'accord avec toi.
Mais dans mon cas particulier, cela n'est pas trop important :

En gros:
Je fais un site de e-commerce ( Rayon de soleil .Pour l'instant , la plupart des articles sont dans la catégorie "prochainement") qui va afficher un certain nombre d'articles par pages.
Pour l'instant, j'ai défini ce nombre a 12 pour qu'il soit divisible par 2, 3 et 4 :
Sur un navigateur en 800x600 : 2 articles par lignes, 6 lignes
Sur un navigateur en 1024 : 3 articles par lignes, 4 lignes
Sur un navigateur en 1280 : 4 articles par lignes, 3 lignes
Le but étant que chaque ligne soit "complete", pas de trous

Tout cela sans avoir besoin de JS ou autre, ni meme de connaitre la taille du navigateur ( Div en % et cellules en float )
Si l'internaute redimensionne son navigateur, cela va quand meme s'adapter sans problemes, car a chaque fois, chaque ligne sera complete ( exemple: un navigateur en 1024 redimensionné ou avec une colone favoris a gauche = 2 articles par lignes, 6 lignes ).

Mais comme je suis très perfectionniste, j'ai remarqué que sur certains grands écrans le nombre d'articles affichés par ligne est 5, donc avec 12 articles par pages, cela fait moins joli ( 5 la premiere ligne, 4 la deuxieme )
La solution ? trouver un chiffre divisible par 2,3,4 et 5... mais le chiffre minimum dans ce cas est 60 , cela fait beaucoup trop d'articles par pages.
D'ou mon idée de gerer aussi la résolution de l'affichage du navigateur pour essayer de trouver une solution intermédiaire pour rendre le site le plus parfait possible smile.gif
Leonick
Le plus pratique, insérer une image invisible en js (qui contiendra l'id de session) qui enverra la taille de l'écran et qui sera récupérée par le serveur pour les pages suivantes...
Chark
Ca c'est une idée oui !
Ou encore inscrire la taille du navigateur dans un fichier texte récupéré par php ( avec l'id de session ).. mais JS sait faire ca ( écrire/créer un fichier texte ) ?
Leonick
il serait où le fichier texte ?
car pour une question de sécurité, en dehors d'un formulaire d'upload, le navigateur ne peut avoir accès aux fichiers locaux et js ne peut écrire sur le serveur
captain_torche
Ou plus simplement (en oubliant carrément le JS et le traitement dynamique) :
Tu gères chaque zone en DIV (et non plus en case de tableau), et tu attribues un style 'float: left' à chacun. De cette manière, quelle que soit la résolution d'écran de l'utilisateur, les blocs s'adapteront à l'espace disponible.
Chark
CITATION
Tu gères chaque zone en DIV (et non plus en case de tableau), et tu attribues un style 'float: left' à chacun. De cette manière, quelle que soit la résolution d'écran de l'utilisateur, les blocs s'adapteront à l'espace disponible.


Comme je l'ai dit précédemment, c'est déja exactement ce que je fais...
Mon problème se situant sur le nombre d'articles à afficher, non pas sur leur positions
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.