Petrosch: nochmal mouseover+logos

Hallo nochmal,
ich habe bei sehr wenigen Datensätzen ein "echtes" Logo drinne.
98% der Datensätze sollen ein "dummy-logo" erhalten.
Mit nachfolgendem code wird bei mouseover das Logo (<%$adressen.a_id%>_1.jpg) zur entsprechenden ID geöffnet. Die ID steht vor dem Underscore.

Datensätze ohne Logo sollen aber ein Dummy-Logo (dummy-logo.jpg)angezeigt bekommen.
Damit ich das nun nicht für jede einzelne ID ersellen muss, suche ich nach einer Lösung, in der IMMER das dummy-logo.jpg angezeigt wird, es sei denn, es gibt für den bestimmten Datensatz ein "echtes" Logo, was dann auch unter
(<%$adressen.a_id%>_1.jpg) zu finden ist

hier Orginal-Zeile

  
<td class="ergebniszeile"><a onmouseover="Tip('<img src=&quot;logo/<%$adressen.a_id%>_1.jpg&quot;width=&quot;250&quot;>  <br> <%$adressen.a_name1%> <br> <%$adressen.a_ansprechpartner1%> <br> <%$adressen.a_strasse1%> <%$adressen.a_plz1%> <%$adressen.a_ort1%> <br> </br><%$adressen.a_telefon_dienstlich1%> <%$adressen.a_telefax_dienstlich1%> </br><%$adressen.a_handy1%> <%$adressen.a_homepage1%><br><%$adressen.a_email1%>', TEXTALIGN, 'center')" onmouseout="UnTip()" href="detail.php?a_id=<%$adressen.a_id%>"><%$adressen.a_name%></a></td>  

Viele Grüsse mit Hoffnung auf einen guten Tipp

  1. Ich würde das Problem zum CSS verschieben: erstelle ein div mit festen Maßen und entsprechender Klasse um das Logo, welche das dummy-Logo als Hintergrundbild setzt. Wenn Du dann das img ohne width und height einbindest und dieses nicht gefunden wird, sind die Maße automatisch 0px x 0px, so dass das dummy-Bild sichtbar wird.

    Diese Lösung setzt natürlich voraus, dass die Logos alle die gleiche feste Größe haben. Wenn das nicht klappen sollte, musst Du einen entsprechenden Test machen: binde das Bild ein, messe seine Breite und wenn diese 0px ist, binde stattdessen das dummy-Bild ein.

    Gruß, LX

    --
    RFC 1925, Satz 6: Es ist einfacher, ein Problem zu verschieben (...), als es zu lösen.
    1. Ich würde das Problem zum CSS verschieben: erstelle ein div mit festen Maßen und entsprechender Klasse um das Logo, welche das dummy-Logo als Hintergrundbild setzt. Wenn Du dann das img ohne width und height einbindest und dieses nicht gefunden wird, sind die Maße automatisch 0px x 0px, so dass das dummy-Bild sichtbar wird.

      Diese Lösung setzt natürlich voraus, dass die Logos alle die gleiche feste Größe haben. Wenn das nicht klappen sollte, musst Du einen entsprechenden Test machen: binde das Bild ein, messe seine Breite und wenn diese 0px ist, binde stattdessen das dummy-Bild ein.

      Gruß, LX

      Ohhje ... das würde bedeuten nochmal von vorne anzufangen. Ich war gerade mal froh, dass ich es soweit geschafft hatte ...
      Ich lasse ja in dem mouseover noch sämtliche Daten aus den angegebenen Felder anzeigen. Würde das mit CSS auch passen?
      Leider habe ich davon keine Ahnung ...

      1. Ich lasse ja in dem mouseover noch sämtliche Daten aus den angegebenen Felder anzeigen. Würde das mit CSS auch passen?

        Einfach statt

        <img ...>

        den folgenden Code verwenden:

        <div class="dummy-logo"><img ...></div>

        und dann entsprechend mit CSS formatieren.

        Gruß, LX

        --
        RFC 1925, Satz 6: Es ist einfacher, ein Problem zu verschieben (...), als es zu lösen.
  2. Hi!

    Ein recht triviales  Anliegen. Was genau ist denn Dein Problem dabei? Loesungsansaetze gibt es viele. Auch der von Petrosch ist einer, aber, meiner Meinung nach, kein besonders guter.

    Gibt es zuerstmal einen Grund, warum das Dummylogo nicht genauso funktioniert, wie die anderen? Das waere doch das naheliegenste.

    --
    "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
          - T. Pratchett
    1. Hi!

      Ein recht triviales  Anliegen. Was genau ist denn Dein Problem dabei? Loesungsansaetze gibt es viele. Auch der von Petrosch ist einer, aber, meiner Meinung nach, kein besonders guter.

      Gibt es zuerstmal einen Grund, warum das Dummylogo nicht genauso funktioniert, wie die anderen? Das waere doch das naheliegenste.

      Nochmals zur Klarstellung:
      Es soll IMMER ein Logo angezeigt werden (dummy.jpg)

      NUR, wenn ein echtes Logo inder Datenbank eingetragen ist, dann soll dieses angezeigt werden.

      Das Dummylogo funktioniert natürlich schon, aber dann müsste ich JEDEM Datensatz ein Dummylogo zuweisen. Da die Dateien mit ID_2.jpg bezeichnet sind, müsste für JEDE User-ID ein dummylogo.jpg erzeugt werden.
      Etwas so:
      001_2.jpg
      002_2.jpg
      003_2.jpg u.s.w. Bei vielen Datensätzen ist das keine gute Lösung

      1. Moin!

        Nochmals zur Klarstellung:
        Es soll IMMER ein Logo angezeigt werden (dummy.jpg)

        NUR, wenn ein echtes Logo inder Datenbank eingetragen ist, dann soll dieses angezeigt werden.

        Dann bau deine Datenbankabfrage so, dass sie ein IF (oder CASE, je nach DB-System) enthält und nur dann den Spalteninhalt ausgibt, wenn der ein Logo angibt, ansonsten aber immer die Dummylogo-Info.

        Alternativ setzt du diese Abfrage in die Ausgabe der jeweiligen Spalte ein.

        Oder du baust dir eine Rewrite-Rule, die prüft, ob der aus der ID gebildete Bildname existiert - wenn nicht, erfolgt intern eine Umschreibung auf das Dummylogo.

        Aber ohne Abfrage wirst du tatsächlich das Dummylogo für jeden Eintrag duplizieren müssen.

        - Sven Rautenberg

        1. Moin!

          »» Nochmals zur Klarstellung:
          »» Es soll IMMER ein Logo angezeigt werden (dummy.jpg)
          »»
          »» NUR, wenn ein echtes Logo inder Datenbank eingetragen ist, dann soll dieses angezeigt werden.

          Dann bau deine Datenbankabfrage so, dass sie ein IF (oder CASE, je nach DB-System) enthält und nur dann den Spalteninhalt ausgibt, wenn der ein Logo angibt, ansonsten aber immer die Dummylogo-Info.

          Kann ich das irgendwie in die von mir gepostete Zeile einbauen?

          1. Mahlzeit Petrosch,

            »» Dann bau deine Datenbankabfrage so, dass sie ein IF (oder CASE, je nach DB-System) enthält und nur dann den Spalteninhalt ausgibt, wenn der ein Logo angibt, ansonsten aber immer die Dummylogo-Info.

            Kann ich das irgendwie in die von mir gepostete Zeile einbauen?

            Du hast anscheinend überhaupt keine Ahnung, was Du überhaupt tust.

            1.) Woher kommen Deine "Daten", die Du anzeigen willst?

            2.) Wo und wie liest Du diese Daten aus? An genau dieser Stelle musst Du ansetzen. Alles andere ist sinnfrei. Und ich behaupte mal, dass Du die Daten nicht mit HTML aus der Datenbank ausliest - warum postest Du also im Bereich "HTML/XHTML"? Benutzt Du nicht eher eine serverseitige Skriptsprache wie PHP?

            3.) Sorge dafür, dass Deine serverseitige Skriptsprache je nach Ergebnis der Datenbankabfrage gültiges HTML mit entweder dem gefunden Bild oder alternativ dem Dummybild erzeugt. Mit HTML allein kannst Du keinerlei Abfragen, Entscheidungen, Wenn-dann-Konstruktionen oder ähnliches bauen.

            4.) Poste das nächste mal relevanten Code, kein Gemisch aus server- und clientseitigem. Wenn es sich um ein serverseitiges Problem handelt, dann bitte serverseitigen Code. Wenn es sich um ein reines Client-Problem handelt, ist alles andere außer HTML, CSS und Javascript nicht hilfreich! Wenn Du keine Ahnung hast, wo das Problem liegt, verzichte zunächst auf Code (der im Zweifelsfall nur mehr verwirrt als hilft) - beschreibe stattdessen Dein Problem verständlich und nachvollziehbar.

            Wobei ... letzteres solltest Du eigentlich IMMER tun.

            MfG,
            EKKi

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

          » Es soll IMMER ein Logo angezeigt werden (dummy.jpg)
          » NUR, wenn ein echtes Logo inder Datenbank eingetragen ist, dann soll dieses angezeigt werden.

          Dann bau deine Datenbankabfrage so, dass sie ein IF (oder CASE, je nach DB-System) enthält und nur dann den Spalteninhalt ausgibt, wenn der ein Logo angibt, ansonsten aber immer die Dummylogo-Info.

          meiner Meinung nach sollte im entsprechenden Datenbankfeld der Wert NULL stehen, wenn kein Logo eingetragen ist. Dann benötigt man nichts Komplizierteres als ein einfaches COALESCE

          SELECT  
              [...],  
              [link:http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_coalesce@title=COALESCE](logo, 'dummy.jpg') mylogo,  
              -- nimm den ersten von NULL verschiedenen Wert, d.h. falls kein richtiges  
              -- Logo vorhanden ist, das Dummy-Logo.  
              [...]
          

          Sowas funktioniert wunderbar, das weiß ich aus der eigenen Praxis :-)

          Freundliche Grüße

          Vinzenz

      2. Hi!

        Das Dummylogo funktioniert natürlich schon, aber dann müsste ich JEDEM Datensatz ein Dummylogo zuweisen. Da die Dateien mit ID_2.jpg bezeichnet sind, müsste für JEDE User-ID ein dummylogo.jpg erzeugt werden.
        Etwas so:
        001_2.jpg
        002_2.jpg
        003_2.jpg u.s.w. Bei vielen Datensätzen ist das keine gute Lösung

        Moment. Willst Du mir sagen, dass du in der DB gar nicht speicherst, ob es ein Logo gibt (bzw. den Logonamen)? Ich versteh das nicht.

        Wenn Du in der DB fuer jeden Datensatz das Logo speicherst, spricht doch nichts dagegen eine ID fuer deinen Dummy zu reservieren. Allgemein scheint dein Konzept etwas unausgereift.

        Wenn Du das nicht via DB loesen kannst/willst dann eben mit Programmierung. Was genau hindert Dich denn hier einer Variable den Dummynamen zuzuweisen oder, falls vorhanden, den Logonamen?

        Du must verstehen: Ich sehe da einfach kein Problem. Natuerlich scheinst Du eines zu haben, sonst wuerdest Du ja hoffentlich nciht fragen. Mir wird aber nunmal nicht klar wo Dein Problem nun genau liegt.

        Fuer mich sieht das so aus:

        Du hast eine Tabelle mit Daten und einem Feld das das Logo bestimmt.
        Scheinbar hast Du aber in dem Logofeld nicht eingetragen, dass der Dummy genutzt werden soll.

        Warum das so ist, verstehe ich nicht. Dazu hast Du auch nichts gesagt. Das sollte allerdings die einfachste Moeglichkeit sein.

        Beispiel:

        ID  Name       Logo
        1   terminator 1
        2   t800       dummy
        3   t1000      dummy
        4   darth maul 4
        5   saruman    5

        Sowas geht nicht, weil...?

        --
        "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
              - T. Pratchett
        1. Moment. Willst Du mir sagen, dass du in der DB gar nicht speicherst, ob es ein Logo gibt (bzw. den Logonamen)? Ich versteh das nicht.

          Also die DB sieht folgendermassen aus:
          Logo-ID - gebunden an die Adressdaten lo_a_id int(11)
          Logo-Laufnummer                       lo_lfdnr int(11)
          Logo-Kommentar                        lo_kommentar varchar(64)
          Extension (Jpg/PNG)                   lo_extension varchar(24)
          Pfad, von wo die Datei herkommt       lo_quellpfad

          Die eigentlichen Dateien liegen dann in einem Sub-Dir namens logo nach
          dem Schema
          001_1.jpg
          001_2.png
          002_1.jpg
          002_2.png

          u.s.w.

  3. Lieber Petrosch,

    ich weiß nicht, warum man Dir das noch nicht als Doppelposting vorgeworfen hat, aber ich tue es.

    ich habe bei sehr wenigen Datensätzen ein "echtes" Logo drinne.
    98% der Datensätze sollen ein "dummy-logo" erhalten.
    [...]
    Viele Grüsse mit Hoffnung auf einen guten Tipp

    In Deinem ursprünglichen Posting hatte ich Dir bereits Tipps gegeben. Aber da Du dort anscheinend nicht mehr hineinschaust, sehe ich nicht ein, warum ich dafür hier weiterschreiben sollte.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)