Avatar billede ken9 Nybegynder
26. september 2006 - 21:33 Der er 6 kommentarer og
1 løsning

Nedtælling til dato

Hej Eksperter

Jeg har nu forgæves ledt efter noget kode der tæller antal dage til en specifik dato.

Jeg henter datoen den skal tælle ned til, fra min database i Y-m-d.

Er det noget en eller anden kan hjælpe mig med? :-)

På forhånd tak
Avatar billede elskermad.dk Nybegynder
26. september 2006 - 22:01 #1
jamen skal det være løbende for så skal du jo over i javascript, men ellers:

<?

$y_m_d = "2006-07-24";

$tilbage = (strtotime($y_m_d) - time());

$dage = floor($tilbage / (60*60*24));

echo $dage . " tilbage";

?>
Avatar billede ferrari_brian Nybegynder
26. september 2006 - 22:02 #2
Du kan jo ikke lave noget der opdaterer tiden af sig selv i ren php ? du skal have noget javascript med... jeg har måske noget du kan bruge...
Avatar billede ferrari_brian Nybegynder
26. september 2006 - 22:18 #3
jeg har et script med progressbar, som jeg selv bruger med tider der er hentet ud af min database, dette er dog ned på minut og sekund niveau, ikke dage... ?
Avatar billede ferrari_brian Nybegynder
26. september 2006 - 22:21 #4
Duration og waitTime er det jeg tager fra databasen hvor jeg udregner hvor lang tid der er gået siden start og hvor lang tid det tager i alt.

Det burde kunne omskrives, og at fjerne progressbaren skulle heller ikke være noget problem. Dette er ment som inspiration:

<?php
      echo "<SCRIPT LANGUAGE='JavaScript'>";
      echo "var Duration = '$Duration';";
      echo "var waitTime = '$waitTime';";
?>

    var loadedcolor='rgb(49,156,206)' ;      // PROGRESS BAR COLOR
    var unloadedcolor='white';    // COLOR OF UNLOADED AREA
    var bordercolor='navy';        // COLOR OF THE BORDER
    var barheight=20;              // HEIGHT OF PROGRESS BAR IN PIXELS
    var barwidth=300;              // WIDTH OF THE BAR IN PIXELS

    if(Duration < 0)
    {
      Duration = 0;
      waitTime = -1;
    }

    var loaded = Duration*10;

    function RemoveDec(tal){
      if(!(""+tal).match(/^[\d.]+$/))return tal;
      tal = ""+Math.round(+tal*1)/1;
      punkt = tal.indexOf(".");
      if(punkt<0)return tal;
      return (tal).substring(0,punkt+0+1);
    }

    var ns4=(document.layers)?true:false;
    var ie4=(document.all)?true:false;
    var blocksize=(barwidth-2)/waitTime/10;

    var percentage=0;
    var PBouter;
    var PBdone;
    var PBbckgnd;
    var Pid=0;
    var txt='';

    if(ns4)
    {
      txt+='<table border=0 cellpadding=0 cellspacing=0><tr><td>';
      txt+='<ilayer name="PBouter" visibility="hide" height="'+barheight+'" width="'+barwidth+'">';
      txt+='<layer width="'+barwidth+'" height="'+barheight+'" bgcolor="'+bordercolor+'" top="0" left="0"></layer>';
      txt+='<layer width="'+(barwidth-2)+'" height="'+(barheight-2)+'" bgcolor="'+unloadedcolor+'" top="1" left="1"></layer>';
      txt+='<layer name="PBdone" width="'+(barwidth-2)+'" height="'+(barheight-2)+'" bgcolor="'+loadedcolor+'" top="1" left="1"></layer>';
      txt+='</ilayer>';
      txt+='</td></tr></table>';
      txt+='<span id=percentage>'+percentage+'%</span>';
    }
    else
    {
      txt+='<div id="PBouter" style="position:relative; visibility:hidden; background-color:'+bordercolor+'; width:'+barwidth+'px; height:'+barheight+'px;">';
      txt+='<div style="position:absolute; top:1px; left:1px; width:'+(barwidth-2)+'px; height:'+(barheight-2)+'px; background-color:'+unloadedcolor+'; font-size:1px;"></div>';
      txt+='<div id="PBdone" style="position:absolute; top:1px; left:1px; width:0px; height:'+(barheight-2)+'px; background-color:'+loadedcolor+'; font-size:1px;"></div>';
      txt+='</div>';
      txt+='<span id=percentage>'+percentage+'%</span>';
    }

    document.write(txt);

    function incrCount()
    {
      window.status="In Progress...";
      loaded++;
      if(loaded<0)
      {
        loaded=0;
      }
      if(loaded>=waitTime*10)
      {
        clearInterval(Pid);
        loaded=waitTime*10;
        window.status='Finished';
      }
      percentage = RemoveDec(loaded/(waitTime/10));
      var rem_time = RemoveDec(waitTime - loaded/10);
      var remaining_time_hour = ((rem_time-(rem_time%3600))/3600);
      if(remaining_time_hour < 10)
        remaining_time_hour = "0" + remaining_time_hour;
      var remaining_time_min = (((rem_time%3600)-((rem_time%3600)%60))/60);
      if(remaining_time_min < 10)
        remaining_time_min = "0" + remaining_time_min;
      var remaining_time_sec = rem_time%60;
      if(remaining_time_sec < 10)
        remaining_time_sec = "0" + remaining_time_sec;
      document.getElementById('percentage').innerHTML = percentage+'% Estimated Time Remaining: ' + remaining_time_hour + ':' + remaining_time_min + ':' + remaining_time_sec;
      resizeEl(PBdone, 0, blocksize*loaded, barheight-2, 0);
    }

    function findlayer(name,doc)
    {
      var i,layer;
      for(i=0;i<doc.layers.length;i++)
      {
        layer=doc.layers[i];
        if(layer.name==name)return layer;
        if(layer.document.layers.length>0)
          if((layer=findlayer(name,layer.document))!=null)
        return layer;
      }
      return null;
    }

    function progressBarInit()
    {
      PBouter=(ns4)?findlayer('PBouter',document):(ie4)?document.all['PBouter']:document.getElementById('PBouter');
      PBdone=(ns4)?PBouter.document.layers['PBdone']:(ie4)?document.all['PBdone']:document.getElementById('PBdone');
      resizeEl(PBdone,0,0,barheight-2,0);
      if(ns4) PBouter.visibility="show";
      else PBouter.style.visibility="visible";
      Pid=setInterval('incrCount()',95);
    }

    function resizeEl(id,t,r,b,l)
    {
      if(ns4)
      {
        id.clip.left=l;
        id.clip.top=t;
        id.clip.right=r;
        id.clip.bottom=b;
      }
      else id.style.width=r+'px';
    }

    window.onload=progressBarInit;
    </SCRIPT>
Avatar billede ken9 Nybegynder
26. september 2006 - 23:06 #5
Jeg skal kun bruge det i dage, og jeg tvivler på nogen gider og vente i 24 timer på at se den skifte, så det skal blot være i php ;-)

elskermad.dk, dit forslag virker fint.. Men min server kører i GMT.. kan du måske ordne timezonen til GMT+1? :-)
Avatar billede ken9 Nybegynder
26. september 2006 - 23:15 #6
Nevermind, smid et svar ;-)
Avatar billede elskermad.dk Nybegynder
26. september 2006 - 23:52 #7
det er vel bare at plusse 60*60 til $tilbage ? eller omvendt, kan ikke lige gennemskue GMT hehe... :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester