Bouton "J'ai compris" sans recharger la page

Résolu
Southstyle Messages postés 46 Date d'inscription   Statut Membre Dernière intervention   -  
Southstyle Messages postés 46 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je travaille depuis des années avec PHP/MySQL, et je bidouille JavaScript relativement mal :-)

Cependant il offre plein de possibilités que je commence à adorer.

J'aimerais donc pouvoir programmer un bouton "J'ai compris" qui initierait une $_SESSION (exemple, en TRUE), sans que l'utilisateur ne quitte la page qu'il est en train de consulter. Un peu à l'exemple des avertissement de sites utilisant les cookies.

<?php if($_SESSION['accept'] !== TRUE) { ?>

	<div id="mobilephonewarn">
	<p>Attention, vous consultez un site web avec un écran de taille réduite ou un mobile ; ce site présente de nombreuses photos et informations qui ne sont pas optimisées pour les petits écrans. Favorisez l'usage d'un ordinateur ou d'une tablette. Merci pour votre compréhension.</p>
	<p align="center"><button type="button">J'ai compris</button></p>
	</div>

<?php } ?>


Voilà en gros ce que j'ai pour l'instant, maintenant je ne sais pas quoi faire sur l'action du bouton. Comment passer la session $_SESSION['accept'] en TRUE sans quitter / recharger la page que l'utilisateur consulte.

Merci pour votre précieuse aide !

Raph
A voir également:

1 réponse

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour
En utilisant l'ajax (avec jquery) sinon, si tu préfères le "pure" js, le xmlhttprequest


2
Southstyle Messages postés 46 Date d'inscription   Statut Membre Dernière intervention  
 
Je n'ai pas vraiment de préférence, j'utilise déjà jquery pour d'autres fonctions, donc je pourrais le faire en AJAX volontiers. Mais la question est : comment ? :-)
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Voici des exemples :
https://codes-sources.commentcamarche.net/source/102253-exemple-ajax-en-jquery

En gros...
ton script JS appel en AJAX un script PHP qui se chargera du traitement voulu (pour toi la création d'une variable de session)

<button type="button" onclick="jaicompris();">J'ai compris</button>


function jaicompris(){
  $.ajax({
      method: "POST",
      url: "tonscriptphp.php",
      data: { variable1: "truc", variable2: "bidule" }
  }) .done(function( response ) {
      // en cas de succes de ton fichier php
       console.log(response);
  }) .fail(function(error) {
        //en cas de problème lors de l'appel de ton script php
        console.log(error);
  });
}


tonscriptphp.php
 <?php
   session_start();
   $_SESSION['compris'] = true:
   echo 'variable de session créée';
0
Southstyle Messages postés 46 Date d'inscription   Statut Membre Dernière intervention  
 
Salut Jordane,

Bon alors j'ai adapté ton code pour que tout cela se passe dans le même fichier, en gros "tonscript.php" est devenu
basename($_SERVER['PHP_SELF'])
, le session_start() je l'ai déjà par défaut dans un include donc avec de tout petits changements (notamment un ajout :
onclick="jaicompris(); getElementById('ledivdujaicompris').style.display='none';"
, je suis parvenu exactement à ce que je voulais, grâce à toi !!

J'adore AJAX, je devrais m'y mettre davantage. Mais la route est longue et parsemée d'embuches :-)

Merci pour ton aide !

Par contre je n'ai pas compris l'histoire de la console.log : les erreurs s'inscrivent dans la console jquery ? Quelquepart ?

Raph
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Southstyle Messages postés 46 Date d'inscription   Statut Membre Dernière intervention  
 
Par contre je n'ai pas compris l'histoire de la console.log : les erreurs s'inscrivent dans la console jquery ? Quelquepart ?

Dans la console de ton navigateur (lorsque tu affiches les "outils de developpement" ( raccourci F12 ou CTRL+ SHIFT +J selon le navigateur ))
0
Southstyle Messages postés 46 Date d'inscription   Statut Membre Dernière intervention  
 
Super, merci !
0