Informationen im schwebenden div erst "bei Bedarf" auslesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Informationen im schwebenden div erst "bei Bedarf" auslesen

    Hallo!

    Habe ein bissl kniffliges Problem...

    Szenario:
    Ich lese aus einer Mitarbeiter-Datenbank die Mitarbeiter aus anhand von Suchkriterien...
    Die Ergebnisse werden untereinander aufgelistet.
    Mit einem Klick auf den Namen des Mitarbeiters kommt man auf eine Übersicht in welchen Einsätzen sich der Mitarbeiter im Moment befindet.

    Problem:
    Wenn man jetzt einen bestimmten Einsatz sucht muss man jeden Mitarbeiter durchklicken...

    Frage:
    Gibt es eine Möglichkeit ein "frei schwebendes div" (mit Infos zu den Einsätzen) neben dem Mauszeiger anzuzeigen sobald man mit der Maus über die Namen fährt? Die Daten sollen aber erst beim überfahren des Namens des jeweiligen Mitarbeiters ausgelesen werden (Da das eine nicht grad kleine SQL-Abfrage ist und die Seite sehr lange zum laden brauchen würde, wenn ich alle Daten gleich im vorhinein auslesen würde...)

    Bisheriger Lösungsansatz:
    - Funktioniert das eventuell mit einem iframe in dem div?


    Vielen Dank schonmal im voraus!!!

    mfg
    infernalshade

  • #2
    Stichwort: Ajax

    Kommentar


    • #3
      ja das geht mit ajax und css. allerdings rate ich von dieser lösung ab, da du immer eine zeitverzögerung hast, die das ganze sehr unkomfortabel macht. generell such mal bei google nach tooltip, da gibt es schon massenhaft scripte.

      gruß
      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        @topicstarter
        Mit einem Klick auf den Namen des Mitarbeiters kommt man auf eine Übersicht in welchen Einsätzen sich der Mitarbeiter im Moment befindet.
        ...
        Die Daten sollen aber erst beim überfahren des Namens des jeweiligen Mitarbeiters ausgelesen werden (Da das eine nicht grad kleine SQL-Abfrage ist und die Seite sehr lange zum laden brauchen würde, wenn ich alle Daten gleich im vorhinein auslesen würde...)
        Wieso die Daten nochmals auslesen. Hast du das nicht bereits getan wenn du die Benutzer aus dem DB liest? Am besten legst du dir eine JS Fkt an z.B. showDetails() die als Parameter den Text will, der angezeigt werden soll. Die showDetails() holt sich das div oder den span in dem die Anzeige erfolgen soll und schreibt den Text rein, danach setzt die Fkt das div sichtbar.
        Diese Funktion rufst du am besten beim onmousover Event des Links mit dem Mitarbeiternamen auf und bei onmouseout setzt du den div wieder auf unsichtbar
        Du dann zu Ausgabe z.B. das machen
        Code:
        <script type="text/javascript">
        <!--
        function showDetails(text){
          document.getElementById('details').innerHTML = text;
          document.getElementById('details').style.visibility = 'visible';
        }
        function closeDetails(){
          document.get.ElementById('details').style.visibility = 'hidden';
          document.getElementById('details').innerHTML = '';
        }
        //div zu Anzeige
        [...]
        <div id="details" stlye="visibility:hidden"></div>
        [..]
        //Link zur Anzeige der Details
        <a href="#" onmouseover="showDetails('Mitarbeiter A im Knast');" onmouseout="closeDetails();"</a>
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Puh ihr macht mir Freude

          PHP/CSS und Grundkenntnisse JS gut und recht aber AJAX kannte ich bis jetzt nur vom Namen her...Hab mich mal eben durch Wikipedia gelesen was AJAX ist!

          Das ist genau das was ich brauche, jedoch stellt sich mir jetzt die Frage ob es sinnvoll ist sich jetzt mit AJAX näher zu befassen nur wegen diesem Problem... Vor allem weil auch der zeitliche Aspekt eine große Rolle spielt (Das Script muss bis Freitag fertig sein )

          Naja aber dafür könnt ihr ja nichts, auf jedenfall trotzdem Danke für die Tipps

          Aber sonst gibt es keine "einfachere" Lösung oder?

          (Verzögerungen würde ich übrigens in Kauf nehmen)

          mfg
          infernalshade

          Kommentar


          • #6
            Du hast drei Möglichkeiten:
            1. AJAX Lösung --> du bist länger dran bis du damit fertig bist und musst ggf mit Verzögerungen leben
            2. JS Lösung ohne AJAX --> du musst alle Daten zu den Mitarbeitern bereits auslesen, damit du die Fkt mit den entsprechenden Parametern erstellen kannst
            3. Lösung nur mit PHP/HTML --> jeder Klick würde zu einem Request an den Server führen

            Ganz ehrlich würde ich das jetzt mit JS ohne AJAX probieren...

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              @ jahlives

              Zu deinem ersten Comment:

              Das geht leider nicht, aus folgendem Grund:
              Die Datenbank (die nicht ich erstellt habe, nur so nebenbei ^^) speichert Daten unnötig in zig verschiedenen Tabellen...Sehr schlechte Konstruktion...Naja jedenfalls lese ich im ersten Step NUR die Namen der Mitarbeiter aus, das geht eigentlich recht flott!
              Für die Mitarbeiterinfos muss ich ca 5-6 Tabellen auslesen, was sich dann schonmal pro Mitarbeiter auf so 2-4sek hinzieht.
              Wenn ich jetzt alle Daten gleich auf einmal einlese und wenn im Suchergebnis so ca 500-1000 Mitarbeiter stehn, könnt ihr euch vorstellen dass das bissl dauern würde :-)

              Zu deinem zweiten Comment:

              Ich hätt mir das so vorgestellt das ich ein iframe in nem div habe und bei mouseover irgendwie mit window.location.href oder so einen link mit den Daten an das iframe schicke!

              mfg
              infernalshade

              Kommentar


              • #8
                was sich dann schonmal pro Mitarbeiter auf so 2-4sek hinzieht
                und das merkst du dann beim rollover. wenn es dich interessiert, ich habe ein kleines tutorial zum thema ajax verfaßt. vielleich hilft es dir. ist mit sicherheit einfacher als dein deine iframe-div-lösung.

                gruß
                peter
                Zuletzt geändert von Kropff; 30.01.2008, 10:52.
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #9
                  Da würde ich mir aber mal Gedanken über ein Re-Design deiner DB machen.
                  Wenn ich sowas lese
                  Für die Mitarbeiterinfos muss ich ca 5-6 Tabellen auslesen, was sich dann schonmal pro Mitarbeiter auf so 2-4sek hinzieht.
                  Dann deutet das darauf hin, dass deine Tabellen schlecht angelegt sind. Oder machst du pro Tabelle einen Request d.h. für einen MA schickst du 5-6 Requests an die DB? Falls ja dann wären wohl JOINS etwas für dich. Damit kannst du in einem Request Daten aus mehreren Tabellen holen. Könnte mir vorstellen, dass du mit vernünftig normalisierten Tabellen und entsprechenden Requests mittels JOIN die Abfragezeit pro MA auf einen Bruchteil zu reduzieren.

                  Gruss

                  tobi
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    Ich würde dir ebenfalls eher dazu raten, an deiner Datenbankstruktur sowie deinem Query zu arbeiten, statt Daten für Tooltips on the fly zu holen.
                    [FONT="Helvetica"]twitter.com/unset[/FONT]

                    Shitstorm Podcast – Wöchentliches Auskotzen

                    Kommentar


                    • #11
                      Hey Moment, mit Joins kenn ich mich aus und verwende diese auch
                      Ich will gar nicht denken wie lange die Abfrage mit einem Cross-Join dauern würde

                      Und wie gesagt die Datenbank habe ich nicht strukturiert!

                      Wir benutzen ein Programm zur Mitarbeiterverwaltung und DEREN Datenbank ist das, d.h. ich kann bzw darf an der Datenbank auch nichts rumschrauben weil sonst das Programm nicht mehr funktionieren würde!

                      Die Datenbank umfasst jetzt ca 3GB und hat über 200 Tabellen also von daher...

                      Ist einfach nicht durchdacht worden von den Typen...

                      Und bitte jetzt keine Angebote zu anderen Programmen, ich steh nicht in der Position Vorschläge für ein anderes Programm einzubringen *lach* ^^


                      Habs jetzt anders gelöst, bzw zum Teil gelöst...
                      Hab jetzt mit "overlib" Tooltip-Divs erzeugt die ich mit den Daten zuballer.
                      Hab da jetzt nur die wichtigstens Infos drin in dem div, welche ich gleich mit den Mitarbeiternamen einlesen lasse...
                      Sind zwar nicht alle Sachen drin die ich eigentlich wollte, aber so gehts auch


                      mfg
                      infernalshade

                      Kommentar

                      Lädt...
                      X