php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.08.2004, 04:48  
Gast
 
Beiträge: n/a
Standard Nach 10 Sekunden soll etwas passieren...

Hallo,

habe ein kleines Problem, sitze schon ewig und ich komme nicht drauf wie ich es am besten Löse.
Folgendes Ziel habe ich: Meine User können eine Review lesen, sobald sie dorthin weitergeleitet wurden läuft ein Countdown ab, genau z.B. 10 Sekunden, danach wird ganz simpel eine Zahl erhöht und in die MySQL Datenbank eingetragen. Beim nächsten mal aktualisieren der Seite steht dann dort „Diese Review wurde x mal gelesen“.

Mir geht’s momentan nur um den Countdown, das Zahl erhöhen und anzeigen etc. funktioniert bereits. Also eigentlich funktioniert das Script im allgemeinen ohne Probleme, nur gibt es einen kleinen Haken... hier mal mein Script:

Code:
$aktuell = date("s");
$neu = $aktuell+5;

echo $aktuell. "

";
echo $neu. "

";

    while ((date("s"))< $neu) {
		echo "Der Wert ist ".date("s")."
\n
";
	}
Gut, die Schleife weiß von wann bis wann sie laufen soll. Problem ist nun das dass Date natürlich immer nur von 0-60 geht. Wenn aber nun die Beginnzeit angenommen 55 ist wäre die Endzeit 05. Die Schleife glaubt aber die Endzeit ist 65, somit läuft der Countdown dann nicht mehr 10 Sekunden, sondern eine Weile länger.
Wie Löse ich das Problem? Bitte gebt mit ein paar Tipps!

mfg,
Phil
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 30.08.2004, 05:16  
Gast
 
Beiträge: n/a
Standard

Also erstmal - rein theoretisch:

Zitat:
„Diese Review wurde x mal gelesen“.
Es soll aber die Zeit gezählt werden, richtig???
Also soll das Review entweder x mal gelesen worden sein, oder aber x Sekunden lang. oder????

Wenn mich nicht alles täuscht, aber auch nur dann!, ist date irgendeine getdatefunktion-also:
wenn sounsovielUhr und 59 Sekunden ist, soll sich nach 5 Sekunden der Count erhöhen???

Tipp:
1. Benutze einen "refresh-metatag" ! -
2. erhöhe immer eine von "(get)date" unabhängige Variable (wenn nötig mit date abgleichen) und nulle sie vorher!

Also:
$loginseconds=0;
und dann anfangen zu zählen!

_____________________________
Oder benutz nen Counter! - rein praktisch gesehen!
 
Alt 30.08.2004, 05:48  
Gast
 
Beiträge: n/a
Standard

Danke für die schnelle Antwort!
Nein, ich meinte x mal gelesen nicht wie lange der jenige schon die Seite betrachtet.

Hier der ganze Code:

Code:
$aktuell = date("s");
$neu = $aktuell+5;

echo $aktuell. "

";
echo $neu. "

";

    while ((date("s"))< $neu) {
		echo "Der Wert ist ".date("s")."
\n
";
	}

		$sql = "SELECT
					ID,
					Gelesen
				FROM
					CD_Reviews
				WHERE                
					ID = '".$_GET['id']."'";

		$result = mysql_query($sql) OR die(mysql_error());
				
		if(mysql_num_rows($result)) {
			while($row = mysql_fetch_assoc($result)) {

				$gelesen = $row["Gelesen"];
				$gelesen++;
			
				$sql = "UPDATE CD_Reviews          
						SET Gelesen = '".$gelesen."'								
						WHERE ID = '".$_GET['id']."'";
								
				mysql_query($sql) OR die(mysql_error());
			}
		}
Wie gesagt, funktioniert auch alles solange bis eben dieses Zeitproblem auftritt! Also zwischen 0-60 meine ich, 55-65 z.B. eben nicht mehr.

Kannst du mir bitte dazu ein Beispielscript zeigen etc.?
 
Alt 30.08.2004, 06:14  
Gast
 
Beiträge: n/a
Standard

Tut mir leid, ich verstehe den praktischen Sinn Deiner while-Schleife nicht, und wie lang die denn gehen sollte (im 1. code).
http://de.php.net/date
Also da formattierst Du irgendeinen String in ein Zeitformat - bis die time-outfunktion keine Lust mehr hat, oder eben 60 Sekunden errreicht worden sind (soweit ich das verstanden habe jedenfalls!).
.............................
Aber warum nimmst Du für Dein praktisches Anliegen nicht irgendeinen Counter???
Ben hat darüber ein Tutorial geschrieben:
http://www.phpfriend.de/ftopic15503.html
 
Alt 30.08.2004, 06:32  
Gast
 
Beiträge: n/a
Standard

Nein, ich brauche keinen Counter .
Nagut ich probiere alles Schritt für Schritt zu erklären:

Code:
$aktuell = date("s");
Die aktuellen Sekunden werden in der Variable $aktuell gespeichert.
Angenommen 10 Sekunden.

Code:
$neu = $aktuell+5;
In diesem Beispiel werden zu den aktuellen Sekunden 5 Sekunden hinzugerechnet. Nun 15 Sekunden.

Code:
while ((date("s"))< $neu) {
      echo "Der Wert ist ".date("s")."
\n
";
   }
Nun läuft die Date Funktion 5 Sekunden lang (von 10-15).

Der Sinn der ganzen Sache ist, dass nicht gleich von Anfang an, sobald man auf die Review Seite kommt, gezählt wird, dann könnte ich einen Counter verwenden. Sonder eben erst nach z.B. 5 Sekunden, denn wer liest schon eine Review in nicht einmal einer Sekunde? Deswegen möchte ich z.B. 15 Sekunden angeben, somit kann ich das ganze halbwegs filtern, denn im Schnitt braucht man ca. 15 Sekunden um eine Review zu lesen.
Wie gesagt das Script funktioniert auch super, aber eben wenn $aktuell z.B. 58 ergibt und dann 5 dazugrechnet werden, kommt 63 raus. Die date Funktion geht aber nur bis 60 und fangt dann wieder bei 1 an, somit kennt sich die while Schleife nimma aus und zählt ins unendliche, weil es 63 nicht gibt. (Die echo Ausgabe in der While-Schleife ist nur zum testen, später lass ich das ganze in eine temporäre Datei schreiben oder in eine Variable die nicht verwendet wird)
 
Alt 30.08.2004, 06:47  
Gast
 
Beiträge: n/a
Standard

Dann benutze einen refresh-metatag, und wenn Du keine neue Datei anlegen willst mußt Du halt einen querrystring verwenden, glaub ich.
refresh...url=datei?gelesen oder so ähnlich
if querry=gelsen {speichern}

edit:

Code:
echo " <meta http-equiv=\"refresh\" content=\"10; URL=datei.php?gelesen">  ";

if (query_string=="gelesen")

{
//...speichern
}
edit:
Der metatag sollte im <head> stehen mein ich gelesen zu haben, funktioniert aber irgendwie auch so...
 
Alt 30.08.2004, 09:34  
Gast
 
Beiträge: n/a
Standard

also ich kann mir zwar denken wozu du die 10 sekunden wartezeit haben willst,
aber praktikabel isses nich wirklich.

erhöh den wert einfach beim laden der seite. das macht *eigentlich* jeder so,
und von der statistik wird das aufs gleiche rauslaufen
 
Alt 30.08.2004, 10:04  
Benutzer
 
Registriert seit: 26.04.2004
Beiträge: 48
sharky
Standard

Arbeite doch anstatt mit date() einfach mit time().
Dann hast du die Sekunden seit (ich glaube) dem 01.01.1970 .

Dieser Wert wird immer weiter gezählt und nicht wieder auf null zurückgesetzt, daher sollte es keine Probleme machen..

Code:
$aktuell = time(); 
$neu = $aktuell+5; 

echo $aktuell. "

"; 
echo $neu. "

"; 

    while ((time())< $neu) { 
      echo "Der Wert ist ".time()-$aktuell."
\n
"; 
   }
ungetestet
sharky ist offline  
Alt 30.08.2004, 23:38  
Gast
 
Beiträge: n/a
Standard

Ich hab nun eine passende Funktion dazu gefunden: sleep(sekunden).

Wenn ich diese Funktion nun am Ende meines kompletten Scripts einbaue, wird die Review angezeigt, dann werden 15 Sekunden runtergezählt und danach der Wert für Gelesen erhöht.

Allerdings funktioniert das ganze wieder nur im Firefox Browser und nicht im IE.
Im IE wird zuerst die sleep Funktion ausgeführt, daher die ganze Review erst nach 15 Sekunden angezeigt. Wieso das? Liest der IE das Script verkehrt rum?! Was kann ich dagegen machen?
 
Alt 31.08.2004, 01:09  
Gast
 
Beiträge: n/a
Standard

vor
sleep();
ein
flush();

aber das ist ziemlicher murks. Php/der webserver sendet den ganzen output erst wenn das scipt komplett zu ende ist.
 
 


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
[Erledigt] Sekunden in Tage, Stunden, Minuten und Sekunden umrechnen PHP Tipps 2004 14 27.10.2008 23:50
Excelformen zum Umrechnen von Sekunden in Telefoneinheiten g Schiedsrichter Off-Topic Diskussionen 4 28.09.2007 10:10
Restliche Sekunden eines Tages? GSJLink PHP Tipps 2007 8 15.03.2007 14:27
beliebige Sekunden umwandeln Quagga PHP Tipps 2007 11 18.01.2007 16:20
Weiter nach 5 Sekunden... PHP Tipps 2007 3 13.11.2005 15:32
[SUCHE] Programm das alle x sekunden Lokale Datei hochlädt Beitragsarchiv 3 31.07.2005 10:53
Alle 10 Sekunden neue Seite PHP Tipps 2005 1 16.02.2005 15:02
berechnung auf sekunden lindner PHP Tipps 2005 6 20.01.2005 07:09
sekunden in tage und stunden wandeln janni PHP Tipps 2005 3 15.01.2005 10:47
Fehler in Zeitumrechnung: Sekunden in Tage/Stunden/Min/Sec PHP Tipps 2004-2 3 09.12.2004 01:22
minuten und sekunden bzw stunden ^^ Skazi PHP Tipps 2004-2 5 06.11.2004 16:23
Weiterleitung nach X Sekunden? PHP Tipps 2004 5 19.09.2004 19:15
sekunden in lesbare Zeit umwandeln PHP Tipps 2004 14 23.07.2004 16:43
Div Layer erst nach 2 Sekunden öffnen HTML, Usability und Barrierefreiheit 1 22.07.2004 18:22
sekunden zwischen 2 timestamps ausrechnen Ohrwurm83 PHP Tipps 2004 9 02.07.2004 16:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php schleife nach sekunden, php wert nach x sekunden erhöhen, while schleife php sekunden, weiterleitung nach x sekunden mit countdown, php echo nach einer sekunde, php alle x id erhöhen, countdown schleife html, html php 10 sekunden, nach 1 sekunde zahl erhöhen php, sekunden countdown genau, uhr countdown schleife 20 sekunden, php datezeiterhöhen, alle 5 sekunden counter, php countdown erstellen 5 sekunden, firefox echo schleife php, php while sekunde, php 10 sekunden schleife, php nach sekunden etwas schreiben, website reload nach 5 sec id um wert 1 erhöhen, 60 sec countdown schleife

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:43 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.