maeggi07: Verlinkung funkioniert nicht

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

  1. 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 "&amp;") 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.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. 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

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. 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

        --
        fl:| br:> va:) ls:< n4:( ss:) de:] js:| mo:}
        1. 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

          1. 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

            --
            "The Internet: Technological marvel of marvels - but if you don't know *what* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."
            1. 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

      2. 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 . '>';

        1. 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#attributes

          dabei 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

          --
          Warum nennt sich Andreas hier MudGuard?
          O o ostern ...
          Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
          1. 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 . ''>';

            1. 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

              --
              Warum nennt sich Andreas hier MudGuard?
              O o ostern ...
              Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    2. echo '<p><a href="'.htmlentities($nachricht).'">', htmlentities($user->username), "</a></p>\r\n";

      urlencode() bzw htmlspecialchars() würde ich anstatt htmlentities() vorschlagen