11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour !
Je ne sais pas comment passer ma variable JS en variable PHP.
Cella pourrais me permettre de changer ma variable qui est de base fixée a 0 en variable PHP de 1 pour faire un if juste après.
J'aurai besoin de votre aide !
Le code JS :
 var cookie = 1 

Le code PHP :
$cookie = 0 
Modérateur
Bonjour,

A priori ton code js s'exécute sur la machine d'un utilisateur lorsque celui-ci visite la page qui contient le code js, tandis que ton code php s'exécute sur le serveur avant d'envoyer la page à la machine de l'utilisateur.

Tu ne pourras donc pas "passer" le contenu d'une variable js à une variable php au sein d'une même page "comme ça". Il faudrait envoyer le contenu de ta variable js au serveur et que celui-ci ré-exécute le code php de la page.

Ça m'étonnerait beaucoup que ce soit ça dont tu aies besoin.

Amicalement,
Modérateur
Bonjour,

BurgerKingKong a écrit :
C'est exactement de ça dont j'ai besoin !


Dans ce cas, la solution dépend de ce que tu fais déjà de tes pages. Il nous faudrait en savoir plus pour t'aiguiller vers une solution appropriée.

Amicalement,
Ce que je cherche a faire, c'est a faire en sorte que lorsque ma variable cookie est à 1, je n'affiche rien et que lorsque ma variable cookie est a 0 j'affiche tel chose.
Voila.
Modérateur
Bonjour,
BurgerKingKong a écrit :
Ce que je cherche a faire, c'est a faire en sorte que lorsque ma variable cookie est à 1, je n'affiche rien et que lorsque ma variable cookie est a 0 j'affiche tel chose.
Voila.

Je ne sais pas si tu te rends compte de la quantité industrielle d'interprétation qu'on peut avoir de ton besoin quand on te lit.

1) Est-ce que tu veux cacher/montrer/modifier une partie de la page sans avoir besoin de demander au serveur de nouvelles informations ?

2) Ou bien est-ce que tu veux demander au serveur de ré-afficher la page entièrement en en cachant/montrant/modifiant certaines parties en fonction de nouvelles informations se trouvant sur le serveur ?

3) Ou bien est-ce que tu ne veux pas demander au serveur de ré-afficher la page mais juste en cacher/montrer/modifier une partie en demandant au serveur s'il y a des nouvelles informations à prendre en compte avant de décider ce qu'il faut modifier ?

4) Est-ce que les modifications sont susceptibles d'avoir lieu 10 fois par seconde ou une fois par jour ?

5) Est-ce que les modifications concernent la plus grosse partie de la page, ou seulement une toute petite partie ?

6) Est-ce que la page est énorme avec 10000 photos et 1 million de balises html, ou bien est-ce qu'elle ne contient que quelques lignes de texte ?

7) À quel moment est modifiée la variable JS cookie ?
- dès le début du chargement de la page ?
- suite à une action de l'utilisateur ? (quand par exemple il clique sur un bouton ?)
- suite à un calcul plus ou moins complexe en js dans ta page ?

Amicalement,
Modifié par parsimonhi (17 Jan 2022 - 15:33)
Bonjour,
1) Je veux cacher ou montrer une partie de la page
4) A chaque fois que l'utilisateur arrive sur la page
5) Concernant une partie de la page
6)Non il y a un peu plus de cents lignes
7) Suite a une action de l'utilisateur.
Cordialement,
Modérateur
Bonjour,

Tel que tu l'écris, il n'y a donc pas besoin de php.

1) L'utilisateur fait son action
2) Du javascript cache les parties de la page.

Peut-être souhaites-tu conserver le choix de l'utilisateur pour les visites suivantes de la page sans avoir à lui redemander son choix ?

Amicalement,
Bonjour,
Oui je cherche bien a conserver le choix de l'utilisateur Smiley biggrin mais je cherche a le faire via un setcookie()
Amicalement,
Modérateur
Bonjour,

Donc si je résume :

1) Un internaute met l'adresse d'une page écrite en php dans la barre d'adresse de son navigateur.

2) Le serveur exécute le code php et envoie la page au navigateur de l'internaute, en regardant éventuellement s'il existe un cookie qui contient les éventuelles préférences de l'internaute pour l'affichage de cette page (voir l'étape 4). La page s'affiche.

3) À un moment, on demande à l'utilisateur de faire un choix d'affichage. Son choix est stocké provisoirement dans une variable js qui s'appelle "cookie" et qui prend à ce moment-là la valeur 1.

4) Pour les visites suivantes de l'internaute, on souhaite se souvenir du choix de l'utilisateur dans un cookie en utilisant une fonction setCookie().

J'imagine que tu as déjà trouvé un code qui fait ça, puisque tu évoques cette fonction setCookie().

À ce stade, on crée donc un cookie qui va contenir la valeur qui était jusqu'à présent dans la variable js cookie.

5) À la suite du choix de l'internaute, quelque chose doit être modifiée dans l'apparence de la page.

Le code php étant, je le rappelle, déjà exécuté par le serveur avant d'envoyer la page, ce n'est pas du php qui va modifier la page à ce stade.

On a cependant quand même le choix entre :
- modifier immédiatement la page avec du js
ou éventuellement
- provoquer le rechargement de la page pour revenir à l'étape 1, et donc re-fabriquer la page en php et la ré-envoyer au navigateur de l'internaute.

6) Lors d'une visite suivante, avec du php, on regarde si le cookie contenant les préférences de l'internaute pour l'affichage est toujours là et on fabrique la page avec du php en conséquence.

Tu me sembles déjà savoir faire tout ça, non ?

Amicalement,

PS: un petit exemple complet qui fait "tout ça". J'ai choisi la variante où on recharge complètement la page.
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Cookie</title>
<?php
$theme="0";
$background="#666";
$color="#fff";
if(isset($_COOKIE['G'])&&($_COOKIE['G']=="1"))
{
	$theme="1";
	$background="#fff";
	$color="#666";
}
?>
<style>
body {
	background:<?=$background?>;
	color:<?=$color?>;
}
</style>
<script>
let cookie=<?=$theme?>;
function setCookie(a) {
	let d=new Date(Date.now());
	d.setMonth(d.getMonth()+2);
	document.cookie='G='+(a?"1":"0")+';expires='+d;
}
function setUserChoice()
{
	let e=document.querySelector('[name="theme"]');
	if(e) cookie=e.checked?1:0;
	setCookie(cookie);
	window.location.reload()
}
</script>
</head>
<body>
<label>Thème clair :
  <input <?php if($theme=="1") echo "checked ";?>name="theme" type="radio" value="1"></label>
<label>Thème foncé :
  <input <?php if($theme=="0") echo "checked ";?>name="theme" type="radio" value="0"></label>
<button type="button" onclick="setUserChoice()">OK</button>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae, consequat in, pretium a, enim. Pellentesque congue. Ut in risus volutpat libero pharetra tempor. Cras vestibulum bibendum augue. Praesent egestas leo in pede. Praesent blandit odio eu enim. Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aliquam nibh. Mauris ac mauris sed pede pellentesque fermentum. Maecenas adipiscing ante non diam sodales hendrerit.
</p>
</body>
</html>

Modifié par parsimonhi (18 Jan 2022 - 19:59)
Meilleure solution