IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Appel de fonction Javascript dans un code php


Sujet :

JavaScript

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 37
    Par défaut Appel de fonction Javascript dans un code php
    Bonjour à tous, j'ai une fonction js de compte à rebours qui marche très bien quand je l'exécute dans un fichier HTML comme ceci:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <html>
    <head>
     <script type="text/javascript"></script>
      <script src="script_decompte.js" type="text/javascript"></script>
    </head>
    <body onload="compte_a_rebour()">
    <div id="CompteARebours"></div>
    </body>
    </html>

    Fonction Javascript:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    function compte_a_rebour()
    			{
     
    				var CompteARebours = document.getElementById("CompteARebours");
    			   //ici on recuper la date en cours
    				var date_actuelle = new Date()/1000;
    			   // ici la date de fin de l ofre
    				var date_evenement = 1311976800;
    			   // difference de date en seconde
     
    				var secondes = (date_evenement - date_actuelle);
    				//Si la variable secondes est une valeur positive, c'est que le compte 
    				//à rebours n'est pas terminé ; si c'est une valeur négative, 
    				//c'est qu'il est terminé. On fait donc une petite condition : 
    				if(secondes > 0){
     
    					DiffJour = Math.floor (secondes / 86400);
    					DiffHeure = Math.floor ((secondes - (DiffJour * 86400)) / 3600);
    					DiffMin = Math.floor ((secondes - ((DiffJour * 86400 + DiffHeure * 3600))) / 60);
    					DiffSec = Math.floor (secondes - ((DiffJour * 86400 + DiffHeure * 3600 + DiffMin * 60)));
     
    					var Et = "et";
     
    					if(DiffJour == 0){
    						DiffJour = '';
    						Jour = '';
    					} else {
    						Jour = (DiffJour == 1) ? "jour," : "jours,";
    					}
     
    					if(DiffHeure == 0){
    						DiffHeure = '';
    						Heure = '';
    					} else {
    						Heure = (DiffHeure == 1) ? "heure," : "heures,";
    					}
    					if(DiffMin == 0){
    						DiffMin = '';
    						Minute = '';
     
    					} else {
    						Minute = (DiffMin == 1) ? "minute" : "minutes";
    					}
    					if(DiffSec == 0){
    						DiffSec = '';
    						Seconde = '';
    						Et = '';
    					} else {
    						Seconde = (DiffSec == 1) ? "seconde" : "secondes";
    						Et = (DiffMin == 0 && DiffHeure == 0 && DiffJour == 0) ? "" : "et";
    					}
    					CompteARebours.innerHTML = DiffJour + ' ' + Jour + ' ' + DiffHeure + ' ' + Heure + ' ' + DiffMin + ' ' + Minute + ' ' + Et + ' ' + DiffSec + ' ' + Seconde;
    				} else {
    					CompteARebours.innerHTML = 'Compte à rebours terminé.';
    				}
    				Time_ReLance = setTimeout("compte_a_rebour();", 1000);
    			}
    Résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    4 jours, 11 heures, 29 minutes et 37 secondes
    Mais le problème c'est que je dois récupérer date_evenement dans ma base de données donc je devrais passer un paramètre à ma fonction.
    Et je fais ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    function compte_a_rebour(sec)
     {
    var CompteARebours = document.getElementById("CompteARebours");
    //date actuelle en secondes
    var date_actuelle = new Date()/1000;
    //date de fin en secondes                                                                  var date_evenement = new Date(sec);
    // difference de date en seconde
    var secondes = (date_evenement - date_actuelle);
    //Si la variable secondes est une valeur positive, c'est que le compte 
    //à rebours n'est pas terminé ; si c'est une valeur négative, 
    //c'est qu'il est terminé. On fait donc une petite condition : 
    if(secondes > 0){
     
    	DiffJour = Math.floor (secondes / 86400);
    	DiffHeure = Math.floor ((secondes - (DiffJour * 86400)) / 3600);
    	DiffMin = Math.floor ((secondes - ((DiffJour * 86400 + DiffHeure * 3600))) / 60);
    	DiffSec = Math.floor (secondes - ((DiffJour * 86400 + DiffHeure * 3600 + DiffMin * 60)));
     
    	var Et = "et";
     
    	if(DiffJour == 0){
    		DiffJour = '';
    		Jour = '';
    		} else {
    		Jour = (DiffJour == 1) ? "jour," : "jours,";
    		}
     
    		if(DiffHeure == 0){
    		 DiffHeure = '';
    		 Heure = '';
    		} else {
    		Heure = (DiffHeure == 1) ? "heure," : "heures,";
    		}
    		if(DiffMin == 0){
    			DiffMin = '';
    			Minute = '';
     
    		} else {
    		Minute = (DiffMin == 1) ? "minute" : "minutes";
    		}
    		if(DiffSec == 0){
    			DiffSec = '';
    			Seconde = '';
    			Et = '';
    		} else {
    		Seconde = (DiffSec == 1) ? "seconde" : "secondes";
    		Et = (DiffMin == 0 && DiffHeure == 0 && DiffJour == 0) ? "" : "et";
    	      }
    	CompteARebours.innerHTML = DiffJour + ' ' + Jour + ' ' + DiffHeure + ' ' + Heure + ' ' + DiffMin + ' ' + Minute + ' ' + Et + ' ' + DiffSec + ' ' + Seconde;
    	} else {
    	CompteARebours.innerHTML = 'Compte à rebours terminé.';
    	}
    	Time_ReLance = setTimeout("compte_a_rebour();", 1000);
    			}
    Et donc dans mon script PHP:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?php 
    //je convertis la date de ma base en secondes
    $sec = strtotime($valeur['date_fin']);
    echo '
    <span id = "CompteARebours">
    <script language="javascript" type="text/javascript">
    compte_a_rebour('.$sec.');
    </script></span>';
    ?>

    Mais ça ne marche pas, il ne m'affiche rien.

    Et j'ai ceci lorsque j'affiche le code source:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    												<span id = "CompteARebours">
    <script language="javascript" type="text/javascript">
    compte_a_rebour(1311717600);
    </script></span></a>

    Comment dois-je faire pour appeler ma fonction js dans mon script PHP afin qu'elle s'exécute correctement?

    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Pourquoi as-tu déplacé l'appel de ton script ?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onload="compte_a_rebour(<?php echo $sec; ?>)">
    convient très bien...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 37
    Par défaut
    Merci pour ta réponse Bovino. Mais mon fichier HTML (dans lequel il y a le BODY n'est pas celui dans lequel j'ai le script PHP (celui dans lequel j'appelle la fonction). Aussi j'ai un autre fichier .js dans lequel il y a le corps de ma fonction compte_a_rebour(sec). Donc j'ai un fichier .php dans lequel j'appelle ma fonction et je fais un include() de ce fichier dans mon fichier HTML. J'ai fait ce que tu m'as recommandé de faire mais il ne m'affiche toujours rien.

    Je ne sais toujours pas comment faire pour que ça marche.
    Merci.

Discussions similaires

  1. [PHP 5.3] retourne le resultat d'une fonction javascript dans un code php
    Par abir001 dans le forum Langage
    Réponses: 4
    Dernier message: 13/04/2010, 14h36
  2. Réponses: 4
    Dernier message: 30/05/2007, 18h05
  3. appeler une fonction javascript dans le code html
    Par kawther dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/05/2007, 16h40
  4. [PHP-JS] appeler une fonction javascript dans un lien
    Par kawther dans le forum Langage
    Réponses: 2
    Dernier message: 25/04/2007, 10h43
  5. Réponses: 2
    Dernier message: 03/04/2006, 18h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo