Einfache PHP Frage

UnBreakable

Lt. Junior Grade
Registriert
Sep. 2005
Beiträge
477
also: ich hab ne einfache schleife:
PHP:
<?php

while($i < $zahler)
{
echo "Durchlauf $i";
$i++;
}
?>

nur will ich aber, dass die zahl (der wievielte durchlauf es ist) immer weiter nach oben zählt!
also dass nur einmal Durchlauf und dann die nummer dort steht!

es soll nicht beim durchlauf 3 das dort stehen:

Durchlauf 1
Durchlauf 2
Durchlauf 3

sondern dass soll beim durchlauf 3 dort stehen:


und beim durchlauf 4 dann das:


aber ned den PHP code dann so umformen:
PHP:
<?php

while($i < $zahler)
{
$i++;
}
echo "Durchlauf $i";
?>

das bringt mich auch nicht, weiter, denn dann durchläuft er die schleife und schreibt am ende nur Durchlauf 1002 hin z.B.

ich will dass er von 1 bis rauf zählt...

is bissl schwer zu erklären, ich hoffe ihr wisst was ich mein...
 
Zuletzt bearbeitet:
Hi,
das was du mit PHP machen möchtest geht so eigentlich nicht. Alles was an den Browser gesendet wurde, läßt sich nicht mehr löschen bzw. verändern. Wenn also "Durchlauf 7" angezeigt wird, kannst du daraus nicht einfach "Durchlauf 8" machen. Die einzige Möglichkeit wäre, das Skript gänzlich umzuschreiben und nach jedem Durchlauf die Seite neu aufzurufen (z.B. mit Weiterleitung oder JavaScript) und danach die Nummer anzuzeigen. (Langsam ist das auf jeden Fall...)
Je nachdem, was du tatsächlich bei einem Durchlauf errechnen willst, kannst du die Anzeige vielleicht auch mit einem Java-Skript realisieren oder du steigst auf eine andere client-seitige Applikation wie Applets oder Flash um.

MfG, Gobble-G
 
ok, das verstehe ich und ist logisch!
Dann hätte ich ne andere frage!

PHP:
<?php 

while($i < $zahler) 
{ 
echo "Durchlauf $i"; 
$i++; 
sleep(2);
} 
?>

wenn ich wie hier das sleep einbau, hab ich folgendes problem:
es wird erst ne zeitlang die seite geladen und dann alles auf einmal ausgegeben!

Ich will aber dann, dass er ausgibt:
Durchlauf 1
dann 2 sekunden wartet
und dann kommt Durchlauf 2...

ist das möglich?
 
Im Prinzip ja, allerdings werden dann alle Durchläufe nacheinander angezeigt. So wie hier im Beispiel. Warum alles auf einmal angezeigt wird, kann verschiedene Gründe haben. Z.B. könnte der unvollständige HTML-Rahmen um die Daten den Browser veranlassen noch gar nichts anzuzeigen, obwohl schon ein Teil der HTML da ist. (Versuch's mal mit verschiedenen Browsern...) Ach ja, du kannst auch nach jedem "echo" erzwingen, dass die Daten zum Browser gesendet werden. Guck hier. Ob's klappt, ist sicher wieder browserabhängig und deshalb eigentlich unattraktiv.
 
also das mit dem flush hab ich schon probiert, das hat nicht funktioniert...
hatte das so eingebaut:
PHP:
<?php  
$zahler = "3";
while($i < $zahler)  
{  
echo "Durchlauf $i";  
$i++;  
sleep(2); 
flush();
}  
?>

Ich benutz den IE 6.0

PHP:
<?php

// current time
echo date('h:i:s') . "\n";

// sleep for 10 seconds
sleep(10);

// wake up !
echo date('h:i:s') . "\n";

?>

wenn ich das von deinem link teste, funktionierts auch ned!
also er wartet auch erst 10 sekunden und gibt dann beide uhrzeiten aus..
 
php ist nunmal serverseitig. sprich wenn du die http anfrage an den server stellt wird dieser den gesamten php code komplett ausführen und dann das ERGEBNIS an den browser zurükschicken. sprich dynamisches aussehen ist mit php nicht möglich.

warum willst du das überhaupt mit php machen? Mit javascript wäre das sogar ziemlich einfach denke ich...
 
weil ich von javascript keine ahnung hab und ichs mit PHP machen will!
das mit dem serverseitig usw. hab ich ja verstanden, dass das mit dem überschreiben praktisch ned hinhaut!
das ist ja ok!
aber wenn ich das ohne dem sleep mach, und die schleife z.B. bis 100000 durchlaufen lass, macht er auch nicht erst alle und gibt dann alle auf einmal aus, sondern alle nacheinander!
nur geht mir das zu schnell wie er die ausgibt!
drum wollte ich ein sleep dazwischen machen, da gibt er dann allerdings alle auf einmal aus!
und drum wollte ich wissen wie das funktioniert, dass er das nicht tut....
 
weil ich von javascript keine ahnung hab und ichs mit PHP machen will!

man sucht sich die sprache zur aufgabe, nicht andersrum, sonst waere das konzept der spezialisierung einer programmiersprache fuer bestimmte aufgabenbereiche auch sinnfrei. wenn du nicht das wissen hast, deine aufgabe umzusetzen, lerne es einfach.
 
Wenn man HTML "etwas" abused würde es gehen...

Anstatt
PHP:
echo "Durchlauf $i";
mal
PHP:
echo "<div style=\"position:absolute; top:0; left:0\">Durchlauf $i</div>";
versucht?

Dann wird die Ausgabe quasi immer aufeinandergestapelt.

Den CSS-Code natürlich in eine Extra-Datei auslagern, das spart Bandbreite.
 
Und dass er wenn du ohne sleep arbeitest ein wenig braucht bis er die 10000 anzeigt liegt einfach daran dass er die daten einfach nur so lange runterlädt bzw so lange braucht zum seitenaufbau... das liegt nicht an der schleife.

mfg
 
Steffen schrieb:
PHP:
echo "<div style=\"position:absolute; top:0; left:0\">Durchlauf $i</div>";

ich meine, dann braeuchtest du schon eine hintergrundfarbe, sonst kannst du die zahl ab dem zweiten durchlauf nicht mehr lesen.
 
Zurück
Oben