php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.02.2011, 21:42  
Neuer Benutzer
 
Registriert seit: 12.02.2011
Beiträge: 24
PHP-Kenntnisse:
Anfänger
st0n3d befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Problem mit Countdown

Hey,

ich habe da ein kleines Problem mit meinem Countdownscript, welches ich irgendwie nicht gelöst bekomme ...

... und zwar habe ich in meiner Datenbank 2 timestamps hinterlegt, die jeweils die Start/Endzeit einer Aktion enthalten.


Hier die Abfrage der Endzeit:

PHP-Code:
include("config.php");
$link mysql_connect($xxx$xxx$xxx) or die ("Keine Verbindung zu der Datenbank möglich.");
mysql_select_db($xxx$link);

$abfrage "SELECT * FROM Timestamp WHERE id = '$uid' LIMIT 1";
$ergebnis mysql_query($abfrage);
while(
$row mysql_fetch_object($ergebnis))
           {
       
$timestamp $row->time_end;
       } 
Allerdings läuft der Countdown auf die Art und Weise tausende von Stunden .

Demnach habe ich dann versucht "time_end"-"time_start" als timestamp zu setzen, was mir dann auch die richtige Zeit im Countdown ausgegeben hat.

Jedoch wird die verbleibende Zeit nicht gespeichert, ruf ich die Seite erneut auf, fängt der Countdown auch wieder von vorne an.

Muss ich also mit SESSIONS / COOKIES arbeiten, oder hab ich in meinem Script für den Countdown einen Fehler ?


Countdownscript:

Code:
<script type="text/javascript">
     <!--
      var countdown = <?=$timestamp?>;
      
      function doCount()
       {
        if (countdown > 0)
         {
          countdown--;
          document.forms['counter'].elements['counter'].value = formatTime(countdown) + ' bis zur Fertigstellung';
          window.setTimeout('doCount()', 1000);
         }
         else
         {
          document.forms['counter'].elements['counter'].value = 'Zur naechsten Seite';
          document.forms['counter'].elements['counter'].disabled = false;
         }
       }
      
      function formatTime(time)
       {
        var h = Math.floor(time / 3600);
        var m = Math.floor(time % 3600 / 60);
        var s = time - (h*3600 + m*60);
        
        s = ( (s < 10) ? '0' : '' ) + s;
        h = ( (h < 10) ? '0' : '' ) + h;
        m = ( (m < 10) ? '0' : '' ) + m;
        
        return h + ':' + m + ':' + s;
       }
      
     //-->
    </script>
Im groben und ganzen möchte ich bloß, dass der im JS angegebene timestamp einmalig bis zur Endzeit abläuft, egal ob ich mich auf der Seite befinde oder nicht.

Ich hoffe ich hab mein Problem verständlich erklärt und ihr könnt mir helfen
st0n3d ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.02.2011, 22:01  
Neuer Benutzer
 
Registriert seit: 12.02.2011
Beiträge: 24
PHP-Kenntnisse:
Anfänger
st0n3d befindet sich auf einem aufstrebenden Ast
Standard

Ich denke ich habe das Problem gelöst aber auf meine Art und Weise tut sich gleich das nächste auf ...

... ich habe nun time_end-time() als tiemstamp gesetzt.

Aber ich glaube so könnte man das System austricksen indem man seine Computeruhr umstellt oder täusche ich mich da ?
st0n3d ist offline   Mit Zitat antworten
Alt 18.02.2011, 23:09  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von st0n3d Beitrag anzeigen
... ich habe nun time_end-time() als tiemstamp gesetzt.
Du redest hier von einer serverseitigen Berechnung, ja?

Zitat:
Aber ich glaube so könnte man das System austricksen indem man seine Computeruhr umstellt oder täusche ich mich da ?
Wenn du serverseitig etwas berechnest, ist die Clientzeit doch egal.

Dass allerdings jegliche clientseitige Zählung manipulierbar ist, das sollte wohl klar sein. Wenn also irgend etwas nicht vor Ablauf dieser Zeitspanne freigeschaltet/verfügbar sein soll, dann muss das logischerweise serverseitig geprüft werden.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 19.02.2011, 09:25  
Neuer Benutzer
 
Registriert seit: 12.02.2011
Beiträge: 24
PHP-Kenntnisse:
Anfänger
st0n3d befindet sich auf einem aufstrebenden Ast
Standard

Woher bezieht time() denn die Zeit ?

PHP-Code:
     $erhoehung 30*$row->wert_1
     
$start time(); 
     
$end $start+$erhoehung

     
$sql="UPDATE Werte SET time_end=$end WHERE id = '$uid' LIMIT 1"
Bin leider noch etwas unerfahren was das Ganze angeht, deshalb oben nochmal die Art und Weise wie ich die Endzeit bestimme.

Könnte man das Manipulieren ?
st0n3d ist offline   Mit Zitat antworten
Alt 03.03.2011, 18:58  
Neuer Benutzer
 
Registriert seit: 12.02.2011
Beiträge: 24
PHP-Kenntnisse:
Anfänger
st0n3d befindet sich auf einem aufstrebenden Ast
Standard

Also bis hierher habe ich nun alle Probleme in den Griff bekommen, allerdings hätte ich noch eine kleine Frage zu meinem Countdown.

Und zwar würde ich ihn gerne mehrmals auf einer Seite nutzen, hab schon vieles ausprobiert aber bekomme es irgendwie nicht auf die Reihe

Mir wird immer 1 der 2 Buttons als "disabled" angezeigt, und der andere funktioniert wie erwünscht.

Habt ihr vielleicht eine Idee was ich dazu machen muss ?

Hier nochmal das aktuelle Script:

Code:
   <html>
   <head>
   
   <script type="text/javascript">
   var countdown = <?=$timestamp?>;
      
   function doCount()
   {
   if (countdown > 0)
   {
   countdown--;
   document.forms['counter'].elements['counter'].value = formatTime(countdown) + ' bis zur Fertigstellung';
   window.setTimeout('doCount()', 1000);
   }
   else
   {
   document.forms['counter'].elements['counter'].value = 'Starten';
   document.forms['counter'].elements['counter'].disabled = false;
   }
   }
      
   function formatTime(time)
   {
   var h = Math.floor(time / 3600);
   var m = Math.floor(time % 3600 / 60);
   var s = time - (h*3600 + m*60);
        
   s = ( (s < 10) ? '0' : '' ) + s;
   h = ( (h < 10) ? '0' : '' ) + h;
   m = ( (m < 10) ? '0' : '' ) + m;
        
   return h + ':' + m + ':' + s;
   }
   </script>
   
   </head>
   <body onLoad="doCount();">

   <form name= "counter" form action="?go=countdown" method="post">
   <input type="submit" name="counter" value="Starten" onClick=('doCount()', 1000); disabled/>
   </form>
   
   </body>
   </html>
st0n3d ist offline   Mit Zitat antworten
Alt 03.03.2011, 19:01  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Die Elemente sind halt fest verdrahtet. Das müsstest Du ändern.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 03.03.2011, 19:29  
Neuer Benutzer
 
Registriert seit: 12.02.2011
Beiträge: 24
PHP-Kenntnisse:
Anfänger
st0n3d befindet sich auf einem aufstrebenden Ast
Standard

Gibts es für sowas irgendwo ein Tutorial oder nen Thread, den du zufällig kennst ?

Bin seit Stunden am googeln, und hab bisher nichts brauchbares gefunden.

Ich hab schon so ziemlich alles versucht abzuändern, im Script sowie im Button.
st0n3d ist offline   Mit Zitat antworten
Alt 03.03.2011, 20:15  
Neuer Benutzer
 
Registriert seit: 12.02.2011
Beiträge: 24
PHP-Kenntnisse:
Anfänger
st0n3d befindet sich auf einem aufstrebenden Ast
Standard

Um mein Problem mal etwas verständlicher darzustellen ...

PHP-Code:
 if (isset ($_POST['counter'])) 
 {
$timestamp XXX;}

 if (isset (
$_POST['counter2'])) 
 {
$timestamp XXX;} 
... also durch das klicken auf den jeweiligen Button wird mein $timestamp generiert.

Seh ich das richtig, dass ich nur den Button duplizieren/abändern muss ?

Egal wie ich es versuche, es bleibt weiterhin nur 1 Button aktiv.

Wird ...

Code:
 <body onLoad="doCount();">
... vor jedem der Buttons benötigt, oder reicht es wenn ich beide drunter stelle ?

Über jede Antwort wäre ich sehr dankbar
st0n3d ist offline   Mit Zitat antworten
Alt 03.03.2011, 23:51  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

Benutz doch die Session für 10 Sekunden + x als Validator auf Serverseite und lass auf dem Client 10 Sekunden den Countdown runterlaufen (mit dem javascript Date Objekt).

grüße


Basti
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog
rudygotya ist offline   Mit Zitat antworten
Alt 04.03.2011, 17:17  
Neuer Benutzer
 
Registriert seit: 12.02.2011
Beiträge: 24
PHP-Kenntnisse:
Anfänger
st0n3d befindet sich auf einem aufstrebenden Ast
Standard

Heisst das, der Countdown geht dann erst nach 10 Sekunden oder würde der wie gehabt sofort funktionieren ?

mfG
st0n3d ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Umlaut Problem nokieone PHP Tipps 2009 7 16.10.2009 19:30
Problem mit Basedir in PhP cmuch05 Datenbanken 9 08.01.2009 14:17
[Erledigt] Problem: PHP Selbe Datei mehr als 1 Mal soulan PHP Tipps 2008 13 28.11.2008 22:51
Problem Upload mehrere Dateien und schreiben in DB Lapje PHP Tipps 2008 1 22.10.2008 13:12
utf8 Problem (Daten aus DB auslesen) go1denboy PHP Tipps 2008 1 23.09.2008 12:19
Problem mit swfobjects R4v3r JavaScript, Ajax und mehr 8 21.09.2008 14:17
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
Countdown der.... xenus HTML, Usability und Barrierefreiheit 0 02.10.2006 10:07
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
[Erledigt] wieder ein Problem bei phpmailer und smtp PHP Tipps 2006 24 07.02.2006 01:07
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
problem (countdown) HTML, Usability und Barrierefreiheit 8 07.11.2004 23:08
Der 'Countdown' und das Tutorial... HTML, Usability und Barrierefreiheit 2 12.09.2004 22:43
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
javascript countdown timestamp, countdown mit timestamp, nach countdown php script ausführen, timestamp verbleibende, php java countdown to timestamp, window.settimeout funktioniert nicht, timesstamp aus datenbank als counddown, startzeit endzeit javascript counter, countdown script von timestamp, settimeout funktioniert nicht, timestamp countdown java, php countdown, count down php, php countdown ==0, timestamp countdown start end

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:21 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum