Fonction Javascript qui ne s'affiche pas dans les navigateur

Signaler
Messages postés
51
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 juin 2009
-
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
-
Mesdames, Mesdemoiselles, Messieurs bonjour,

Un petit post pour vousdemander conseil sur une chose qui me turlupine depuis plus d'une heure et que je ne trouve pas l'erreur:
Je veux afficher une fonction javascript (pas dur, j'en affiche plusieurs autres mais elles, elles s'affichent) et j'essai de l'appeler mais nada pouet pouet. Sur GoLive (uiiiii vieux logiciel mais bon je suis stagiaire ^^') il affiche ce quej e veux mais sur mozilla / IE nada.

Voilà passons au code:

$heures   = 23;  // Heure de fin de la promo
$minutes  =59;   // Minutes de fin pour la promo
$secondes = 59;  // Secondes de fin pour la promo

$annee = date("Y");  //-----------------------//
$mois  = date("m");  // Pou le mois en cours--//
$jour  = date("t");  //-----------------------//

$secondes =  mktime($heures,$minutes,$secondes,$mois,$jour,$annee) - time();
$secondes = str_replace("-","",$secondes);

?>

        <script type="text/javascript">
        // Script pour afficher le compte à rebours//
                var temps = 156000;
                var timer =setInterval('CompteaRebour()',1000);
                function CompteaRebour(){
               
                  temps-- ;
                  j = parseInt(temps/(24*60*60)) ;
                  h = parseInt((temps%(24*60*60))/3600) ;
                  m = parseInt((temps%3600)/60) ;
                  s = parseInt((temps%3600)%60) ;
                  document.getElementById('lool').innerHTML= (j<10 ? "0"+j : j) + '  j :  ' +
                                                                (h<10 ? "0"+h : h) + '  h :  ' +
                                                                (m<10 ? "0"+m : m) + ' mn : ' +
                                                                (s<10 ? "0"+s : s) + ' s ';                if ((j 0 && s 0 && m ==0 && h ==0)) {
                   clearInterval(timer);
                   "<?php echo loooooool ?>"                }
}
        </script>

Donc pour l'afficher, je devrais tout simplement :

Vous êtes bien d'accord?

Merci de vos réponses,
Cordialement
Shikapowa.

11 réponses

Messages postés
51
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 juin 2009

Je viens de m'apercevoir que c'est à cause du if ((j == 0 && s == 0 && m ==0 && h ==0)) si ça ne s'affiche pas
quand je vire le if, la date s'affiche mais je ne comprends pas pk ^o)
Messages postés
631
Date d'inscription
samedi 28 septembre 2002
Statut
Membre
Dernière intervention
18 mai 2009
3
C'est un peu normal :

if ((j 0 && s 0 && m ==0 && h ==0)) {
clearInterval(timer);
"<?php echo loooooool ?>"
}

Voilà ce que ton document va recevoir du serveur :

if ((j 0 && s 0 && m ==0 && h ==0)) {
clearInterval(timer);
"loooooool"
}

La ligne "loooooool" va bien entendu generer une erreur car ce n'est pas une instruction.

Essaie un truc du genre :

if ((j 0 && s 0 && m ==0 && h ==0)) {
clearInterval(timer);
alert("<?php echo loooooool ?>");
}
Messages postés
51
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 juin 2009

Vuiiiii j'avais rectifié ce p'tit soucis entre temps, mais là encore un autre soucis
j'ai remplacé if ((j 0 && s 0 && m ==0 && h ==0)) par if (temps ==0)
ça a fonctionné une fois et maintenant plus rien ne s'affiche, IE me dit timer non défini ^o)
Messages postés
51
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 juin 2009

L'erreur serait au niveau du premier timer
var timer =setInterval('CompteaRebour()',1000);

Je comprends pas pourquoi il me dit que ce n'est pas définie =o
ça serait la fonction setInterval qui buguerais avec la fonction clearInterval?
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
Bonjour,
??? mais encore ?
regarde la page résultante, le html généré, pas le php
Cordialement [mon Site] [M'écrire] Bul
Messages postés
51
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 juin 2009

Eh bien après plusieurs rafraichissement et manipulation ça fonctionne :D.
Maintenant c'est un conseil que j'aurais besoin si vous le voulez bien ^^

        // Script pour afficher le compte à rebours//
                var temps = <?php echo $secondes ?>;
                var timer =setInterval('CompteaRebour()',1000);
                function CompteaRebour(){
               
                  temps-- ;
                  j = parseInt(temps/(24*60*60)) ;
                  h = parseInt((temps%(24*60*60))/3600) ;
                  m = parseInt((temps%3600)/60) ;
                  s = parseInt((temps%3600)%60) ;
                  document.getElementById('lool').innerHTML= (j<10 ? "0"+j : j) + '  j :  ' +
                                                                (h<10 ? "0"+h : h) + '  h :  ' +
                                                                (m<10 ? "0"+m : m) + ' mn : ' +
                                                                (s<10 ? "0"+s : s) + ' s ';

if (j ==0 && h == 0 && m ==0 && s ==0)
    {

               
                <?php mysql_select_db($database, $Commercemysql);
                $delpromo = "delete from produit ";
                $res = mysql_query($delpromo) ; ?>
clearInterval(timer);
    }
}
En faite je veux que dès que le temps est écoulé(donc ici chaque fin de mois vu qu'une promotion dure un mois), tout les produit promotionnel, donc de la base produit, soient supprimés. Avec le "if" ci dessus, à chaque rafraichissement de la page (F5) ça execute la requete donc ça rentre dans le if, pourquoi? je suis un peu confus, je pensais à cause du contenu du getElement ?

Sinon j'ai en tête de remplacer j k m s par temps? mais je viens de m'apercevoir à l'instant que ça éxecuté la requête donc il rentre quand même dans le if alors que le compteur n'est pas à zéro =s
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
tu ne peux pas communiquer avec le php comme ça.
regarde ta page html résultante.
tu verras ( au chargement et après F5 ) :
var temps = valeur du résultat du calcul en php ;
if (j ==0 && h == 0 && m ==0 && s ==0)
    {
clearInterval(timer);
    }
pour que du html/javascript on appelle le php,
il faut faire le submit d'un formulaire, changer la page par l'url
    voire utiliser ajax.
tu n'as probablement pas encore percuté comment php/html/javascript
correspondent entr'eux.... c'est vrai que c'est pas simple en débutant.
petite explication minimaliste ici
Messages postés
51
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 juin 2009

saperlipopette, si c'est bon je viens de comprendre, c'est clair que j'avais zapper la différence de langage, excuse moi de mon ignorance ^^.
Donc il faudrait que quand ça arrive à 0, j'appelle une page (via une fonction redirection par exemple) qui elle permettra de supprimer les champs de la table puis qui ramène sur la page promotion?
Merci pour ton aide pour m'avoir rafraichit les idées =)
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
>>il faudrait que quand ça arrive à 0, j'appelle une page
que tu appelles un script sur le serveur
( c'est php qui peut génèrer la page )
avec un formulaire ou par l'url, la réponse sera affichée
ou tu pourrais mettre dans un iframe caché par exemple
  si tu ne veux pas afficher mais exploiter les infos
  ou alors, utiliser ajax, là, la réponse du php
   est retournée dans une variable javascript
  php ne sait pas comment il est appelé lui, il ne sait,
    enfin surtout toi, dans ton programme, que gérer $_POST ou $_GET
    pour les infos reçues et faire un "echo de la réponse" ( pour simplifier )
Messages postés
51
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
26 juin 2009

Euh tu pourrais m'éclairer pour un petit bout de code ôÔ?
Là le principe que j'ai en tête c'est ça :if ((s 0 && m0 && h ==0)) {
   clearInterval(timer);
   url = "<?php echo $redirection;?>"
   Redirection(url)
}
}
function Redirection(url) {
setTimeout("window.location=url", 500)

}

dans $redirection il y a ma page (genre delete.php). Hop ça appelle la page, sur cette page, il y a le script qui delete les produits puis un header pour rediriger vers la promo?
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
8
quelques imprécisions déjà :
 setTimeout("window.location=url", 500)
    url c'est donc "url" et non pas le contenu de la variable url
               ( qui pourrait être genre delete.php )
    pourquoi un setTimeout ?
    pas regardé plus loin !
et : le résultat du php sera affiché sur ta page actuelle
vide ( le résultat )  donc à priori, tu ne pourras plus faire grand chose
sur cette page.
un formulaire avec target vers un iframe caché
ou ajax ( et tu ne fais rien de la réponse )
ou delete.php retourne la page html que tu veux voir
@+