Inserer php dans du javascript
Résolu/Fermé
cheese42
Messages postés
860
Date d'inscription
mardi 11 septembre 2007
Statut
Membre
Dernière intervention
10 octobre 2018
-
15 avril 2009 à 21:53
cheese42 Messages postés 860 Date d'inscription mardi 11 septembre 2007 Statut Membre Dernière intervention 10 octobre 2018 - 16 avril 2009 à 01:01
cheese42 Messages postés 860 Date d'inscription mardi 11 septembre 2007 Statut Membre Dernière intervention 10 octobre 2018 - 16 avril 2009 à 01:01
A voir également:
- Inserer php dans du javascript
- Insérer une vidéo dans powerpoint - Guide
- Insérer signature word - Guide
- Insérer liste déroulante excel - Guide
- Insérer sommaire word - Guide
- Telecharger javascript - Télécharger - Langages
14 réponses
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
16 avril 2009 à 00:57
16 avril 2009 à 00:57
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>
gaerebut
Messages postés
1017
Date d'inscription
mardi 30 octobre 2007
Statut
Membre
Dernière intervention
22 novembre 2013
171
15 avril 2009 à 23:32
15 avril 2009 à 23:32
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
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
15 avril 2009 à 23:40
15 avril 2009 à 23:40
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
cheese42
Messages postés
860
Date d'inscription
mardi 11 septembre 2007
Statut
Membre
Dernière intervention
10 octobre 2018
120
15 avril 2009 à 23:49
15 avril 2009 à 23:49
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à ^^
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
16 avril 2009 à 00:18
16 avril 2009 à 00:18
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'); ?>");
Posotaz
Messages postés
489
Date d'inscription
samedi 23 juin 2007
Statut
Membre
Dernière intervention
19 juin 2011
225
16 avril 2009 à 00:11
16 avril 2009 à 00:11
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 !
cheese42
Messages postés
860
Date d'inscription
mardi 11 septembre 2007
Statut
Membre
Dernière intervention
10 octobre 2018
120
16 avril 2009 à 00:12
16 avril 2009 à 00:12
merci mais pareil ca me met les NaN a la place des chiffres :( merci quand même ^^
cheese42
Messages postés
860
Date d'inscription
mardi 11 septembre 2007
Statut
Membre
Dernière intervention
10 octobre 2018
120
16 avril 2009 à 00:15
16 avril 2009 à 00:15
posotaz, merci, je vais bouquiner un peu alors ^^
le NaN est en reponse de Benj
le NaN est en reponse de Benj
cheese42
Messages postés
860
Date d'inscription
mardi 11 septembre 2007
Statut
Membre
Dernière intervention
10 octobre 2018
120
16 avril 2009 à 00:24
16 avril 2009 à 00:24
ok, merci PhP ^^
Posotaz
Messages postés
489
Date d'inscription
samedi 23 juin 2007
Statut
Membre
Dernière intervention
19 juin 2011
225
16 avril 2009 à 00:25
16 avril 2009 à 00:25
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 ^^
PhP
Messages postés
1770
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
606
16 avril 2009 à 00:32
16 avril 2009 à 00:32
Héhéhé
Ceci dit il faut bien reconnaître que les constructeurs de l'objet Date sont merd...ques à souhait ! Tantôt faut mettre le mois sous forme de chiffre tantôt sous forme littéral mais la palme de la connerie revient aux mois numériques qui commencent à ... ZERO !
Sur ce good night
Ceci dit il faut bien reconnaître que les constructeurs de l'objet Date sont merd...ques à souhait ! Tantôt faut mettre le mois sous forme de chiffre tantôt sous forme littéral mais la palme de la connerie revient aux mois numériques qui commencent à ... ZERO !
Sur ce good night
cheese42
Messages postés
860
Date d'inscription
mardi 11 septembre 2007
Statut
Membre
Dernière intervention
10 octobre 2018
120
16 avril 2009 à 00:33
16 avril 2009 à 00:33
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 ^^
Posotaz
Messages postés
489
Date d'inscription
samedi 23 juin 2007
Statut
Membre
Dernière intervention
19 juin 2011
225
16 avril 2009 à 00:52
16 avril 2009 à 00:52
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...
cheese42
Messages postés
860
Date d'inscription
mardi 11 septembre 2007
Statut
Membre
Dernière intervention
10 octobre 2018
120
16 avril 2009 à 00:58
16 avril 2009 à 00:58
re, je viens de mettre var aujourdhui = new Date(<?php echo time()*1000 ?>);
donc cela fonctionne un petit peu, en fait, ca me donne bien le temps restant mais une fois affiche, bah ca bouge plus, enfin ca fait plus le decompte ^^ ca me dit bien il reste 9jours 8heures etc....mais ca bouge plus^^
donc cela fonctionne un petit peu, en fait, ca me donne bien le temps restant mais une fois affiche, bah ca bouge plus, enfin ca fait plus le decompte ^^ ca me dit bien il reste 9jours 8heures etc....mais ca bouge plus^^
cheese42
Messages postés
860
Date d'inscription
mardi 11 septembre 2007
Statut
Membre
Dernière intervention
10 octobre 2018
120
16 avril 2009 à 01:01
16 avril 2009 à 01:01
OOOOUUUUUUUUUUUAAAAAAAAAAIIIIIIIIIICCCCCCCCCCHHHHHHHHHHHHHH
PhP et posotaz
GRAND merci 8-) ca marche on y est^^
PhP et posotaz
GRAND merci 8-) ca marche on y est^^