div id vergeben wenn Wert mehrmals

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • div id vergeben wenn Wert mehrmals

    Hallo, blöde Überschrift sicher, wußte aber nicht wie ich es schreiben soll.
    Und zwar habe ich mir ein Script gebaut welches mir Wörter in meinen News ersetzt und einen Tooltip anzeigt.
    Den Tooltip habe ich mittels div eingebunden.
    Klappt auch alles wunderbar.
    Gelöst mit preg_replace!
    Jetzt habe ich aber im IE ein Problemchen.
    Und zwar hat der div für das Wort Browser
    Code:
    <div id="browser">
    kommt das Wort nur einmal in den News vor so wird der Tooltip auch angezeigt und es ist alles XHTML Valid.
    Kommt das Wort aber jetzt z.B. 2 mal vor dann habe ich logischerweise auch zweimal den gleichen div mit der gleichen id.
    Folglich wird der Tooltip nicht mehr angezeigt (komischerweise nur im IE und Opera im Firefox geht es).
    Auch habe ich dann einen XHTML Fehler da ja jeder div nur eine id haben darf da dies ja die Zuweisung ist.
    Habe jetzt schon mit rand versucht und vieles anderes.
    Allerdings scheiter ich total da ich nichtmal weis wie ich dieses Problem lösen kann.
    Jemand ne Idee und bereit mit zu helfen?

    mfg

  • #2
    Re: div id vergeben wenn Wert mehrmals

    Benötigst du denn überhaupt eine ID, die in Bezug zum Wort steht? Ansonsten vergebe einfach fortlaufende IDs der Form "tooltipped1", "tooltipped2", etc.

    Wenn doch - dann musst du halt die einzelnen Wörter auch mitzählen - um dann "browser1", "browser2" etc. für jedes Auftauchen von Wort xy zu vergeben.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Ja eine id brauche ich in diesem Fall da ja sonst der div nicht weis auf welchem Wort man ist.
      Wie die id aussieht ist jedoch egal.
      Das mit dem zählen der Worte wär ne Idee, allerdings weis ich dann nicht genau wie ich das mit der durchnummerierung etc. hinbekomme.
      Versuche erstmal es hinzubekommen mit count das er mir die Ersetzungen richtig zählen tut bekomme da nämlich nur wirre Zahlen raus.

      Kommentar


      • #4
        Kann ich nicht irgendwie mit einer Funktion einfach machen das er durchnummeriert egal welches Wort?
        Weil wenn ich das jetzt mit rand mache haben die div beim selben Wort trotzdem die gleiche Nummer.

        Kommentar


        • #5
          Du bekommst bei preg_replace als Ergebnis ein array:

          in array[0] steht das gesamte Ergebnis,
          in array[1] stehen die ersten Ersetzungen also
          array[1][0], array[1][1] etc.

          Kommentar


          • #6
            Also ich stelle mich zu blöde an glaube ich.
            preg_replace hat mir schon fast den Hals gebrochen.
            Ich poste mal meine Funktion vielleicht sieht man dann eher durch.
            Code:
            function acrotxt($message) {
            $anzahl = mysql_num_rows($db->query("SELECT * FROM bb".$n."_acrotxt"));
            $result = $db->query("SELECT * FROM bb".$n."_acrotxt");
            while ($row = $db->fetch_array($result)) {
            $id = $row['wordid'];
            $word1 = $row['word'];
            $desc = $row['beschreibung'];
            eval("\$test = \"".$tpl->get("wikipedia_hover")."\";");
            $string1 = "\\1<acronym class=\"acronym\" style=\"cursor:help;\"
             onmouseover=\"javascript:show('WikiId_".$id."');\" 
            onmouseout=\"javascript:hide('WikiId_".$id."');\" 
            onclick=\"window.open('http://de.wikipedia.org/wiki/Spezial:Search/".$word1."');
            return false;\">".$word1."</acronym>\\2".$test."";
            $zeichenkette = $message;
            $suchmuster[$id] = "/([\s])".htmlconverter($word1)."([\s.,:?!)])/i";
            $ersetzungen[$id] = $string1;
            }
            $message = preg_replace($suchmuster, $ersetzungen, $zeichenkette);
            return $message;
            }
            Und bei WikiId_".$id." da müßte immer ne andere Nummer stehen egal wie oft das ersetzte Wort vorkommt.

            Kommentar


            • #7
              Original geschrieben von Sleipnir
              PHP-Code:
              while ($row $db->fetch_array($result)) {
              $id $row['wordid']; 
              Warum zählst du denn an der Stelle die ID nicht einfach hoch ...?

              (Und natürlich ein Buchstaben-Prefix davorsetzen, damit sie eine gültige ist.)
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Habe ich schon versucht indem ich
                Code:
                $ids = $id+1;
                gemacht habe und WikiId_$ids aber geht nicht.
                Sobald das Wort Presse 3 mal vorkommt hat der div auch die 3 mal als id WikiId_23.

                Kommentar


                • #9
                  Tja, dann wirst du wohl doch etwas tiefer in das Script einsteigen müssen (obwohl ich immer noch nicht sicher bin, ob es überhaupt eine ID braucht).

                  Die Funktion htmlconverter() scheint ja die Ersetzung zu machen - also schau dir die an ...
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Code:
                    $suchmuster[$id] = "/([\s])".htmlconverter($word1)."([\s.,:?!)])/i";
                    $word1 ist das wonach gesucht wird und htmlconverter sorgt dafür das es auch mit Umlauten wie ä ö ü klappt.
                    Dachte ich mir das es nicht so einfach ist.
                    Na eine ID brauche ich schon.
                    Wenn in einem News 6 Wörter sind woher soll er sonst wissen welchen Tooltip er mir zeigen soll wenn ich mit der Maus auf eines der Wöter gehe.
                    Die Tooltip Box (der div) wird direkt unter dem Mauszeiger gezeigt so.

                    Kommentar


                    • #11
                      Also was ist das überhaupt für ein Browser der die id als tooltip anzeigt?

                      Das richtige attribut für den Tooltip ist TITLE.

                      <div ID="browsernn" title="browser">....</div>
                      <div title="browser">....</div>

                      In meinem Internet Explorer6 gibt aber <div> überhaupt keinen Tooltip, sondern nur zB <a>, also
                      <A href=url title="browser"> Browser </A>

                      Brauchst Du die ID überhaupt für etwas als den Tooltip? Falls nein, kannst Du sie ganz weglassen.

                      Grüsschen an wahsaga.
                      Zuletzt geändert von globqluqqlo; 01.03.2006, 11:48.

                      Kommentar


                      • #12
                        Original geschrieben von globqluqqlo
                        Also was ist das überhaupt für ein Browser der die id als tooltip anzeigt?

                        Das richtige attribut für den Tooltip ist TITLE.
                        [ ] Auf den Gedanken, dass er ein eigenes Javascript einsetzt, welches eine "Tooltipp"-Alternative anzeigt, bist du gekommen.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          ] Auf den Gedanken, dass er ein eigenes Javascript einsetzt, welches eine "Tooltipp"-Alternative anzeigt, bist du gekommen.
                          ] Auf den Gedanken, dass er ein eigenes Javascript einsetzt, welches eine "Tooltipp"-Alternative anzeigt, bist du gekommen.
                          Dann könnte er trotzdem das title tag verwenden anstatt des id tag, und dieses auslesen. Denn das id tag muss eindeutig sein und es ist stark zu vermuten, dass der internet explorer es bei nichteindeutigkeit rauswirft.

                          edit: ich schau mir das gegebene PHPSkript mal an, dauert aber ein paar Stunden.
                          Wenn original poster noch ein separates Javascript einsetzt, soll er es bitte auch posten. glubgloqqlu
                          Zuletzt geändert von globqluqqlo; 01.03.2006, 12:12.

                          Kommentar


                          • #14
                            Original geschrieben von globqluqqlo
                            Dann könnte er trotzdem das title tag verwenden anstatt des id tag, und dieses auslesen.
                            Wozu soll er title verwenden?

                            Die ID benötigt sein Script nur, um im JS den Bezug zum zu-tooltippenden Objekt herzustellen.
                            Zweifel daran, ob die ID wirklich "benötigt" wird, habe ich ja auch schon geäußert.
                            Denn das id tag muss eindeutig sein
                            Ja nu, so weit waren wir ja zu Beginn des Threads schon.
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #15
                              Zweifel daran, ob die ID wirklich "benötigt" wird, habe ich ja auch schon geäußert.
                              Da tendiere ich in die gleiche Richtung. Warum keine CSS Klasse ? Diese kannst du auch mehrfach verwenden

                              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

                              Lädt...
                              X