PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [HTML/CSS/JS] JS-Zähler gesucht (Div Updaten)



breaker
06.05.2008, 00:17
Ich kenne mich mit JS nicht so besonders aus, ich suche ein Javascript, welches eine Art Zähler realisiert, es sollte aber nicht einfach alle Zahlen in einer Reihe anzeigen, sondern ein Div Update, so das permanent ein kurzer Text angezeigt und darunter die Zahl aktualisiert wird.......kennt jemand sowas und kann mir weiterhelfen ?

Benutzer1699
06.05.2008, 02:59
Auf Dieser Seite (http://www.strike-the-mosquito.com/) könnte wohl eine mögliche Problemlösung stehen ;)

Wenn ich wüsste wie du aktualisieren möchtest, bzw. ein paar Details hätte, hätte ich dir ein kleines Beispiel zurecht gebastelt. Darfst natürlich gerne weitere Infos posten, oder mich auch kontaktieren diesbezüglich.

breaker
06.05.2008, 03:28
Auf Dieser Seite (http://www.strike-the-mosquito.com/) könnte wohl eine mögliche Problemlösung stehen ;)

Wenn ich wüsste wie du aktualisieren möchtest, bzw. ein paar Details hätte, hätte ich dir ein kleines Beispiel zurecht gebastelt. Darfst natürlich gerne weitere Infos posten, oder mich auch kontaktieren diesbezüglich.

Ich habe eine SQL-Query, wo Paidmails aus der DB gelesen und an die Mitglieder verschickt werden.....wenn jetzt 500 Mitglieder angemeldet sind, bleibt die Seite bis zum Verschicken aller Mails ohne Inhalt, da will ich in die Query ein JS einbauen, welches die Anzahl der bereits verschickten Mails anzeigt und aktualisiert ;)

Mit deinem Link kann ich mal garnichts anfangen, weil er total Themenfremd ist

jpwfour
06.05.2008, 17:26
in sql abfragen javascript einzubauen ist relativ unmöglich, javascript kann nur in html seiten eingebaut werden, die evtl. von php generiert werden.

was ich mir vorstellen könnte, wäre (und damit umgeht man auch mögliche timeouts vom server), das verschicken der emails in eienr art warteschlange zu machen, also immer in 50er packeten z.bsp., und das ganze per GET parameter steuert.

d.h.:
klick auf "verschicken"-> verschicken.php?s=1
beim onload ereignsi, d.h. wenn alle emails verschickt sind, wird verschicken.php?s=2 geladen, nun werden die nächsten 50 mails verschickt etc...

oder manmacht es gleich mit ajax, also dass man nur eine seite hat, die im "hintergrund" das scruipt zum verschicken aufruft, und solange das keinen wert zurückgibt, eine art ladeanimation anzeigt.

oder auch per php und flush(), nur dann kann man nur zahlen "anhängen" und keine vorhandenen aktualisieren.

breaker
08.05.2008, 00:36
in sql abfragen javascript einzubauen ist relativ unmöglich, javascript kann nur in html seiten eingebaut werden, die evtl. von php generiert werden.

was ich mir vorstellen könnte, wäre (und damit umgeht man auch mögliche timeouts vom server), das verschicken der emails in eienr art warteschlange zu machen, also immer in 50er packeten z.bsp., und das ganze per GET parameter steuert.

d.h.:
klick auf "verschicken"-> verschicken.php?s=1
beim onload ereignsi, d.h. wenn alle emails verschickt sind, wird verschicken.php?s=2 geladen, nun werden die nächsten 50 mails verschickt etc...

oder manmacht es gleich mit ajax, also dass man nur eine seite hat, die im "hintergrund" das scruipt zum verschicken aufruft, und solange das keinen wert zurückgibt, eine art ladeanimation anzeigt.

oder auch per php und flush(), nur dann kann man nur zahlen "anhängen" und keine vorhandenen aktualisieren.

Die Funktion zum verschicken läuft ja schon (per Funktion nicht per GET ;) ), die Sache mit dem Ajax klingt ineressant, leider hab ich davon fast keine Ahnung, eine Lade-Animation wäre auch Cool :-)

breaker
09.05.2008, 11:34
Das ganze sieht so aus:



while($res2 = sql_fetch_assoc($sql2)) {

/* ca 2000 Datensätze verarbeiten */


Anzeige für Admin, was und ob überhaupt etwas getan wird

}


Dumemrweise wird in dieser Schleife nichtmal ein ein "echo" ausgegeben,

jpwfour
09.05.2008, 21:26
eine möglichkeit:

while($res2 = sql_fetch_assoc($sql2)) {

/* ca 2000 Datensätze verarbeiten */


Anzeige für Admin, was und ob überhaupt etwas getan wird

echo '.';
flush(); //sendet den ausgabe puffer

}

echo 'fertig';

so würde nach jedem verarbeiteten datensatz ein punkt erscheinen, und am ende fertig.

wobei diese option nur auf ca. 40% aller syteme/server funzt, da zum teil der server weiter "puffert", also doch alles erst ausgibt, wenn fertig gearbeitet, oder dein browser weiterpuffert, also auch alle punkte auf einmal erscheinen und nicht nacheinander.

aber einen test ist es ja wert.

die bessere methode wäre, den der while schleife vorausgehenden query per limit abzugrenzen, und dann eben per GET varaibel und einem javascript die limits immer höher setzen.

breaker
11.05.2008, 03:47
eine möglichkeit:

while($res2 = sql_fetch_assoc($sql2)) {

/* ca 2000 Datensätze verarbeiten */


Anzeige für Admin, was und ob überhaupt etwas getan wird

echo '.';
flush(); //sendet den ausgabe puffer

}

echo 'fertig'; so würde nach jedem verarbeiteten datensatz ein punkt erscheinen, und am ende fertig.

wobei diese option nur auf ca. 40% aller syteme/server funzt, da zum teil der server weiter "puffert", also doch alles erst ausgibt, wenn fertig gearbeitet, oder dein browser weiterpuffert, also auch alle punkte auf einmal erscheinen und nicht nacheinander.

aber einen test ist es ja wert.

die bessere methode wäre, den der while schleife vorausgehenden query per limit abzugrenzen, und dann eben per GET varaibel und einem javascript die limits immer höher setzen.

So hatte ich es ja auch gehabt, dummerweise konnte ich mit flush(); alleine kein Erfolg erzielen, nur mit :

flush();
ob_flush();

wurde das Ergebniss direkt ausgegeben. Die Daten, die ausgegeben werden sollten, stehen direkt vor dem flush();

So sieht es aus (bei einem JS-Noob :D) :




// blabla
echo '<div align="center"><div id="versand">Es werden <strong>' . $res4a . '</strong> Paidmails der Kampagne <strong>' . $k_name . '</strong> verschickt.<br /><br />';
ob_flush();
flush();

// blabla

?>
<script type="text/javascript">
var count = 0;
</script>
<?PHP
while($res4 = sql_fetch_assoc($sql4)) {
extract($res4);
extract($res21);
?>
<script type="text/javascript">
count++;
zahl.innerHTML = count;
</script>
<?PHP
echo '<div id="zahl" style="font-size:14px; font-weight:bold;"></div>';
ob_flush();
flush();
// blabla

}
echo '</div></div>';
ob_flush();
flush();


im Firefox läuft das Hochzählen für en 1. Durchgang perfekt, allerdings wird für den 2. Durchgang ein neuer DIV unter dem 1. gemacht und der Zähler läuft im 1. DIV wieder hoch, nicht im 2. :/