Inserer php dans du javascript
Résolu
cheese42
Messages postés
860
Date d'inscription
Statut
Membre
Dernière intervention
-
cheese42 Messages postés 860 Date d'inscription Statut Membre Dernière intervention -
cheese42 Messages postés 860 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
voila, je suis en train de mettre un script de compte a rebours sur mon site, il fonctionne , mais uniquement en rapport avec l'horloge du client qui regarde la page, je voudrai si possible que le decompte se fasse avec l'heure du serveur pour que tous les membres du site est le meme compteur -_- ^^
voila le script:::
<script language="JavaScript">
// la date à partir de laquelle on compte
var cible = new Date("April 24, 2009 23:59:59");
// nombre de millisecondes par jour, heure, minute et seconde
var mms_jour = 24 * 60 * 60 * 1000;
var mms_heure = 60 * 60 * 1000;
var mms_minute = 60 * 1000;
var mms_seconde = 1000;
function decompte() {
// la date courante
var aujourdhui = new Date();
// on crée les variables qui accueilleront les différences entre aujourd'hui et la date à atteindre
var change_j = -1;
var change_h = -1;
var change_m = -1;
// le total de millisecondes de différences
var diff_mms = cible.getTime() - aujourdhui.getTime();
// pareil pour les jours
diff_jours = Math.floor(diff_mms / mms_jour);
diff_mms -= diff_jours * mms_jour;
// pour les heures
diff_heures = Math.floor(diff_mms / mms_heure);
diff_mms -= diff_heures * mms_heure;
// les... minutes, bravo ;-)
diff_minutes = Math.floor(diff_mms / mms_minute);
diff_mms -= diff_minutes * mms_minute;
// les secondes, ce qui reste en fait.
var diff_secondes = Math.floor(diff_mms / mms_seconde);
// on affecte nos résultats aux champs du formulaire
document.getElementById("jours").innerHTML = diff_jours;
document.getElementById("heures").innerHTML = diff_heures;
document.getElementById("minutes").innerHTML = diff_minutes;
document.getElementById("secondes").innerHTML = diff_secondes;
// on relance la fonction pour actualiser à la seconde
setTimeout("decompte()",1000);
}
</script>
<font face="arial" size="4"><b>Il ne reste plus que : </b></font>
<span id="jours">0</span> jours
<span id="heures">0</span> heures
<span id="minutes">0</span> minutes
<span id="secondes">0</span> secondes !
donc ce script, vous pouvez le tester, il marche super bien, mais il s'occupe de l'horloge du client en non pas du serveur ^^
peut-etre, je dis bien peut-etre faudrait -il faire un truc dans le genre::::::
<?php
$heure = date("H:i");
?>
<script language="JavaScript">
// la date à partir de laquelle on compte
var cible = new Date("April 24, 2009 23:59:59");
// nombre de millisecondes par jour, heure, minute et seconde
var mms_jour = 24 * 60 * 60 * 1000;
var mms_heure = 60 * 60 * 1000;
var mms_minute = 60 * 1000;
var mms_seconde = 1000;
function decompte() {
// la date courante
var aujourdhui = new Date(<?= $heure ?>);
// on crée les variables qui accueilleront les différences entre aujourd'hui et la date à atteindre
var change_j = -1;
var change_h = -1;
var change_m = -1;
..........(et la fin du code)
mais cela ne fonctionne bien assuremmment pas 8-(
voila, je suis en train de mettre un script de compte a rebours sur mon site, il fonctionne , mais uniquement en rapport avec l'horloge du client qui regarde la page, je voudrai si possible que le decompte se fasse avec l'heure du serveur pour que tous les membres du site est le meme compteur -_- ^^
voila le script:::
<script language="JavaScript">
// la date à partir de laquelle on compte
var cible = new Date("April 24, 2009 23:59:59");
// nombre de millisecondes par jour, heure, minute et seconde
var mms_jour = 24 * 60 * 60 * 1000;
var mms_heure = 60 * 60 * 1000;
var mms_minute = 60 * 1000;
var mms_seconde = 1000;
function decompte() {
// la date courante
var aujourdhui = new Date();
// on crée les variables qui accueilleront les différences entre aujourd'hui et la date à atteindre
var change_j = -1;
var change_h = -1;
var change_m = -1;
// le total de millisecondes de différences
var diff_mms = cible.getTime() - aujourdhui.getTime();
// pareil pour les jours
diff_jours = Math.floor(diff_mms / mms_jour);
diff_mms -= diff_jours * mms_jour;
// pour les heures
diff_heures = Math.floor(diff_mms / mms_heure);
diff_mms -= diff_heures * mms_heure;
// les... minutes, bravo ;-)
diff_minutes = Math.floor(diff_mms / mms_minute);
diff_mms -= diff_minutes * mms_minute;
// les secondes, ce qui reste en fait.
var diff_secondes = Math.floor(diff_mms / mms_seconde);
// on affecte nos résultats aux champs du formulaire
document.getElementById("jours").innerHTML = diff_jours;
document.getElementById("heures").innerHTML = diff_heures;
document.getElementById("minutes").innerHTML = diff_minutes;
document.getElementById("secondes").innerHTML = diff_secondes;
// on relance la fonction pour actualiser à la seconde
setTimeout("decompte()",1000);
}
</script>
<font face="arial" size="4"><b>Il ne reste plus que : </b></font>
<span id="jours">0</span> jours
<span id="heures">0</span> heures
<span id="minutes">0</span> minutes
<span id="secondes">0</span> secondes !
donc ce script, vous pouvez le tester, il marche super bien, mais il s'occupe de l'horloge du client en non pas du serveur ^^
peut-etre, je dis bien peut-etre faudrait -il faire un truc dans le genre::::::
<?php
$heure = date("H:i");
?>
<script language="JavaScript">
// la date à partir de laquelle on compte
var cible = new Date("April 24, 2009 23:59:59");
// nombre de millisecondes par jour, heure, minute et seconde
var mms_jour = 24 * 60 * 60 * 1000;
var mms_heure = 60 * 60 * 1000;
var mms_minute = 60 * 1000;
var mms_seconde = 1000;
function decompte() {
// la date courante
var aujourdhui = new Date(<?= $heure ?>);
// on crée les variables qui accueilleront les différences entre aujourd'hui et la date à atteindre
var change_j = -1;
var change_h = -1;
var change_m = -1;
..........(et la fin du code)
mais cela ne fonctionne bien assuremmment pas 8-(
A voir également:
- Inserer php dans du javascript
- Insérer vidéo dans powerpoint - Guide
- Insérer signature word - Guide
- Insérer liste déroulante excel - Guide
- Insérer sommaire word - Guide
- Insérer espace insécable word - Guide
14 réponses
Mais si ca fonctionne sauf que comme tu ne fais jamais varier l'heure dans ta variable aujourdhui ben forcément la différence entre celle-ci et le 24 avril à minuit reste constante donc ton script affiche tout le temps les mêmes écarts CQFD
Voici qui devrait aller mieux (vérifier s'il faut bien faire un + delta_time plutôt qu'un - delta_time)
Voici qui devrait aller mieux (vérifier s'il faut bien faire un + delta_time plutôt qu'un - delta_time)
<script language="JavaScript"> // la date à partir de laquelle on compte var cible = new Date("April 24, 2009 23:59:59"); // nombre de millisecondes par jour, heure, minute et seconde var mms_jour = 24 * 60 * 60 * 1000; var mms_heure = 60 * 60 * 1000; var mms_minute = 60 * 1000; var mms_seconde = 1000; <?php $heure=getdate(); ?> var date_serveur_PHP = new Date(<?php echo $heure["year"].",".($heure["mon"]-1).",".$heure["mday"].",".$heure["hours"].",".$heure["minutes"].",".$heure["seconds"];?>); var date_locale = new Date(); // Calcul du décalage entre l'horloge du serveur et celle du PC : ca peut pas être trop précis non plus faut pas rêver ;-) // delta_time = nbre de millisecondes qu'il faut ajouter (ou retrancher) à l'horloge locale pour retomber sur l'heure du serveur var delta_time = date_serveur_PHP.getTime() - date_locale.getTime(); function decompte() { // la date & heure actuallisée à chaque passage dans decompte() var aujourdhui = new Date(); // on crée les variables qui accueilleront les différences entre aujourd'hui et la date à atteindre var change_j = -1; var change_h = -1; var change_m = -1; // le total de millisecondes de différences var diff_mms = cible.getTime() - (aujourdhui.getTime() + delta_time); // pareil pour les jours diff_jours = Math.floor(diff_mms / mms_jour); diff_mms -= diff_jours * mms_jour; // pour les heures diff_heures = Math.floor(diff_mms / mms_heure); diff_mms -= diff_heures * mms_heure; // les... minutes, bravo ;-) diff_minutes = Math.floor(diff_mms / mms_minute); diff_mms -= diff_minutes * mms_minute; // les secondes, ce qui reste en fait. var diff_secondes = Math.floor(diff_mms / mms_seconde); // on affecte nos résultats aux champs du formulaire document.getElementById("jours").innerHTML = diff_jours; document.getElementById("heures").innerHTML = diff_heures; document.getElementById("minutes").innerHTML = diff_minutes; document.getElementById("secondes").innerHTML = diff_secondes; // on relance la fonction pour actualiser à la seconde setTimeout("decompte()",1000); } </script>
Salut,
et si tu fais ça, ça marche ou pas ?
A la place de ta supposition.
J'ai pas testé mais ça peut marcher ! ^^
Sinon, ben tu appelle juste en Ajax et le tour est réglé !
Si ça marche pas, essaye en remplaçant var aujourdhui = new Date("<?php date('H:i'); ?>"); par var aujourdhui = new Date("<?php echo date('H:i'); ?>");
A+
Gaerebut
et si tu fais ça, ça marche ou pas ?
<script language="JavaScript"> // la date à partir de laquelle on compte var cible = new Date("April 24, 2009 23:59:59"); // nombre de millisecondes par jour, heure, minute et seconde var mms_jour = 24 * 60 * 60 * 1000; var mms_heure = 60 * 60 * 1000; var mms_minute = 60 * 1000; var mms_seconde = 1000; function decompte() { // la date courante var aujourdhui = new Date("<?php date('H:i'); ?>"); // on crée les variables qui accueilleront les différences entre aujourd'hui et la date à atteindre var change_j = -1; var change_h = -1; var change_m = -1; ..........(et la fin du code)
A la place de ta supposition.
J'ai pas testé mais ça peut marcher ! ^^
Sinon, ben tu appelle juste en Ajax et le tour est réglé !
Si ça marche pas, essaye en remplaçant var aujourdhui = new Date("<?php date('H:i'); ?>"); par var aujourdhui = new Date("<?php echo date('H:i'); ?>");
A+
Gaerebut
Bonsoir
Si tu veux une heure compatible avec JS il faut pense à retirer 1 au mois ;-)
En remplaçant :
Par
Ca pourrait marcher . A tester
Si tu veux une heure compatible avec JS il faut pense à retirer 1 au mois ;-)
En remplaçant :
<script language="JavaScript"> // la date à partir de laquelle on compte var cible = new Date("April 24, 2009 23:59:59"); // nombre de millisecondes par jour, heure, minute et seconde var mms_jour = 24 * 60 * 60 * 1000; var mms_heure = 60 * 60 * 1000; var mms_minute = 60 * 1000; var mms_seconde = 1000; function decompte() { // la date courante var aujourdhui = new Date();
Par
<?php $heure=getdate(); ?> <script language="JavaScript"> // L'objet Date en JS accepte la syntaxe : Date(annee,mois,jour,heures,minutes,secondes) mais les mois commencent à ZERO ! Janvier = 0 Février = 1 etc ... var cible = new Date(<?php echo $heure["year"].",".($heure["mon"]-1).",".$heure["mday"].",".$heure["hours"].",".$heure["minutes"].",".$heure["seconds"];?>); // nombre de millisecondes par jour, heure, minute et seconde var mms_jour = 24 * 60 * 60 * 1000; var mms_heure = 60 * 60 * 1000; var mms_minute = 60 * 1000; var mms_seconde = 1000; function decompte() { // la date courante var aujourdhui = new Date();
Ca pourrait marcher . A tester
ok merci, php, je ne mets pas le mois juste le jour, l'heure , les minutes et les secondes^^
donc je viens de tester mais avec
var aujourdhui = new Date("<?php date('H:i'); ?>");
si je mets cela:reponse:: Il ne reste plus que : NaN jours NaN heures NaN minutes NaN seconde
je sais pas d'ou il trouve les NaN, mais ils sont là ^^
donc je viens de tester mais avec
var aujourdhui = new Date("<?php date('H:i'); ?>");
si je mets cela:reponse:: Il ne reste plus que : NaN jours NaN heures NaN minutes NaN seconde
je sais pas d'ou il trouve les NaN, mais ils sont là ^^
Peut importe que tu n'utilises que l'heure et les minutes dans ton code.
Le constructeur Javascript pour l'objet Date() attend tous les paramètres et pas seulement les heures et le minutes. Enfin je crois que certains paramètres peuvent être omis mais en partant de la droite et pas l'inverse !
Voici les 4 variantes supportées par le constructeur
Variante 1:
nomobjet = new Date();
Variante 2:
nomobjet = new Date("mois jour, annee heures:minutes:secondes");
Variante 3:
nomobjet = new Date(annee,mois,jour);
Variante 4:
nomobjet = new Date(annee,mois,jour,heures,minutes,secondes);
Si tu omets un paramètre cela provoque une erreur et donc au final ta variable aujourdhui est un objet mal initialisé (avec une date invalide) d'où des NAN ensuite en pagaille.
Le constructeur Javascript pour l'objet Date() attend tous les paramètres et pas seulement les heures et le minutes. Enfin je crois que certains paramètres peuvent être omis mais en partant de la droite et pas l'inverse !
Voici les 4 variantes supportées par le constructeur
Variante 1:
nomobjet = new Date();
Variante 2:
nomobjet = new Date("mois jour, annee heures:minutes:secondes");
Variante 3:
nomobjet = new Date(annee,mois,jour);
Variante 4:
nomobjet = new Date(annee,mois,jour,heures,minutes,secondes);
Si tu omets un paramètre cela provoque une erreur et donc au final ta variable aujourdhui est un objet mal initialisé (avec une date invalide) d'où des NAN ensuite en pagaille.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
il manque le echo dans ton code php
remplace :
par :
remplace :
var aujourdhui = new Date("<?php date('H:i'); ?>");
par :
var aujourdhui = new Date("<?php echo date('H:i'); ?>");
Bonjour,
Je vais réfléchir en même temps que toi...
Comme tu l'as bien écrit, var diff_mms = cible.getTime() - aujourdhui.getTime(); calcule la différence de milisecondes entre deux dates.
Donc en principe ça se résoudrait facilement si on pouvait obtenir le timestamp en milisecondes d'une date en PHP. Le problème c'est que j'ai beaucoup de mal à trouver une méthode standard pour reproduire l'équivalent d'un getTime(). Qu'a-t-on a d'autre ?
1. JavaScript peut créer une date de cette façon : new Date(annee, mois, jour, heures, minutes, secondes).
2. La fonction getdate() de PHP récupère un tableau associatif... il est alors aisé d'extraire l'année, le mois, le jour, les heures, les minutes et les secondes... informations qu'on peut fournir comme arguments à l'objet Date.
=> On est maintenant capables de créer un objet Date JavaScript depuis des informations obtenues du serveur, par le biais de PHP... je pense qu'on a tout, non ?
La documentation complète de getdate() : https://www.php.net/getdate
Bon courage et tiens-nous au courant !
Je vais réfléchir en même temps que toi...
Comme tu l'as bien écrit, var diff_mms = cible.getTime() - aujourdhui.getTime(); calcule la différence de milisecondes entre deux dates.
Donc en principe ça se résoudrait facilement si on pouvait obtenir le timestamp en milisecondes d'une date en PHP. Le problème c'est que j'ai beaucoup de mal à trouver une méthode standard pour reproduire l'équivalent d'un getTime(). Qu'a-t-on a d'autre ?
1. JavaScript peut créer une date de cette façon : new Date(annee, mois, jour, heures, minutes, secondes).
2. La fonction getdate() de PHP récupère un tableau associatif... il est alors aisé d'extraire l'année, le mois, le jour, les heures, les minutes et les secondes... informations qu'on peut fournir comme arguments à l'objet Date.
=> On est maintenant capables de créer un objet Date JavaScript depuis des informations obtenues du serveur, par le biais de PHP... je pense qu'on a tout, non ?
La documentation complète de getdate() : https://www.php.net/getdate
Bon courage et tiens-nous au courant !
Oups, des réponses se sont chevauchées (c'est ce qui arrive quand on oublie de faire F5 après s'être absentés un bon moment) mais notre ami pHp t'a carrément donné la solution quand il a écrit :
var cible = new Date(<?php echo $heure["year"].",".($heure["mon"]-1).",".$heure["mday"].",".$heure["hours"].",".$heure["minutes"].",".$heure["seconds"];?>);
C'est exactement ce que je voulais exprimer. En faisant un new Date() en JS tu obtiens la date du jour (année, date, mois, heure,...) donc je ne vois aucune raison qui te pousse à repousser sa solution en prétendant que tu désires juste t'en tenir au jour et à l'heure... ça n'a pas de sens, pour obtenir un timestamp correct il faut une date et il n'existe pas de demi-dates. Si tu donnes une heure tu dois préciser à quelle date elle appartient. D'ailleurs il n'existe aucun constructeur Date(heures, minutes, secondes).
EDIT : Bon, visiblement je suis fatigué... PhP toutes mes excuses, on va arrêter de se chevaucher pour ce soir, je vais me coucher ^^
var cible = new Date(<?php echo $heure["year"].",".($heure["mon"]-1).",".$heure["mday"].",".$heure["hours"].",".$heure["minutes"].",".$heure["seconds"];?>);
C'est exactement ce que je voulais exprimer. En faisant un new Date() en JS tu obtiens la date du jour (année, date, mois, heure,...) donc je ne vois aucune raison qui te pousse à repousser sa solution en prétendant que tu désires juste t'en tenir au jour et à l'heure... ça n'a pas de sens, pour obtenir un timestamp correct il faut une date et il n'existe pas de demi-dates. Si tu donnes une heure tu dois préciser à quelle date elle appartient. D'ailleurs il n'existe aucun constructeur Date(heures, minutes, secondes).
EDIT : Bon, visiblement je suis fatigué... PhP toutes mes excuses, on va arrêter de se chevaucher pour ce soir, je vais me coucher ^^
boooooooooooooooon , lol, je ne vois plus rien sur mon script , a force de regarder ^^, voila ce que j'ai mis, je sais que il doit y avoir une grosse betise mais bon, j'y arrive pas alors sur ma page j'ai mis ca:::
dans le head::
<script language="JavaScript">
// la date à partir de laquelle on compte
var cible = new Date("April 24, 2009 23:59:59");
// nombre de millisecondes par jour, heure, minute et seconde
var mms_jour = 24 * 60 * 60 * 1000;
var mms_heure = 60 * 60 * 1000;
var mms_minute = 60 * 1000;
var mms_seconde = 1000;
function decompte() {
// la date courante
var aujourdhui = new Date(<?php echo $heure["year"].",".($heure["mon"]-1).",".$heure["mday"].",".$heure["hours"].",".$heure["minutes"].",".$heure["seconds"];?>);
// on crée les variables qui accueilleront les différences entre aujourd'hui et la date à atteindre
var change_j = -1;
var change_h = -1;
var change_m = -1;
// le total de millisecondes de différences
var diff_mms = cible.getTime() - aujourdhui.getTime();
// pareil pour les jours
diff_jours = Math.floor(diff_mms / mms_jour);
diff_mms -= diff_jours * mms_jour;
// pour les heures
diff_heures = Math.floor(diff_mms / mms_heure);
diff_mms -= diff_heures * mms_heure;
// les... minutes, bravo ;-)
diff_minutes = Math.floor(diff_mms / mms_minute);
diff_mms -= diff_minutes * mms_minute;
// les secondes, ce qui reste en fait.
var diff_secondes = Math.floor(diff_mms / mms_seconde);
// on affecte nos résultats aux champs du formulaire
document.getElementById("jours").innerHTML = diff_jours;
document.getElementById("heures").innerHTML = diff_heures;
document.getElementById("minutes").innerHTML = diff_minutes;
document.getElementById("secondes").innerHTML = diff_secondes;
// on relance la fonction pour actualiser à la seconde
setTimeout("decompte()",1000);
}
</script>
pour le body:::
<body onLoad="decompte()">
<font face="arial" size="4"><b>Il ne reste plus que : </b></font>
<span id="jours">0</span> jours
<span id="heures">0</span> heures
<span id="minutes">0</span> minutes
<span id="secondes">0</span> secondes !
et ca marche pas lalalala ^^
dans le head::
<script language="JavaScript">
// la date à partir de laquelle on compte
var cible = new Date("April 24, 2009 23:59:59");
// nombre de millisecondes par jour, heure, minute et seconde
var mms_jour = 24 * 60 * 60 * 1000;
var mms_heure = 60 * 60 * 1000;
var mms_minute = 60 * 1000;
var mms_seconde = 1000;
function decompte() {
// la date courante
var aujourdhui = new Date(<?php echo $heure["year"].",".($heure["mon"]-1).",".$heure["mday"].",".$heure["hours"].",".$heure["minutes"].",".$heure["seconds"];?>);
// on crée les variables qui accueilleront les différences entre aujourd'hui et la date à atteindre
var change_j = -1;
var change_h = -1;
var change_m = -1;
// le total de millisecondes de différences
var diff_mms = cible.getTime() - aujourdhui.getTime();
// pareil pour les jours
diff_jours = Math.floor(diff_mms / mms_jour);
diff_mms -= diff_jours * mms_jour;
// pour les heures
diff_heures = Math.floor(diff_mms / mms_heure);
diff_mms -= diff_heures * mms_heure;
// les... minutes, bravo ;-)
diff_minutes = Math.floor(diff_mms / mms_minute);
diff_mms -= diff_minutes * mms_minute;
// les secondes, ce qui reste en fait.
var diff_secondes = Math.floor(diff_mms / mms_seconde);
// on affecte nos résultats aux champs du formulaire
document.getElementById("jours").innerHTML = diff_jours;
document.getElementById("heures").innerHTML = diff_heures;
document.getElementById("minutes").innerHTML = diff_minutes;
document.getElementById("secondes").innerHTML = diff_secondes;
// on relance la fonction pour actualiser à la seconde
setTimeout("decompte()",1000);
}
</script>
pour le body:::
<body onLoad="decompte()">
<font face="arial" size="4"><b>Il ne reste plus que : </b></font>
<span id="jours">0</span> jours
<span id="heures">0</span> heures
<span id="minutes">0</span> minutes
<span id="secondes">0</span> secondes !
et ca marche pas lalalala ^^
Je devais pas aller me coucher moi ? :D
Bref, la grosse bêtise c'est que je ne vois pas où tu as défini la variable $heure, regarde mieux l'exemple de PhP.
Sinon, à tout hasard et pour éviter de s'emmêler les pinceaux avec tous ces arguments, ne serait-il pas plus simple d'appeler la fonction time() du PHP, qui elle est capable de retourner un timestamp exprimé en secondes, et de multiplier ce résultat par 1000 afin d'obtenir nos milisecondes tant désirées ?
Je ne sais pas ce que ça vaut, c'est à tester...
Bref, la grosse bêtise c'est que je ne vois pas où tu as défini la variable $heure, regarde mieux l'exemple de PhP.
Sinon, à tout hasard et pour éviter de s'emmêler les pinceaux avec tous ces arguments, ne serait-il pas plus simple d'appeler la fonction time() du PHP, qui elle est capable de retourner un timestamp exprimé en secondes, et de multiplier ce résultat par 1000 afin d'obtenir nos milisecondes tant désirées ?
new Date(<?php echo time()*1000 ?>);Car si je ne dis pas de bêtises il existe une 5è variante du constructeur Date() qui prend en argument des milisecondes...
Je ne sais pas ce que ça vaut, c'est à tester...