Nous sommes actuellement le 19 Avr 2024, 11:28

Le fuseau horaire est UTC-5 heures [Heure d’été]




Publier un nouveau sujet Répondre au sujet  [ 3 message(s) ] 
Auteur Message
MessagePublié: 04 Mars 2008, 09:58 
Hors-ligne
Occasionnel
Occasionnel
Avatar de l’utilisateur

Inscription : 17 Août 2002, 09:24
Message(s) : 200
Voici mon problème:

Mon page possède une table qui affiche plusieurs élements d'une base de données(mdb). Je dois inserer un countdown sur chaque lignes affichées, associé à la base de données. Tout fonctionne correctement, sauf que je ne suis pas capable de voir plus de 1 compteur à la fois. Je sais que le problème se trouve sur le
Code :
id="countbox"></
. Mais je n'arrvie pas à associer un ID different à chaque ligne.

Chaque numero de ligne de ma base de données est un numAuto nommé: ID_Contact.


Merci si vous pouvez m'aider.

Code :
<%
   sql2="SELECT tbl_Contacts.* FROM tbl_Contacts order by tbl_Contacts.Nom ASC;"   
   Set objConn2= Server.CreateObject("ADODB.Connection")
   Set objRec2= Server.CreateObject("ADODB.Recordset")
   objConn2.Open strConnect
   objRec2.Open sql2, objConn2,0,1,1
%>
   <table width="100%" border="0" cellspacing="0" cellpadding="0">
<%    
   While Not objRec2.EOF
%>
     <tr>
      <td align="left" valign="top">
      &nbsp;<%=Objrec2("Contact")%>&nbsp;


<SCRIPT type="text/javascript" language="JavaScript">
<!-- //start


<%
dim monthmoin1,monthmoin1a
monthmoin1=month(objrec29("Fin"))
monthmoin1a=monthmoin1-1
%>                                     
dateFuture = new Date(<%=year(objrec2("Fin"))%>,<%=monthmoin1a%>,<%=day(objrec2("Fin"))%>,<%=hour(objrec2("Fin"))%>,<%=Minute(objrec2("Fin"))%>,<%=Second(objrec2("Fin"))%>);

//###################################

function GetCount(){

   dateNow = new Date();
   amount = dateFuture.getTime() - dateNow.getTime();
   delete dateNow;

   // Si le temps est terminé
   if(amount < 0){
      document.getElementById('countbox').innerHTML="Terminé";
   }
   // si le temps n'est pas terminé
   else{
      days=0;hours=0;mins=0;secs=0;out="";

      amount = Math.floor(amount/1000);//Éliminer les "millisecondes" garder les secondes.

      days=Math.floor(amount/86400);//jours
      amount=amount%86400;

      hours=Math.floor(amount/3600);//heures
      amount=amount%3600;

      mins=Math.floor(amount/60);//minutes
      amount=amount%60;

      secs=Math.floor(amount);//secondes

      if(hours != 0){out += hours +"h"+((hours!=1)?"":"")+"";}
      if(days != 0 || hours != 0 || mins != 0){out += mins +" min.";}
      
      document.getElementById('countbox').innerHTML=out;

      setTimeout("GetCount()", 1000);
   }
}

window.onload=function(){GetCount();}//call

//-->
</script>
<a id="countbox"></a>



      </td>
    </tr>
<%
   objRec2.movenext
   wend
%>
   </table>

<%
   objRec2.Close
   objConn2.close
   Set objRec2=nothing
   Set objConn2=nothing
%>


Haut
 Profil  
Répondre en citant  
MessagePublié: 18 Mars 2008, 06:23 
Hors-ligne
Référence
Référence
Avatar de l’utilisateur

Inscription : 07 Jan 2002, 00:24
Message(s) : 5834
Je n'ai pas vraiment tout lu ton code, mais bon si tu veux avoir un Id différent pour tous tes liens voici comment tu peux t'y prendre.

Tu devras aussi modifier ta fonction javascript GetCount(). Avec 1 timer ça devrait faire l'affaire. De cette manière tu peux modifier le script pour valider l'ensemble des lignes en 1 passe (avec une boucle dedans). Par exemple tu fais un array de dateFuture et tu check chaque élément. Pour modifier le innerhtml, tu vas chercher l'id qui fit avec l'index de l'élément de ton array.

Tu sort donc ton script de la boucle et tu l'écris 1 seule fois à la fin lorsque tu auras remplis ton array de dateFuture.

Edit: j'ai fais la modif au complet, mais très rapidement. Inspire toi et vois si ça règle ton problème. Il y avait aussi une erreur lorsque tu calculais le mois - 1. Tu utilises l'objet objrec29 [monthmoin1=month(objrec29("Fin"))] qui n'est pas défini dans ton code.

Code :
<%
   Dim arrJavascript = ""
   Dim countRow = 0
   dim fin
   While Not objRec2.EOF     
%>
 
     <tr>
      <td align="left" valign="top">
        &nbsp;<%=objRec2("Contact")%>&nbsp;
        <a id="countbox<%=countRow%>"></a>
      </td>
   </tr>

<%
     fin = objRec2("Fin")
     arrJavascript = arrJavascript & "arrDates[" & countbox & "] = new Date(" & year(fin) & "," & month(fin) - 1 & "," & day(fin) & ","  & hour(fin) & "," & Minute(fin) & "," & Second(fin) & "); \n\r"

     countRow = countRow + 1
     objRec2.movenext
   Wend
%>

<SCRIPT type="text/javascript" language="JavaScript">
<!-- //start

var arrDates = new Array();
<%=arrJavascript%>

function GetCount() {

   for (i=0;i<arrDates.length;i++)  {
      dateNow = new Date();
      amount = dateFuture.getTime() - arrDates[i].getTime();
      delete dateNow;

      // Si le temps est terminé
      if(amount < 0){
         document.getElementById('countbox' + i).innerHTML="Terminé";
      }
     
      // si le temps n'est pas terminé
      else{
         days=0;hours=0;mins=0;secs=0;out="";
         amount = Math.floor(amount/1000);  //Éliminer les "millisecondes" garder les secondes.
         days=Math.floor(amount/86400);       //jours
         amount=amount%86400;
         hours=Math.floor(amount/3600);       //heures
         amount=amount%3600;
         mins=Math.floor(amount/60);            //minutes
         amount=amount%60;
         secs=Math.floor(amount);                  //secondes

         if(hours != 0){out += hours +"h"+((hours!=1)?"":"")+"";}
         if(days != 0 || hours != 0 || mins != 0){out += mins +" min.";}
     
         document.getElementById('countbox'+i).innerHTML=out;   
      }
   }
   setTimeout("GetCount()", 1000);
}

window.onload=function(){GetCount();}//call

//-->
</script>

_________________
This posting is provided "AS IS" with no warranties, and confers no rights!
©2006 - 2014 Jump


Haut
 Profil  
Répondre en citant  
MessagePublié: 25 Mars 2008, 10:50 
Hors-ligne
Occasionnel
Occasionnel
Avatar de l’utilisateur

Inscription : 17 Août 2002, 09:24
Message(s) : 200
J'ai essayé et essayé et je n'ai pas réussi. Il y a beaucoup d'autres lignes de code avec cette page. Alors j'ai utilisé javascript et un iframe. Dans le iframe j'ai ajouté un compteur qui se base sur le Request.querystring. Ça fais bien la job.

Merci pour la réponse.


Haut
 Profil  
Répondre en citant  
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 3 message(s) ] 

Le fuseau horaire est UTC-5 heures [Heure d’été]


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 4 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Recherche de:
Aller vers :  
cron
Propulsé par phpBB® Forum Software © phpBB Group
Traduction et support en françaisHébergement de site