Verlinkung funkioniert nicht
maeggi07
- php
guten morgen alle zusammen,
ich habe ein problem mit einer verlinkung und spar, verlinke ich mit den code ein bild.
<?php $nachricht="index.php?option=com_pms&page=new&id=".$user->username; echo "<a href='$nachricht'><img src="./components/com_comprofiler/enhanced/profil/images/pmsenden.png" border="0"></a>"; ?>
aber ich möchte jetzt an statt das bild ein text verlinken der auch php enthält. den hier:
Nachricht an <?php echo $user->username; ?>
aber das bekomme ich nicht hin. wenn ich das nur mit den text mache ohne php code also <?php echo $user->username; ?> dann funkioniert das. aber mit den code funkioniert das nicht. ist klar das ich nicht php in php ausführen kann. ich habe den code dann so abgeändert.
Nachricht an <?php echo $user->username; ?>
"Nachricht an" echo $user->username;
aber so funkioniert das leider auch nicht.
ich hoffe mir kann da jemand weiter helfen.
vielen dank für eure hilfe.
mfg maeggi
Liebe(r) maeggi07,
<?php $nachricht="index.php?option=com_pms&page=new&id=".$user->username; echo "<a href='$nachricht'><img src="./components/com_comprofiler/enhanced/profil/images/pmsenden.png" border="0"></a>"; ?>
schreit da Dein PHP-Interpreter nicht Zeter und Mordio?
In der ersten Zeile definierst Du einen String "nachricht", das ist soweit OK.
In der Zweiten Zeile steht ein String... ohne Variablenzuweisung oder Funktionsaufruf dazu!
Wenn Dein String "nachricht" eine URL enthält, warum nennst Du ihn dann "nachricht"?
Wenn Du einen Link zusammenbaust, dessen href-Attribut den Wert von $nachricht enthalten soll, warum stellst Du diesen Wert dann nicht in doppelte Anführungszeichen? Beispiel:
"<a href='$nachricht'>
ist nicht gut, da im Browser das hier ankommt:
<a href=index.php?option=com_pms&page=new&id=12345>
Zum ersten sollte der href-Wert in doppelten (oder wenigstens einfachen) Anführungszeichen stehen, und zum zweiten solltest Du jedes "&"-Zeichen in HTML zu einer HTML-Entität (in diesem Falle "&") machen. Also muss Dein PHP-Code so aussehen:
'<a href="'.htmlentities($nachricht).'">'
Jetzt zu Deinem zweiten Problem, welches Du (sorry...) in fragwürdigem Deutsch so formuliert hast:
aber ich möchte jetzt an statt das bild ein text verlinken der auch php
enthält. den hier:
Nachricht an <?php echo $user->username; ?>
Das geht genauso.
$nachricht = "index.php?option=com_pms&page=new&id=".$user->username;
echo '<p><a href="'.htmlentities($nachricht).'">', htmlentities($user->username), "</a></p>\r\n";
echo $ausgabe;
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hi,
<?php $nachricht="index.php?option=com_pms&page=new&id=".$user->username; echo "<a href='$nachricht'><img src="./components/com_comprofiler/enhanced/profil/images/pmsenden.png" border="0"></a>"; ?>
In der Zweiten Zeile steht ein String... ohne Variablenzuweisung oder Funktionsaufruf dazu!
Dein Monitor ist zu schmal - da ist nur eine Zeile.
Zum ersten sollte der href-Wert in doppelten (oder wenigstens einfachen) Anführungszeichen stehen,
echo "<a href='$nachricht'>
Einfache Anführungszeichen sind vorhanden.
Warum schreibst Du eigentlich "oder wenigstens einfachen" in Bezug auf die Anführungszeichen?
Inwiefern sollte " besser sein als ' ?
HTML gibt keinen qualitativen Unterschied zwishcen den beiden vor: http://www.w3.org/TR/html4/intro/sgmltut.html#attributes
cu,
Andreas
Gudn!
Warum schreibst Du eigentlich "oder wenigstens einfachen" in Bezug auf die Anführungszeichen?
Inwiefern sollte " besser sein als ' ?
HTML gibt keinen qualitativen Unterschied zwishcen den beiden vor: http://www.w3.org/TR/html4/intro/sgmltut.html#attributes
Vielleicht meinte Felix den hier schon oft gebrachten Performance-Vorteil in PHP mit ' anstatt mit " für Strings zu arbeiten. Dies hat er dann allerdings überhaupt nicht konsequent umgesetzt.
Gruß aus Fürth in Mittelfranken,
Samoht
hallo,
erstmal danke für eure hilfe. habe es so gemacht wie felix es geschrieben hat.
ja, aber leider wurde damit ja nicht mein problem behoben.
ich wollte ja nur das bild durch einen text ersetzen mehr nicht :)
hier nochmal der komplette code.
<?php $nachricht="index.php?option=com_pms&page=new&id=".$user->username; echo "<a href='$nachricht'><img src="./components/com_comprofiler/enhanced/profil/images/pmsenden.png" border="0"></a>"; ?>
da ist ja jetzt auf das bild verlinkt.
<img src="./components/com_comprofiler/enhanced/profil/images/pmsenden.png"
Nachricht an <?php echo $user->username; ?>
so das der text verlinkt ist, mit dem user.
das müsste dann ungefär so aussehen:
<?php $nachricht="index.php?option=com_pms&page=new&id=".$user->username; echo "<a href='$nachricht'>Nachricht an echo $user->username; </a>" ?>
aber das funkioniert nicht. der user wird dann nicht angezeigt.
ich hoffe ihr wisst was ich meine.
und nochmals vielen dank für eure hilfe.
mfg maeggi
Hi,
<?php $nachricht="index.php?option=com_pms&page=new&id=".$user->username; echo "<a href='$nachricht'>Nachricht an echo $user->username; </a>" ?>
aber das funkioniert nicht. der user wird dann nicht angezeigt.
Wieso baust du ein weiteres echo ins echo ein? Das ist Bloedsinn.
RTFM: http://www.php.net/manual/en/language.types.string.php
MfG ChrisB
man sieht den wald vor lauter bäumen nicht mehr :)
vielen dank @ ChrisB
auch vielen dank an die anderen. ich wünsche euch noch einen wunderschönen tag.
mfg maeggi
Dein Monitor ist zu schmal - da ist nur eine Zeile.
der viewport des browsers - wie gross der monitor ist, spielt keine rolle
Warum schreibst Du eigentlich "oder wenigstens einfachen" in Bezug auf die Anführungszeichen?
Inwiefern sollte " besser sein als ' ?
HTML gibt keinen qualitativen Unterschied zwishcen den beiden vor: http://www.w3.org/TR/html4/intro/sgmltut.html#attributes
dabei gehts nicht ums html sondern um php
http://www.php.net/types.string
pinzipiell würde ich das aber so schreiben, da meiner ansicht nach single-quoted-strings mehr vorteile bieten als double-quoted - natürlich kann man wechseln/mischen auch, aber der code ist so imho leichter lesbar
echo '<a href=' . $nachricht . '>';
Hi,
Zum ersten sollte der href-Wert in doppelten (oder wenigstens einfachen) Anführungszeichen stehen,
Warum schreibst Du eigentlich "oder wenigstens einfachen" in Bezug auf die Anführungszeichen?
Inwiefern sollte " besser sein als ' ?
HTML gibt keinen qualitativen Unterschied zwishcen den beiden vor: http://www.w3.org/TR/html4/intro/sgmltut.html#attributesdabei gehts nicht ums html sondern um php
Nein, es ging nicht um PHP. Es ging explizit um den href-Wert. Das könntest Du aber auch erkennen, wenn Du die ganze Zeile, der ich das Zitat entnommen hatte, gelesen hättest.
pinzipiell würde ich das aber so schreiben, da meiner ansicht nach single-quoted-strings mehr vorteile bieten als double-quoted - natürlich kann man wechseln/mischen auch, aber der code ist so imho leichter lesbar
echo '<a href=' . $nachricht . '>';
Das ist unsinnig, denn damit wäre der href-Wert ohne Anführungszeichen ...
cu,
Andreas
echo '<a href=' . $nachricht . '>';
Das ist unsinnig, denn damit wäre der href-Wert ohne Anführungszeichen ...
und was ist daran bitte falsch? da hier niemand die anderen voraussetzungen kennt, kann <a href=example.png> richtig sein - in html 3.2 zb ist das keineswegs falsch
alternativ ist natürlich auch dieser hier genehm
echo '<a href="' . $nachricht . '">';
oder so
echo "<a href="" . $nachricht . "">"
oder so
echo "<a href="$nachricht">";
oder vielleicht auch so
echo '<a href='' . $nachricht . ''>';
Hi,
echo '<a href=' . $nachricht . '>';
Das ist unsinnig, denn damit wäre der href-Wert ohne Anführungszeichen ...
und was ist daran bitte falsch? da hier niemand die anderen voraussetzungen kennt,
Aus dem Originalposting:
$nachricht="index.php?option=com_pms&page=new&id=".$user->username;
Die Regeln, wann ein Attributwert ohne Anführungszeichen stehen darf, sind in HTML 3.2 dieselben wie unter HTML 4.01 - da sie aus dem zugrundeliegenden SGML stammen.
Den Link auf eine entsprechende Auflistung der erlaubten Zeichen in Attributwerten ohne umschließende Anführungszeichen habe ich bereits gesetzt - z.B. das ? ist nicht in der Liste enthalten.
kann <a href=example.png> richtig sein
Nur weil Du das Originalposting nicht richtig gelesen hast, heißt das noch lange nicht, daß "niemand die anderen voraussetzungen kennt".
Wie bei diesem Code
$nachricht="index.php?option=com_pms&page=new&id=".$user->username; echo "<a href='$nachricht'>...";
bei dem echo der Wert von $nachricht zu 'example.png' (ohne die '') geworden sein soll, ist wohl höchstens Dir klar.
cu,
Andreas
echo '<p><a href="'.htmlentities($nachricht).'">', htmlentities($user->username), "</a></p>\r\n";
urlencode() bzw htmlspecialchars() würde ich anstatt htmlentities() vorschlagen