Ausgabe auf ein Wort beschränkt
Kharek
- php
Hallo, liebe Helfer!
Ich habe ein Problem, an dem ich jetzt seit Tagen sitze, komme aber noch immer nicht weiter.
Ich möchte über ein Script ein Bild anzeigen lassen, das mit einem Tooltip ausgestattet ist und Informationen dazu ausgibt.
Gebe ich nun folgendes ein:
<a onmouseover=Tip('Testnachricht') onmouseout='UnTip()'><img src=Bilder/Bild.jpg></a>
Funktioniert alles, wie ich es vorgesehen habe.
Gebe ich nun bei Tip() noch ein zweites Wort dazu, streikt die Ausführung.
<a onmouseover=Tip('Roflkopter 2') onmouseout='UnTip()'><img src=Bilder/shield_small_shield_i00.png></a>
Der Validator ( http://validator.w3.org/ ) gibt dazu drei Nachrichten an, die mich leider nicht weiter gebracht haben:
1) Line 1, Column 19: an attribute value must be a literal unless it contains only name characters
2) Line 1, Column 32: "2" is not a member of a group specified for any attribute
3) Line 1, Column 33: an attribute specification must start with a name or name token
Ich wär echt froh, wenn mir da einer helfen könnte. Habe im Netz schon diverse Foren durchforstet ohne Treffer. Vielleicht ist die Lösung auch zu offensichtlich :/
Danke im Voraus
Kharek
Hi!
Dein Betreff trifft nicht (zu) und der gewählte Themenbereich war auch falsch - Dein Problem hat nichts mit PHP zu tun.
Ich habe ein Problem, an dem ich jetzt seit Tagen sitze,
Du Armer!
Dein Code:
> <a onmouseover=Tip('Roflkopter 2') onmouseout='UnTip()'>
Ein anderer Code:
<a onmouseover="doIt('12345 foo')" onmouseout="unDoIt()">
Fällt Dir etwas auf?
1) Line 1, Column 19: an attribute value must be a literal unless it contains only name characters
2) Line 1, Column 32: "2" is not a member of a group specified for any attribute
3) Line 1, Column 33: an attribute specification must start with a name or name token
Du verwendest ungültige Attribute s.o.
off:PP
Hi!
Du verwendest ungültige Attribute s.o.
_Ein_ ungültiges Attribut, sorry! Die Schreibweise:
<element attributename='value' />
ist auch korrekt.
off:PP
Vielen ank schon mal für die schnelle Hilfe. Hab ja kaum auf Absenden gedrück, da war schon ne Antwort da.
Allerdings bin ich genau so weit wie vorher, da ich nicht weiß, was nu genau falsch ist.
Wie man unschwer erkennt bin ich eigendlich blutiger Anfänger und das, was ich bisher tat, hab ich mir selbst beibringen müssen.
Folglich mus ich bei den meisten Fachausdrücken passen.
Hi,
Allerdings bin ich genau so weit wie vorher, da ich nicht weiß, was nu genau falsch ist.
Wie man unschwer erkennt bin ich eigendlich blutiger Anfänger und das, was ich bisher tat, hab ich mir selbst beibringen müssen.
Folglich mus ich bei den meisten Fachausdrücken passen.
Red dich nicht ganz so billig raus :-)
Peter hat dir zwei Versionen zum vergleichen gegeben - deine falsche, und eine richtige - also schau dir an, was daran der wesentliche Unterschied ist.
Und im Grundladenkapitel kannst du auch noch mal nachlesen, wie es richtige geht: Attribute in Tags
MfG ChrisB
Ich habe noch immer keine Ahnung, was falsch ist.
Aus dem SelfHTML Artikel würde ich jetzt raten, dass ich von Natur aus sowieso nur ein Wort übergeben darf.
Allerdings hat Peter auch 2 Werte übergeben können.
Kopiere ich seine Version dagegen in den Code, ändert sich allerdings auch nichts.
Ich habe noch immer keine Ahnung, was falsch ist.
Aus dem SelfHTML Artikel würde ich jetzt raten, dass ich von Natur aus sowieso nur ein Wort übergeben darf.
Allerdings hat Peter auch 2 Werte übergeben können.
Damit wir jetzt von denselben Fachbegriffen reden (die dir lt. deiner Aussage noch fehlen) empfehle ich folgenden Artikel: Elemente, Tags und Attribute
Kopiere ich seine Version dagegen in den Code, ändert sich allerdings auch nichts.
Natürlich nicht, da der Code ein Beispiel ist und nicht 1:1 mit deinem kompatibel ist.
Nehmen wir nochmal deinen Code:
<a onmouseover=Tip('Testnachricht') onmouseout='UnTip()'>
Nach Lesen des Artikels wirst du nun wissen, dass es sich um das Start-Tag eines Elements vom Typ 'a' handelt.
Ein HTML-Element darf Prinzipiell Attribute beinhalten. Dein HTML-Element hat das Attribut onmouseover und das Attribut onmouseout.
Der Beginn und das Ende des Werts eines Attributs wird durch die Zeichenkettenbegrenzer " oder ' bestimmt (unter bestimmten Voraussetzungen dürfen diese auch fehlen, man ist aber auf der sicheren Seite, wenn man sie einfach macht).
Es hat sich eingebürgert, dass man primär " verwendet und innerhalb einer Zeichenkette dann ' verwendet - sollte man darin nochmal weitere dieser Zeichen benötigen, müssen diese maskiert werden.
<elementname attribut="wert wert 'quoted'" attribut2="wert">
Fällt dir etwas auf?
Whoa, das is doch mal ausführlich. :)
Wenn ichs nu doch endlich richtig verstanden habe, dann fehlen bei mir einfach die Anführungszeichen.
Die Idee hatte ich selber schon, mit dem dann folgenden Problem, dass die Ausgabe dann sogar bei dem einzelnen Wort nicht mehr funktioniert.
Um mal die Sache aus dem Quelltext direkt zu nehmen:
echo "<a onmouseover=Tip('" . $dsatz["name"] . "') onmouseout='UnTip()'><img src=Bilder/Bild.jpg></a>";
So kommt das Problem eigendlich zustande. Der Text wird aus einer Datenbank abgerufen und kann sowohl ein " " als auch ein " ' " enthalten (Beides scheint Fehler zu verursachen).
Kann mir die Zeile mal jemand als berichtigt zurück geben, vielleicht sehe ich dann, was genau ich falsch gemacht habe. Die allgemeinen angaben wie
<element attribut="Value">
verwirren mich nur ^.^
Tut mir leid, dass ich es euch so schwer mach, aber scheinbar kapier ichs nicht anders...
Danke trotzdem nochmal an alle bisherigen Helfer. Ich glaub ich les mir bis zur nächsten Antwort das "maskieren" etwas genauer durch...
Hi,
echo "<a onmouseover=Tip('" . $dsatz["name"] . "') onmouseout='UnTip()'><img src=Bilder/Bild.jpg></a>";
So kommt das Problem eigendlich zustande.
Dann beschreibe doch bitte das nächste mal gleich dein "eigentliches" Problem.
Der Text wird aus einer Datenbank abgerufen und kann sowohl ein " " als auch ein " ' " enthalten (Beides scheint Fehler zu verursachen).
Wenn du Zeichen in einen Kontext bringst, die in diesem Sonderbedeutung haben (können), die sie aber bei dieser Ausgabe nicht haben sollen - dann musst du sie, wie immer, dem Kontext entsprechend behandeln.
Der Kontext heisst hier HTML, und die Funktion, die du suchst, htmlspecialchars.
MfG ChrisB
Wenn ichs nu doch endlich richtig verstanden habe, dann fehlen bei mir einfach die Anführungszeichen.
In dem von dir gezeigten Beispiel ja.
So kommt das Problem eigendlich zustande. Der Text wird aus einer Datenbank abgerufen und kann sowohl ein " " als auch ein " ' " enthalten (Beides scheint Fehler zu verursachen).
Bitte nochmal meinen Post lesen, dort ist erwähnt/verlinkt, was in diesem Fall zu tun ist.
Kann mir die Zeile mal jemand als berichtigt zurück geben, vielleicht sehe ich dann, was genau ich falsch gemacht habe. Die allgemeinen angaben wie
<element attribut="Value">
verwirren mich nur ^.^
Darum auch der Artikel von Meiert, damit du verstehen lernst, was mit Element, Attribut oder Wert/Value gemeint ist (das ist wichtig, da sonst alle mit denselben Begriffen von verschiedenen Dingen sprechen) - anhand meiner Schilderung solltest du das aber bereits wissen, also nochmals genau lesen. Die obige Zeile ist PHP - aktuell kümmert dich aber die fehlerhafte HTML-Ausgabe (zumindest würde ich dir das raten) - löse zuerst dieses Problem, dann kümmere dich anschließend darum, dass PHP den gewünschten HTML-Code erzeugt.
Danke trotzdem nochmal an alle bisherigen Helfer. Ich glaub ich les mir bis zur nächsten Antwort das "maskieren" etwas genauer durch...
Wenn du dir die sache mit dem maskieren durchgelesen hast, wirst du sicher als nächstes wissen wollen, wie das mit PHP vollbracht werden kann: Die zu maskierenden Zeichen werden landläufig als "HTML Special Characters" bezeichnet.
Na gut, ich gebe an dieser Stelle auf.
Auch das maskieren hat mir nicht die erhoffte Erleuchtung gebracht, stumpfes herumprobieren, in welcher Reihenfolge das nun richtig seit könnte, hat mir die letzten Tage schon gereicht und für mich ist an dieser Stelle Schluss.
Wenn man mir nicht den Gefallen tun möchte, die einfache Zeile korrigiert einzustellen, hab ich Pech gehabt und frag halt in nem anderen Forum nach.
MfG Kharek
Hi,
Na gut, ich gebe an dieser Stelle auf.
Auch das maskieren hat mir nicht die erhoffte Erleuchtung gebracht,
Hier hab ich eine Erleuchtung für dich: </hilfe/charta.htm#tipps-fuer-fragende>
Wenn du uns nicht beschreibst, was *genau* du gemacht hast (und was dabei herausgekommen ist) - dann können wir dir auch nicht sagen, wo der Fehler liegt.
Wenn man mir nicht den Gefallen tun möchte, die einfache Zeile korrigiert einzustellen, hab ich Pech gehabt und frag halt in nem anderen Forum nach.
Wenn du uns nicht mal den Gefallen tun kannst, *endlich* das dir nun mehrfach gesagte umzusetzen - nämlich, dass die Attributwerte verflixt noch mal in Anführungszeichen oder Hochkommata gehören, wo von in deinem gezeigten PHP-Schnipsel immer noch nichts zu sehen war - dann ist dir wohl nicht zu helfen.
MfG ChrisB
Na gut, ich gebe an dieser Stelle auf.
Für jemanden der mit PHP Code erzeugen möchte um eine Webseite (oder vergleichbares) auszugeben, zeigst du wirklich wenig Motiviation auch nur die Grundzüge zu begreifen.
Auch das maskieren hat mir nicht die erhoffte Erleuchtung gebracht,
Ist aber der richtige Weg.
stumpfes herumprobieren, in welcher Reihenfolge das nun richtig seit könnte, hat mir die letzten Tage schon gereicht und für mich ist an dieser Stelle Schluss.
Eine halbe Seite Text zu lesen könnte dir viel Arbeit ersparen - aber anstatt etwa 10 Minuten Zeit zu investieren fällst du mir/uns in den Rücken:
Wenn man mir nicht den Gefallen tun möchte, die einfache Zeile korrigiert einzustellen, hab ich Pech gehabt und frag halt in nem anderen Forum nach.
Gerne helfe ich dir auch hierbei - wir wollen doch nicht mehr deiner kostbaren Zeit verschwenden, mit absurden Dingen wie "Hilfe". Langsam ist mir klar, warum dieses Forum so einen schlechten Ruf hat - sogar wenn man Antworten von vorne bis hinten druchkaut, bei extrem trivialen Problemen, erntet man nur Undank. Es ist egal ob man freundlich ist oder eine Antwort kommentarlos hinrotzt, es macht leider nur selten einen Unterschied. Ich hätte heute wohl doch meine Freizeit mit Left 4 Dead verbringen sollen - ich hätte mir viel Zeit erspart.
Btw: Ja, ich bin heute mit dem falschen Fuß zuerst aufgestanden, ich habe aber trotzdem versucht freundlich zu bleiben. Ja, es gibt Ausnahmen - es sind immer wieder Fragesteller dabei, die eine kostenlose Antwort oder Hilfestellung zu würden wissen.
Vielleicht habe ich mich auch hier unglücklich ausgedrückt. Ich wollte mich nicht über euch beschweren, schließlich habe ich mich schon mehrmals bedankt. Nein, vielmehr gehts um meine eigene Unfähigkeit, Informationen aus Texten zu entnehmen.
Ich lerne normalerweise aus Anwendung, also zumeist kopierten, vorgefertigten Auszügen aus Scripten, die ich nur noch abzuändern brauche.
Ich weiß nicht, woraus du schließt, dass ich undankbar bin, mehr als "Danke" sagen kann ich leider nicht. :/
Eigentlich hatte ich vor, das Thema für <u>heute</u> abzuschließen, aber ich habe mir ein wenig die Füße vertreten und versuche mich jetzt noch einmal daran, den Code zu überarbeiten.
Ich möchte mich für meine grobschlächtige Art entschuldigen und möchte noch ein weiteres Mal um Hilfe bitten.
Meine abgeänderte Version dieser Zeile sieht jetzt so aus:
echo "<a onmouseover=" Tip( . htmlspecialchars($dsatz['name']) . )" onmouseout='UnTip()'><img src='Bilder/Bild.jpg'></a>";
Leider heißt es hier dann:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
Ich würd mich freuen, wenn sich noch mal jemand die Zeit nimmt - Ich werde versuchen, das gleiche zu tun ^.^'
MfG Kharek
echo "<a onmouseover=" Tip( . htmlspecialchars($dsatz['name']) . )" onmouseout='UnTip()'><img src='Bilder/Bild.jpg'></a>";
Das " ist als Attributwert-Begrenzer Unsinn, da muss schon " hin. (Geht aber nicht direkt, weil es ja ein PHP-String ist, der mit " begrenzt wird. Daher müsstest du \" schreiben.)
Und die ' zum Begrenzen des JavaScript-Strings kannst auch auch nicht einfach weglassen.
Am Ende muss doch dies herauskommen:
onmouseover="Tip('Bla!')"
Aber wie du sagst, kann anstelle von »Bla!« ein String mit " und ' drin stehen. Die würden das Attribut bzw. den JavaScript-String kaputtmachen, deshalb musst du in \*diesem\* Wert " und ' ersetzen. Wie, habe ich dir in meinem [anderen Posting](https://forum.selfhtml.org/?t=187093&m=1243171) gezeigt.
Das drumherum ist schon ganz richtig.
Mathias
--
[JavaScript-Erweiterung für das SELFHTML-Forum](http://forum.de.selfhtml.org/js/doku/)
Hi,
echo "<a onmouseover=" Tip( . htmlspecialchars($dsatz['name']) . )" onmouseout='UnTip()'><img src='Bilder/Bild.jpg'></a>";
> [...]
> Das drumherum ist schon ganz richtig.
Noch zur Ergänzung - die Funktion htmlspecialchars wird bei der gezeigten Variante gar nicht aufgerufen, weil sie so eben keinen Funktionsaufruf darstellt, sondern Teil des Stringinhaltes ist.
Und der Parse Error kommt dann daher, weil im diesem mit doppelten Anführungszeichen begrenzten String direkt ein Array-Element mit dem Key in Hochkommatas angeführt wird, was die Syntax so auch nicht erlaubt.
Das ist wohlgemerkt jetzt alles rein auf den PHP-Part bezogen, und hat noch nichts mit dem JavaScript zu tun, was später mal auf dem Client laufen soll (um nicht noch mehr Verwirrung zu stiften, was die Anführungszeichen und Hochkommata betrifft).
MfG ChrisB
--
Light travels faster than sound - that's why most people appear bright until you hear them speak.
Jo, ich habs schon wieder geändert.
Ich hab die ganze Zeit das Gefühl, in Kreisen um die Lösung herum zu rennen.
Derzeit bin ich hier:
echo "<a onmouseover=\"Tip(htmlspecialchars("" . $dsatz['name'] . ""))\" onmouseout='UnTip()'><img src='Bilder/Bild.jpg'></a>";
Zumidest gibts hier keine Parse errors. Die Bilder werden jetzt auch angezeigt, aber die Tooltips fehlen noch immer.
Ich bin positiv überrascht, dass man mir doch wieder hilft, also danke ich mal wieder :)
MfG Kharek
Hi,
echo "<a onmouseover="Tip(htmlspecialchars("" . $dsatz['name'] . ""))" onmouseout='UnTip()'><img src='Bilder/Bild.jpg'></a>";
>
> Zumidest gibts hier keine Parse errors. Die Bilder werden jetzt auch angezeigt, aber die Tooltips fehlen noch immer.
Wie ich gerade schon schrieb, ist das hier kein Aufruf der Funktion htmlspecialchars - sondern das wird hier als Bestandteil des \*Textes\* betrachtet.
Wenn du an dieser Stelle eine Funktion ausführen lassen willst - dann musst du den PHP-String, den du mit " begonnen hast, auch erst mal wieder mit einem " beenden. \*Dann\* kannst du das Ergebnis der Funktion mit diesem ersten String verknüpfen - mit dem Verkettungsoperator, dem Punkt.
`echo "text".htmlspecialchars($blubb)."noch mehr text";`{:.language-php}
Schau dir mal das Syntax-Highlighting hier an - im Vergleich zu deinem Code oben:
Der Funktionsname wird in Blau dargestellt, Textstrings in Magenta(?), die verwendete Variable grünlich, der Operator rot, und das echo als Statement auch noch mal wieder anders.
Syntaxhighlighting hilft sehr gut dabei, die verschiedenen Bestandteile der Syntax auseinanderzuhalten - also besorg dir einen Editor, der Syntaxhighlighting für PHP bietet, wenn du noch keinen hast.
> Ich bin positiv überrascht, dass man mir doch wieder hilft
Wir sind nicht nach-, nur vortragend :-)
MfG ChrisB
--
Light travels faster than sound - that's why most people appear bright until you hear them speak.
echo "<a onmouseover=\"Tip(" . htmlspecialchars($dsatz['name']) . ")\" onmouseout='UnTip()'><img src='Bilder/shield_small_shield_i00.png'></a>";
Dem Highlighting nach müsste es pasen, aber die Ausgabefehlt noch immer, obwohl sie schon seit meinen anfänglichen versuchen imme rim Quelltext steht...
Könnt ihr mich da noch mal helfen?
MfG Kharek
Hi,
echo "<a onmouseover="Tip(" . htmlspecialchars($dsatz['name']) . ")" onmouseout='UnTip()'><img src='Bilder/shield_small_shield_i00.png'></a>";
> Dem Highlighting nach müsste es pasen, aber die Ausgabefehlt noch immer, obwohl sie schon seit meinen anfänglichen versuchen imme rim Quelltext steht...
Wie sieht denn die entsprechende Stelle jetzt in dem Quelltext, den der Browser geliefert bekommt, aus?
Jetzt scheinen wohl wieder die Stringbegrenzer im JavaScript zu fehlen.
MfG ChrisB
--
Light travels faster than sound - that's why most people appear bright until you hear them speak.
Ich hab die ganze Zeit das Gefühl, in Kreisen um die Lösung herum zu rennen.
Genau aus dem Grund gab' es von mir auch den Hinweis, zuerst das Problem auf HTML-Seiten zu beheben.
Wenn das HTML-Problem gelöst ist, kann man sich Gedanken darüber machen, wie man PHP dazu bringt, den richtigen Code auszuspucken. In diese Richtung ist es imho wesentlich einfacher.
Aktuell versuchst du Escaping in PHP zu verstehen, hast aber noch nicht ganz verstanden, wie das überhaupt in HTML funktioniert.
Beispiel:
<span title="ein einfaches ' mit VARIABLER WERT gefolgt von einem doppelten "" onclick="alert('Hier folgt ein einfaches Anführungszeichen \');">foo</span>
Dies jetzt in PHP zu escapen, wenn man es denn per Echo ausgibt wird dann schon "reichlich kompliziert".
echo "<span title=\"ein einfaches ' mit " . $variabler['wert' . " gefolgt von einem doppelten "\" onclick=\"alert('Hier folgt ein einfaches Anführungszeichen \');\">foo</span>";
Genau aus dem Grund kam auch molily hinweis, auf echo zu verzichten, weil man sich damit das lästige Maskieren spart und der Code besser lesbar ist.
Gibts denn dann eine Alternative zu echo?
Ich denk mir mal, dass es ohne wesentlich leichter wäre...
MfG Kharek
Hi,
Gibts denn dann eine Alternative zu echo?
Ich denk mir mal, dass es ohne wesentlich leichter wäre...
Dazu hat Mathias ja schon was geschrieben - https://forum.selfhtml.org/?t=187093&m=1243169 und nachfolgendes Posting.
MfG ChrisB
So, nachdem ich nun noch mal das allergrundlegendste von PHP durchgelesen habe, ist mir aufgefallen, was die meine Alternative zu echo ist:
?> Mach_lieber_HTML <?php Fortsetzung -.-
Ich war immer in dem Glauben, man müsse alles unbedingt auf PHP schreiben, wenn man PHP nutzen möchte. Ich hab bis jetzt grad wohl nicht richtig verstanden, dass php sozusagen nur ein Aufsatz auf HTML is.. -.-
Tut mir leid, dass ich so eure Zeit vergeudet hab. Immerhin weiß ich jetzt, warum ihr so darauf beharrt hab, dass ich mal was lese. Einen Satz ausgelassen und schon versiebt man alles.
An dieser Stelle möchte ich mich noch ein weiteres mal bei allen Helfern bedanken, die sich die Zeit genommen und Stress investiert haben.
Ihr macht eure freiwillige Aufgabe doch weit besser als so manche Foren, in denen die Helfer ein Gehalt bekommen.
Ich werd dann mal ne seite ent"echo"n gehen...
MfG Kharek
PS: Noch immer nicht erleuchtet, aber einen Schritt weiter.
Ab jetzt werd ich schaun, dass ich vorerst alleine weiter arbeite.
Wenn ich noch mal was brauche, weiß ich, an wen ich mich wende ;)
Ich war immer in dem Glauben, man müsse alles unbedingt auf PHP schreiben, wenn man PHP nutzen möchte. Ich hab bis jetzt grad wohl nicht richtig verstanden, dass php sozusagen nur ein Aufsatz auf HTML is.. -.-
Lese und staune: PHP ist kein HTML-Aufsatz - du kannst damit auch viele andere Dinge tun, z.B. LaTeX oder CSV ausgeben. Staune noch weiter: du musst nichtmal irgend eine Ausgabe machen.
Tut mir leid, dass ich so eure Zeit vergeudet hab.
Wenn du deinen Fehleranalyseprozess verbessert hast und in Zukunft ein Problem besser selbst lösen kannst bzw. nicht mehr so oft fragen musst, war die Zeit nicht vergeudet.
Ihr macht eure freiwillige Aufgabe doch weit besser als so manche Foren, in denen die Helfer ein Gehalt bekommen.
Schlechte erfahrungen mit Experts Exchange? ;p
PS: Noch immer nicht erleuchtet, aber einen Schritt weiter.
Dann war die Zeit nicht vergeudet :)
Ich weiß nicht, woraus du schließt, dass ich undankbar bin, mehr als "Danke" sagen kann ich leider nicht. :/
Aus der "Androhnung", das Forum zu wechseln - das wirkt äußerst undankbar. Aber seisdrum, ich war auch nicht grade freundlich in meinem letzten Post, ich bitte um Entschuldigung.
echo "<a onmouseover=Tip('" . $dsatz["name"] . "') onmouseout='UnTip()'><img src=Bilder/Bild.jpg></a>";
Ein PHP-Script sollte keine Aneinanderreihung von echo-Befehlen sein - zumindest nicht die HTML-Ausgabe.
Du kannst es anders herum machen, indem du die PHP-Anweisungen im HTML notierst:
<a onmouseover="Tip('<?php echo htmlspecialchars($dsatz["name"]); ?>')" onmouseout="UnTip()"><img ...></a>
So kommt das Problem eigendlich zustande. Der Text wird aus einer Datenbank abgerufen und kann sowohl ein " " als auch ein " ' " enthalten (Beides scheint Fehler zu verursachen).
Deshalb wird im obigen Beispiel htmlspecialchars verwendet, sodass doppelte Anführungszeichen mit " maskiert werden.
Mathias
<a onmouseover="Tip('<?php echo htmlspecialchars($dsatz["name"]); ?>')" onmouseout="UnTip()"><img ...></a>
Ups, da fehlt natürlich die Maskierung der einfachen Anführungszeichen
<?php
$name = str_replace('"', '"', $dsatz["name"]); // doppelte Anführungszeichen durch " ersetzen (HTML-Attributwert)
$name = str_replace("'", "\\'"); // einfache Anführungszeichen durch \' ersetzen
~~~ (JavaScript-String)
?>
<a onmouseover="Tip('<?php echo $name; ?>')" onmouseout="UnTip()"><img ...></a>
Mathias
--
[JavaScript-Erweiterung für das SELFHTML-Forum](http://forum.de.selfhtml.org/js/doku/)
echo "<a onmouseover=Tip('" . $dsatz["name"] . "') onmouseout='UnTip()'><img src=Bilder/Bild.jpg></a>";
Das ginge auch:
echo "<a onmouseover=Tip('" . [link:http://de3.php.net/htmlspecialchars@title=htmlspecialchars]($dsatz["name"], ENT_QUOTES) . "') onmouseout='UnTip()'><img src=Bilder/Bild.jpg></a>";
Mathias
echo "<a onmouseover=Tip('" . [link:http://de3.php.net/htmlspecialchars@title=htmlspecialchars]($dsatz["name"], ENT_QUOTES) . "') onmouseout='UnTip()'><img src=Bilder/Bild.jpg></a>";
Ach, das wäre doch nicht so klug ;), schließlich fehlen die Attributwert-Begrenzer. Halte dich besser an den Tipp mit <?php ... ?>, denn das würde sonst in einer Maskierung-Orgie ausarten (" durch " ersetzen):
echo "<a onmouseover="Tip('" . htmlspecialchars($dsatz["name"], ENT_QUOTES) . ""') onmouseout='UnTip()'><img src=Bilder/Bild.jpg></a>";
Mathias
Hi!
Ich habe noch immer keine Ahnung, was falsch ist.
SFW?
Aus dem SelfHTML Artikel würde ich jetzt raten, dass ich von Natur aus sowieso nur ein Wort übergeben darf.
Nö! Mit Natur hat das gar nichts zu tun.
Guckst Du hier - so sieht ein (nichtleeres) HTML-Element aus:
<element attributName="value">Content</element>
off:PP
Hi,
Ich habe noch immer keine Ahnung, was falsch ist.
Aus dem SelfHTML Artikel würde ich jetzt raten, dass ich von Natur aus sowieso nur ein Wort übergeben darf.
Was an folgendem von der verlinkten Stelle in SELFHTML begreifst du denn nicht?
Obwohl es vom HTML-Standard her zulässig wäre, dass bestimmte Attributwerte auch ohne Anführungszeichen geschrieben werden können, sollten Sie diese Möglichkeit nicht nutzen. Es verringert die Wahrscheinlichkeit von Fehlern, wenn Sie grundsätzlich alle Werte, die Sie Attributen zuweisen, in einfache ' oder doppelte " Anführungszeichen setzen.
MfG ChrisB