CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Problèmes changer page html/javascript

tazukay
tazukay
Niveau 10
27 juin 2015 à 11:08:15

Bonjour à tous :)

Je fais actuellement un petit site web pour prendre de l'expérience, et je rencontre un problème.
Supposons que j'ai un chronomètre qui se lance et s'affiche sur la fenêtre A, dès l'ouverture de la page.
J'aimerai aller de la page A vers la page B, sans que le chronomètre ne s'arrête... :(
Le problème est donc le suivant : Je suis sur la page A, le chronomètre se lance...arrivé par exemple à 10sec, je vais sur la page B. Supposons que je reste 30sec sur la page B, pour ensuite revenir sur la page A, j'aimerai que le chrono affiche "40", le problème c'est que le chrono se lance à 0 dès que je reviens sur la page... :(

Quelqu'un peut-il m'expliquer la façon de procéder svp ? :-)

Darkandgel
Darkandgel
Niveau 10
27 juin 2015 à 12:43:43

Passer par les variables de session.

Sur ta page A tu fais

session_start();
if($_SESSION['chrono']==null)
{
$_SESSION['chrono']=time();
}

echo $_SESSION['chrono']-time();

Tu ne peux pas faire ça en JS, ou alors il ne fait pas recharger la page.

echo $_SESSION['chrono']-time();

J'ai un doute sur cette ligne, il faut peut etre faire des conversions pour pouvoir faire des operations dessus et coller un date_format histoire de ne pas afficher un timestamp en dur, mais je te laisse chercher

tazukay
tazukay
Niveau 10
27 juin 2015 à 13:09:18

Merci de ta reponse.
C'est du PHP si je ne m abuse ? Je ne me suis pas encore occupé de la base de données, si j'ai bien compris, je n'en ai pas besoin pour resoudre ce probleme ? Exclusivement du php ? :)

Darkandgel
Darkandgel
Niveau 10
27 juin 2015 à 13:19:34

Oui, c'est que du PHP

D'ailleurs je trouve ça un peu bizarre d'attaqur le JS avant d'avoir vu un langage serveur, m'enfin

tazukay
tazukay
Niveau 10
27 juin 2015 à 14:01:45

D'accord, je vais m'interesser à ce langage alors, merci de ton aide. :ok:

[Kyomaro]
[Kyomaro]
Niveau 10
27 juin 2015 à 19:19:33

Le 27 juin 2015 à 13:19:34 Darkandgel a écrit :
Oui, c'est que du PHP

D'ailleurs je trouve ça un peu bizarre d'attaqur le JS avant d'avoir vu un langage serveur, m'enfin

JS peut être un langage serveur aussi

Darkandgel
Darkandgel
Niveau 10
27 juin 2015 à 21:50:31

Ya ya, mais m'est avis qu'il ne l'entendait pas ainsi :)

Dermlin_Brass
Dermlin_Brass
Niveau 9
28 juin 2015 à 01:01:35

Penches toi sur le web storage ?

Message édité le 28 juin 2015 à 01:01:59 par Dermlin_Brass
TW97
TW97
Niveau 7
29 juin 2015 à 02:16:01

Pourquoi ne pas créer une iframe et laisser le visiteur naviguer "dedans" et pendant ce temps laisser tourner le chrono sur ta page d'origine ? :) Ça me paraît plus simple que toutes ces histoires de PHP et plus rapide à mettre en place :)

Darkandgel
Darkandgel
Niveau 10
29 juin 2015 à 09:53:43

Parce que c'est dégueulasse ? Et que quitte à apprendre a coder autant le faire bien.

cf : http://forum.alsacreations.com/topic-1-451-1-Les-frames-cadres-et-iframes--a-mediter.html

Grosso modo, les frames sont à proscrire parce qu'ils :

- causent une dénaturation radicale du document Web ;
- rendent impossible l'ajout aux favoris;
- rendent l'indexation déficiente ;
- posent des problèmes d'accessibilité aux personnes handicapées (non-voyants notamment) ;
- causent des imprécisions au niveau de l'impression ;
- nuisent à la séparation nette entre la structure et la présentation d'un document ;
- laissent prétendre à une économie illusoire des fichiers ;
- etc.

TW97
TW97
Niveau 7
29 juin 2015 à 18:15:39

Alors on prend ta solution Darkandgel :ok: . J'ai codé un ptit script pour récupérer la valeur du chrono avec le JS (comme ça tu peux utiliser le chrono dans tes fichiers HTML et pas que PHP).

Le fichier chrono.js :
// chrono.js // TW97 function Chrono(){ this.getElapsedTime = function(callback){ this.sendXHR('get_elapsed_time', function(rep){ if(rep !== false && !isNaN(rep)) callback(Math.floor((new Date() - new Date(parseInt(rep)) * 1000) / 1000)); else callback('error'); }); }; this.start = function(){ this.sendXHR('start'); }; this.stop = function(){ this.sendXHR('stop'); }; this.sendXHR = function(actionChrono, callback){ var xhr; if(window.XMLHttpRequest) xhr = new XMLHttpRequest(); else if(window.ActiveXObject) { try { xhr = new ActiveXObject('Msxml2.XMLHTTP'); } catch(e){ xhr = new ActiveXObject('Microsoft.XMLHTTP'); } } xhr.open('POST', 'chrono.php', true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.onreadystatechange = function(){ if(xhr.readyState == 4 && typeof callback == 'function') { if(xhr.status == 200) callback(xhr.responseText); else callback(false); } }; xhr.send('action=' + actionChrono); }; }

Le fichier chrono.php :
<?php // chrono.php // TW97 session_start(); if(!empty($_POST['action'])) { if($_POST['action'] == 'start') $_SESSION['chrono'] = time(); elseif($_POST['action'] == 'stop') unset($_SESSION['chrono']); elseif($_POST['action'] == 'get_elapsed_time' AND !empty($_SESSION['chrono'])) echo $_SESSION['chrono']; else echo 'error'; }

La petite page de test (doit être dans le même dossier que les 2 fichiers précédents, sinon il faut modifier chrono.js
test.html :


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Test Chrono</title>
</head>
<body>
<button onclick="tempsEcoule()">Obtenir le temps écoulé</button>
<button onclick="arreter()">Arrêter le chronomètre</button>
<button onclick="redemarrer()">Redémarrer le chronomètre</button>
<div id="log"></div>
<script src="chrono.js"></script>
<script>
var logElem = document.getElementById('log'), chrono = new Chrono();
chrono.start();
logElem.innerHTML = '<strong>Chronomètre lancé</strong>';

function tempsEcoule(){
	chrono.getElapsedTime(function(secondes){
		if(secondes != 'error')
			logElem.innerHTML += '<br/>Temps écoulé : ' + secondes;
		else
			logElem.innerHTML += '<br/>Une erreur est survenue !';
	});
}

function arreter(){
	chrono.stop();
	logElem.innerHTML = '<strong>Chronomètre arrêté</strong>';
}

function redemarrer(){
	chrono.start();
	logElem.innerHTML = '<strong>Chronomètre lancé</strong>';
}
</script>
</body>
</html>

Voilà :)
PS: à la base je voulais faire un truc plus simple sans les callbacks, càd avec des requêtes synchrones mais je me suis dit qu'il vaut mieux éviter sinon Darkandgel va encore m'engueuler :rire2:

Darkandgel
Darkandgel
Niveau 10
29 juin 2015 à 18:19:19

Nan mais écrire une ligne de JS c'est deja faire dans la dégueulasserie :o))
(Oui je troll.... E oui j'aime ça xD)

Message édité le 29 juin 2015 à 18:19:50 par Darkandgel
Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment