Frank: echo ... aber nicht immer!

Moin SelfHTMLER,
hab mal ne Frage, ist es möglich während dem Durhlaufen einer schleife meinetwegen in einer Tabellenzelle einen Text anzuzeigen("es wird gearbeitet"), und den text anschließend nach dem verlassen der Schleife wieder auszublenden???
MFG Frank

  1. Moin SelfHTMLER,
    hab mal ne Frage, ist es möglich während dem Durhlaufen einer schleife meinetwegen in einer Tabellenzelle einen Text anzuzeigen("es wird gearbeitet"), und den text anschließend nach dem verlassen der Schleife wieder auszublenden???
    MFG Frank

    Hallo,
    sowas kenne ich nicht (bin aber selbst nur Anfänger).
    2 Möglichkeiten kann ich mir vorstellen:

    1. ich hatte mal gesehen, dass bei einem Server einfach für eine festgeschriebene Zeit ein Bild eingeblendet wurde
    2. Vor der Schleife das echo ausgeben, bei Beendigung der Schleife die Seite neu aufbauen lassen und dann eben ohne den Text. (bzw. ein Kennzeichen setzen, dass dieses nicht mehr angezeigt werden soll).

    Sg Stefan

    1. Vielen Dank für eure Antworten, ihr habt mir sehr weiter geholfen!!!

      MFG
      PS:
      Fehler
      Das Format Ihres Postings scheint unsauber zu sein (z. B. keine Zeilenumbrüche, keine Satzzeichen, alles klein geschrieben oder ähnliches). Solche Postings sind ungern gesehen, da sie oft schwer zu lesen sind. Sind Sie sicher, dass Sie so posten möchten?
      <<<-- das nervt grins ich muss ständig wörter groß schreiben und kommas setzten wos gar net hingehört!*GG*

  2. Hi,

    sowas geht nur mit JavaScript ...

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
    1. Hi,

      naja, es gibt (zumindest bestätigte mir das vor ein paar Tagen hier jemand als funktionierend) auch noch die CSS-Lösung:

      1. Ausgabe puffern
      2. Wartehinweis in einem div o.ä. senden -> flush
      3. ... Schleife laufen lassen -> flush
        Dabei muss das HTML-Element, das von (3) erzeugt wird, mittels CSS so platziert werden, dass es _über_ dem Wartenhinweis liegt (oder _auf_ oder was auch immer dir als Beschreibung am Liebsten ist).

      MfG
      Rouven

      --
      -------------------
      ie:| fl:| br:> va:| ls:& fo:) rl:( n4:{ ss:) de:] js:| ch:? mo:} zu:|
      1. echo $begrüßung;

        naja, es gibt (zumindest bestätigte mir das vor ein paar Tagen hier jemand als funktionierend) auch noch die CSS-Lösung:

        1. Ausgabe puffern
        2. Wartehinweis in einem div o.ä. senden -> flush
        3. ... Schleife laufen lassen -> flush
        4. Dabei muss das HTML-Element, das von (3) erzeugt wird, mittels CSS so platziert werden, dass es _über_ dem Wartenhinweis liegt (oder _auf_ oder was auch immer dir als Beschreibung am Liebsten ist).

        Ja, das ist auch die einfachste mir bekannte Methode. Kein Javascript wird dazu benötigt. Allerdings müssen nicht alle Browser mitspielen. eddi erwähnte schon die Problematik mit der <table>. Opera mag auch nicht gleich jedes empfangene Codestückchen sofort rendern. Sendet man ihm mit zeitlichen Abständen jeweils ein wenig Text (mit einem flush() hinterher) zeigt zwar der Fortschrittsbalken den Empfang an, die Ausgabe bleibt aber leer. flush() funktioniert auch nicht mit allen Webservern, der IIS will da auch nicht mitspielen (vielleicht waren das auch nur bestimmte Konfigurationen, ich weiß das grade nicht ganz genau).

        Noch ein paar Anmerkungen. zu 1) Ob die Ausgabe gepuffert werden muss oder nicht, muss man aufgabenabhängig entscheiden. Wenn Ausgabetext das Ergebnis des länger dauernden Prozesses ist, braucht man ihn nur irgendwo zwischenzuspeichern, wenn man auch noch eine Fortschrittsanzeige haben möchte. Ansonsten kann man ihn auch einfach so ausgeben.
        zu 2) Der Wartehinweis sollte vor dem Prozessstart ausgegeben werden. (Eine id oder class angeben, die man dann bei 4) ansprechen kann.)
        zu 4) Für das Wartehinweis- bzw. Fortschritts-DIV braucht man nur eine CSS-Regel, die display:none enthält nach Prozessende auszugeben und weg ist es. Das Überlagern von Elementen ist doch ein wenig umständlich :-)

        echo "$verabschiedung $name";

        1. hi,

          zu 4) Für das Wartehinweis- bzw. Fortschritts-DIV braucht man nur eine CSS-Regel, die display:none enthält nach Prozessende auszugeben und weg ist es.

          Und wie macht man das?

          (Ich meine, angesichts der Tatsache, dass sowohl <style> als auch <link> sich nur im <head> befinden dürfen, und dein Wartehinweis- bzw. Fortschritts-DIV selber aber vorher schon erst nach dem Head ausgegeben werden konnte ...)

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
          1. echo $begrüßung;

            zu 4) Für das Wartehinweis- bzw. Fortschritts-DIV braucht man nur eine CSS-Regel, die display:none enthält nach Prozessende auszugeben und weg ist es.

            Und wie macht man das?

            (Ich meine, angesichts der Tatsache, dass sowohl <style> als auch <link> sich nur im <head> befinden dürfen, und dein Wartehinweis- bzw. Fortschritts-DIV selber aber vorher schon erst nach dem Head ausgegeben werden konnte ...)

            Der Einwand ist berechtigt. In diesem Fall wäre ich (bzw. bin ich. Ich verwende diese Methode auch privat.) jedoch pragmatisch und schriebe einfach invaliden Code. Ein <style> im Body oder das <div> vor dem <html> bringt zwar die Fanatiker zum Händeübermkopfzusammenschlagen :-) funktioniert aber trotzdem. Zur Not könnte man immer noch die Style-Eigenschaft mit Javascript setzen.

            echo "$verabschiedung $name";

            1. Hallo,

              eigentlich bedürfte es nur einer Serie aufeinanderfolgender <div>-Elementen, die die entsprechenden Angaben im style-Attribut mitbringen...
              Auch wenn ich kein großer Fan der Aktion bin, weckt das ja fast schon den Spieltrieb in mir, daß prompt mal auszuprobieren - valid wäre es jedenfalls :)

              Gruß aus Berlin!
              eddi

          2. Lieber wahsaga,

            Und wie macht man das?

            mit inline-Styles? Wenn das zentrale Stylesheet anschließend geladen ist (oder schon im Cache steht), dann kann es ja die nach dem DIV geladenen Elemente über demselben darstellen. Solange außer des DIVs nix gesendet wurde, wird der Browser ja wohl das bereits Erhaltene anzeigen... hoffe ich.

            Liebe Grüße aus Ellwangen,

            Felix Riesterer.

    2. Hi Cybaer,

      bitte nichts für ungut, aber deine Seite http://Coding.binon.net
      ist wirklich furchtbar. Dort hält man es keine Minute aus. Die
      Idee ist ja recht nett, doch die Benutzerfreundlichkeit ist alles
      andere als das.

      Freundliche Grüße aus Berlin
      Maga

      1. Hallo Maga,

        ähm, es ist hier nicht unbedingt gerne gesehen wenn Webseiten beurteilt werden, um deren Bewertung der Autor nicht explizit gebeten hat. Deine Meinung steht dir sicherlich vollkommen frei, aber ich sehe nicht unbedingt, warum du das hier im Forum kundtun musst.

        MfG
        Rouven

        --
        -------------------
        ie:| fl:| br:> va:| ls:& fo:) rl:( n4:{ ss:) de:] js:| ch:? mo:} zu:|
      2. Hi,

        Dort hält man es keine Minute aus.

        Dazu zwingt dich ja auch absolut *niemand*! :-))

        Die Idee ist ja recht nett, doch die Benutzerfreundlichkeit ist alles
        andere als das.

        Die "Idee" *ist* die Website - d.h., ohne sie würde die Site schlicht *nicht* existieren. Der vermeintliche "Content", den man "benutzt", ist nur der Leim, der die Fliegen anlockt ...

        Und BTW: Nicht nur kann man den "Content" übrigens auch ohne die "Idee" nutzen (die Desktopoberfläche ist, z.B. via Klick auf den "Papierkorb", abschaltbar), man kann auch "augenfreundlichere" "Ideen" nutzen. Daß von allen zur Verfügung stehenden (und nach belieben nutzbaren) Desktops es ausgerechnet *der* Desktop mit dem *grellen Grün* ist, ist *ebenfalls* pure, "böse" Absicht. >:->

        Aber wenn sich etwas (innerhalb der gewollten Rahmenbedingungen) verbessern läßt, so wirst Du bei mir zum einen auf ein offenes Ohr treffen(!), zum anderen auf hinreichend genug Kompetenz und Zugriffsmöglichkeit auf den Server, *alles*, was man sich vorstellen kann, auch umzusetzen.

        Wenn Du also *konkrete* Vorstellungen äußern möchtest, dann bist Du herzlich(!) dazu eingeladen - sei es via Mail oder hier im Thread ...

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
      3. Gruseliges Javascript, wenns Clientseitig ausgeschaltet ist ... :p

        1. Hi,

          Gruseliges Javascript,

          Wo gruselt's dich denn? :)

          Gruß, Cybaer

          --
          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  3. Moin SelfHTMLER,
    hab mal ne Frage, ist es möglich während dem Durhlaufen einer schleife meinetwegen in einer Tabellenzelle einen Text anzuzeigen("es wird gearbeitet"), und den text anschließend nach dem verlassen der Schleife wieder auszublenden???
    MFG Frank

    Hallo Frank,

    Zunächst mal: PHP läuft auf dem Server, du willst die Meldung aber sicher dem User (=Client) anzeigen lassen, wir reden also von zwei verschiedenen Welten...

    Prinzipiell musst du die Meldung per JavaScript anzeigen. Grob gesprochen so:

    1. User klickt auf Button/Link/whatever
    2. JavaScript läuft los und zeigt ein Bildchen/Text/whatever an
    3. PHP läuft los, arbeitet
    4. PHP schickt Ergebnis an Browser, der baut die Seite neu auf->Bildchen/Text/whatever ist sowieso weg.

    Das Problem ist, daß der Browser mit dem Klick bereits die Seite verwirft und auf neue Daten wartet, dein Bildchen/Text/whatever wird also nicht lange auftauchen.

    Um das zu erreichen, was du wirklich willst (Seite bleibt stehen bis neuer Inhalt kommt und zeigt Wartezeugs an) brauchst du Ajax (z.B. mit der PHP Klasse xajax).

    Hoffe, das hilft dir weiter.

    Michael

  4. Hallo,

    soetwas ist nur äußerst kopliziert zu erreichen und mit erheblichem (und auch völlig sinnlosem) Mehrtraffic verbunden.

    Generell setzt Dein Ansatz an einem Punkt an, wo Dir die Render-Engine des Browsers auch noch einen Strich durch die Rechnung macht. Tabellen werden immer im ganzen eingelesen (also von <table> bis </table>), bis sie angezeigt werden. Selbst wenn es also so leicht möglich wäre, Texte zu ändern, so ist das Element <table> das dafür am ungeeigneteste. (Nicht zu letzt aus diesem Grund sollte man auf Tabellen für ein Layout verzichten.)

    Gruß aus Berlin!
    eddi

  5. Das brauchst du:

    ProgressClass v1.0 (c) 2002 by Boris Wylutzki / www.edv-internet.de

    Beispiel: http://www.edv-internet.de/kostenloses/ProgressClass/beispiel2.php

    Super Ding, funzt 1a.. setze es ein bei der Erstellung von Word Dokumenten via PHP.