Schleifenwert in div schreiben
nauthiz
- javascript
Hi alle,
ich habe eine Frage:
Ich möchte den Zählwert einer PHP-Schleife an einer bestimmten Stelle in meiner seite anzeigen.
hier der pseudo-code:
<div name="counter"></div>
<?php
for($i=0;$i<=1000;$i++){
machmirdensql($i);
}
?>
Das Div counter soll den Wert von $i übernehmen und anzeigen und das die ganze zeit live.
Wie geht das?
Danke! :)
'ǝɯɐu$ ıɥ
Ich möchte den Zählwert einer PHP-Schleife an einer bestimmten Stelle in meiner seite anzeigen.
Und was willst du zählen? Besucher? Das geht nicht sooo einfach wie du dir das vorstellst: wie gehst du mit parallelen zugriffen um, wo willst du den Wert speichern, willst du Doppelzählungen verhindern,...
hier der pseudo-code:
*Würg*
Das Div counter soll den Wert von $i übernehmen und anzeigen und das die ganze zeit live.
WTF hat das DIV damit zu tun?
Wie geht das?
Schonmal was von echo(); gehört?
Grundlagen wären nicht schlecht, oder benutze eine fertige Lösung.
http://www.usegroup.de/software/phptutorial/ein_counter.html
http://www.tutorials.de/forum/php-tutorials/185797-einfacher-text-counter.html
http://www.php-einfach.de/tuts_php_counter.php
ssnɹƃ
ʍopɐɥs
Im Text steht (und im Titel auch!):
"Ich möchte den Zählwert einer PHP-Schleife an einer bestimmten Stelle in meiner seite anzeigen."
Ein echo innerhalb der Schleife führt dazu, daß ich beim einlesen von 30k Datensätzen auch 30k-mal eine Zahl geechot bekomme und das macht nicht viel Sinn, darum wollte ich ein Div haben, das einfach immer den aktuellen Wert von $i anzeigt.
Tach,
Ein echo innerhalb der Schleife führt dazu, daß ich beim einlesen von 30k Datensätzen auch 30k-mal eine Zahl geechot bekomme und das macht nicht viel Sinn, darum wollte ich ein Div haben, das einfach immer den aktuellen Wert von $i anzeigt.
Du kannst doch
echo "<div>".$i."</div>";
ausgeben ...
das ändert aber nichts an der Tatsache, dass PHP nicht zum clientseitigen Hochzählen geeignet ist!
mfg
Knusperklumpen
Moin!
das ändert aber nichts an der Tatsache, dass PHP nicht zum clientseitigen Hochzählen geeignet ist!
Das ist absolut richtig. Das, was hier angestrebt wird, ist bei einem vernünftigen Mitteleinsatz nicht machbar. Natürlich kann man Krücken bauen:
So lassen sich mit einem PHP Skript z.B. in einer Schleife auch mehrere komplette HTML-Seiten nacheinander senden. Dies kann aber das Skript sehr verlangsamen und ggf. deshalb zu einem Abbruch führen.
Eine zweite Variante wäre Ajax. Dann müsste aber die Information über den Zählerstand irgendwo abholbar sein, z.b. in einer Textdatei. Auch hier gilt: Aufwand und Leistungshunger sind sehr groß, der Nutzen sehr gering.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
Moin!
So lassen sich mit einem PHP Skript z.B. in einer Schleife auch mehrere komplette HTML-Seiten nacheinander senden. Dies kann aber das Skript sehr verlangsamen und ggf. deshalb zu einem Abbruch führen.
Ich fürchte, dies glaubt mir mancher nicht:
<?php
header('Content-type: multipart/x-mixed-replace;boundary=endofsection');
$pmt = array("-", "\\", "|", "/" );
for( $i = 0; $i <10; $i ++ ){
sleep(1);
print "\n--endofsection\n";
print "Content-type: text/html\n\n";
print "<html>
<head><title>Countdown</title></head>
<body>
<h1>".($i+1-10)." ".$pmt[$i % 4]."</h1>
</body>
</html>
";
ob_flush();
flush();
}
print "\n--endofsection\n";
print "Content-type: text/html\n\n";
print "<html>
<head><title>Start</title></head>
<body>
<h1>Start ...</h1>
</body>
</html>
";
print "\n--endofsection--\n";
?>
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
Im Text steht (und im Titel auch!):
"Ich möchte den Zählwert einer PHP-Schleife an einer bestimmten Stelle in meiner seite anzeigen."
Ein echo innerhalb der Schleife führt dazu, daß ich beim einlesen von 30k Datensätzen auch 30k-mal eine Zahl geechot bekomme und das macht nicht viel Sinn, darum wollte ich ein Div haben, das einfach immer den aktuellen Wert von $i anzeigt.
Also wirklich nur DEN wert von $i, der als letzter beim Schleifendurchlauf zustande kommt?
Dies wäre möglich, indem du den Wert von $i nach Beendigung der Schleife ausgeben lässt -
[code=php]
echo $i;
[/code]
eben.
'ǝɯɐu$ ıɥ
for($i=0;$i<=1000;$i++)
*grmpf* wer lesen kann ist klar im Vorteil, das hatte ich doch glatt übersehen...ich nehme (fast alles zurück und behaupte das Gegenteil.
http://www.supportnet.de/fresh/2006/2/id1266334.asp
ssnɹƃ
ʍopɐɥs
Hi,
Ich möchte den Zählwert einer PHP-Schleife an einer bestimmten Stelle in meiner seite anzeigen.
Das Div counter soll den Wert von $i übernehmen und anzeigen und das die ganze zeit live.
Mach Dir erst mal klar, wie http + php + html + javascript funktioniert:
Html + Javascript kommen erst dann im Browser zum Zug, wenn das PHP-Script auf dem Server längst fertig ist.
cu,
Andreas
Ok.
Ich formuliere die Frage mal um, mir ist es wurscht ob das script nachher in javascript oder php läuft, aber javascript lern ich grad erst...
Alles was ich will ist, das ich eine Stelle im Script habe, an die ich den Zähler von beliebigen Schleifen übergeben kann:
<div name="anzeige"></div>
for($i=0;$i<=$irgendeinwert;$i++){
tuirgendwas();
SetzeWertVonDivAnzeigeAufI($i);
}
Mahlzeit nauthiz,
Ich formuliere die Frage mal um, mir ist es wurscht ob das script nachher in javascript oder php läuft, aber javascript lern ich grad erst...
Das spielt keine Rolle. Die einzige relevante Frage ist: *wann* soll *was* passieren?
Du möchtest, dass *nach* dem Laden der Seite *während* sie im *Browser* angezeigt wird, eine Variable hochgezählt und ihr Wert angezeigt wird? Dann kommst Du um eine Client-seitige Programmiersprache wie z.B. Javascript nicht herum. Vollkommen egal, ob Du sie beherrscht oder nicht - es *geht* schlicht und ergreifend *nicht anders*.
Wie MudGuard schrieb: mach Dir erstmal klar, wie die Zusammenhänge von Server, Server-seitiger Programmierung, HTTP, Client und Client-seitiger Programmierung sind. Solange Du diese Grundlagen nicht beherrscht, sind alle weiteren Überlegungen müßig ...
Alles was ich will ist, das ich eine Stelle im Script habe, an die ich den Zähler von beliebigen Schleifen übergeben kann:
Das ist nicht wahr - Du willst *ganz offensichtlich* auch noch, das genau n-mal etwas ausgeführt wird, da Du ja innerhalb der Schleife einen Funktionsaufruf angibst. Um was handelt es sich dabei? Was soll passieren?
MfG,
EKKi
Moin!
Mach Dir erst mal klar, wie http + php + html + javascript funktioniert:
Html + Javascript kommen erst dann im Browser zum Zug, wenn das PHP-Script auf dem Server längst fertig ist.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
Hi,
Mach Dir erst mal klar, wie http + php + html + javascript funktioniert:
Html + Javascript kommen erst dann im Browser zum Zug, wenn das PHP-Script auf dem Server längst fertig ist.
Naja - das setzt voraus, daß keines der Geräte zwischen Webserver und Client abwartet, bis die Ausgabe beendet ist, bevor es das Zeug weiterleitet.
Das mag also vielleicht zufällig funktionieren, garantiert ist das aber nicht.
cu,
Andreas
Hi,
es soll also von 0 bis 1000 hochgezählt werden, so dass jede Zahl angezeigt und sichtbar ist ... also
1
2
3
4
5
....
997
998
999
1000
??
Rein mit HTML und PHP funktioniert das nicht, da HTML statisch ist und PHP nichts anderes macht, als HTML auszuliefern.
Die Seite müsste also dauernd neugeladen werden, um das nächste $i anzuzeigen.
Du braucht eine clientseitige Zählung, z.B. mit JavaScript und Manipulation des Dokumentes, entweder mit http://de.selfhtml.org/javascript/objekte/all.htm#inner_html@title=innerHTML, oder die Manipulation von http://de.selfhtml.org/javascript/objekte/elements.htm#form@title=Formularfeldern oder was auch immer ...
Du musst dabei bedenken, dass Schleifen sehr schnell hochzählen ... im ungünstigsten Fall siehst du nur die 1000. Das einbauen einer http://de.selfhtml.org/javascript/objekte/window.htm#set_timeout@title=Verzögerung ist daher sinnvoll.
Aber vielleicht ist das ja auch nicht das, was du willst .... beschreib das Vorhaben daher mal bitte etwas besser.
mfg
Knusperklumpen
@@Knusperklumpen:
nuqneH
und PHP nichts anderes macht, als HTML auszuliefern.
Das stimmt so nicht. PHP kann alles Mögliche generieren und ausliefern, auch Grafiken, PDF, … Ein PHP-Script kann auch irgendwas auf dem Server tun (Datenbank löschen bspw.) und gar nichts ausliefern.
Qapla'
Tach,
Das stimmt so nicht. PHP kann alles Mögliche generieren und ausliefern, auch Grafiken, PDF, … Ein PHP-Script kann auch irgendwas auf dem Server tun (Datenbank löschen bspw.) und gar nichts ausliefern.
Stimmt ... ich hätte vielleicht "in deinem Fall" dazuschreiben sollen.
Ändert ja aber nichts an dem Sachverhalt, dass sein Vorhaben allein mit PHP und HTML nicht funktioniert.
mfg
Knusperklumpen
Hallo,
Ändert ja aber nichts an dem Sachverhalt, dass sein Vorhaben allein mit PHP und HTML nicht funktioniert.
Deshalb steht's vermutlich auch in der Rubrik 'javascript". Aber das:
mir ist es wurscht ob das script nachher in javascript oder php läuft
passt nicht ganz. Das kann einem bei so einem Vorhaben nicht wurscht sein. Es läuft nunmal so:
----- ------ --------- ------------
| PHP | --> | HTML | --> | Browser | --> | Bildschirm |
----- ------ --------- ------------
Wenn PHP bis 1000 zählt, kann der Browser auch nur die 1000 anzeigen, nicht 1, nicht 10, nicht 42 und auch nicht 584. Auf deutsch: Ohne Unterbrechung Hochzählen in PHP und jeweils anzeigen in einem DIV im Browser geht nicht.
Der Browser müsste schon jede Zahl einzeln beim Server abholen (poll) oder der Server müsste jede Zahl einzeln dem Browser schicken (push).
Natürlich könnte man mit JS im Browser unabhängig vom Server (bzw. von PHP) einfach bis 1000 hochzählen, aber das ist hier anscheinend nicht erwünscht.
Gruß, Don P
Moin!
Wenn PHP bis 1000 zählt, kann der Browser auch nur die 1000 anzeigen, nicht 1, nicht 10, nicht 42 und auch nicht 584. Auf deutsch: Ohne Unterbrechung Hochzählen in PHP und jeweils anzeigen in einem DIV im Browser geht nicht.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
Moin!
Ich sehe das So: Es sollen x Datenbankzugriffe geschehen. Angezeigt werden soll, bei welchem Datensatz das Tool gerade ist.
Die Datenbankzugriffe geschehen auf dem Server, die Anzeige auf dem Client. Mit dem was hier gesagt wurde, hat sich das Thema wohl erledigt.
Mit JS und AJAX koennte man sich soetwas bauen. Ob das sinnvoll ist, sei mal dahingestellt.
Moin!
Hi alle
Wie geht das?
Tut mir leid, aber Deine Fragestellung ist so unspezifisch und unverständlich, dass Dir hier keiner eine sinnvolle Lösung anbieten kann.
Einziger sinnvoller Lösungsversuch: Formuliere Deine Frage neu und verständlich.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix