chris: javascript im PHP-Code

Hallo Leute, ich bin schon fast am verzweifeln! Ich möchte einen Link mit javascript im Php-code einfügen, nur will es nicht klappen! (liegt natürlich am Unvermögen von mir)

Dieser Code:

<? echo "<a href='#' onClick='window.open('".URL_TO_LMO.'/'.$diroutput.basename($file)."-sp.html', 'NewWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=780,height=600')'>{$text[480]}</a>";?>

Fehlermeldung gibt es keine, es wird nur das Fenster nicht geöffnet.

Nehme ich diesen Code...:

<? echo '<a href="#" onClick="window.open(''.URL_TO_LMO.'/'.$diroutput.basename($file).'-sp.html', 'NewWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=780,height=600')">'.$text[480].'</a>';?>

...bekomme ich folgende Fehlermeldung:

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in... (also in dieser besagten Zeile mit dem obenstehenden code)

Kann mir jemand sagen wo mein Fehler liegt? Ich wäre sehr dankbar,
weiß nämlich nicht mehr weiter.

Chris

  1. Hi,

    <? echo "<a href='#' onClick='window.open('".URL_TO_LMO.'/'.$diroutput.basename($file)."-sp.html', 'NewWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=780,height=600')'>{$text[480]}</a>";?>

    du bist dir sicher, dass das keinen Fehler gibt? Du testest im Internet Explorer?!
    Die JavaScript-Konsole im Firefox müsste dir z.B. sagen, dass in
    onclick="window.open(" irgendwas fehlt, und im Prinzip hast du sowas da stehen...
    Was will ich damit sagen? Beachte die Anführungszeichen, die du in Verwendung hast. Du musst PHP nutzen, um gültiges HTML/JavaScript zu erzeugen, wenn also HTML eine Mischung von ' und " erfordert, suche einen Weg in PHP dies zu erreichen, z.B. ".

    MfG
    Rouven

    --
    -------------------
    He is entertaining both out of the car and in the car because if you tell him that a corner is almost flat then he is the guy who is going to try to take it flat even if it means shunting it the other side of it, he will come with the data and say 'hey, I may have crashed and destroyed the car, but I was flat-out'. That is an interesting quality that he has!  --  Team Member on Jacques Villeneuve
    1. Hallo Rouven.

      {…] wenn also HTML eine Mischung von ' und " erfordert, suche einen Weg in PHP dies zu erreichen, z.B. ".

      Oder Heredoc. Darin hat man bei der Entscheidung über „"“ oder „'“ freie Wahl.

      Einen schönen Montag noch.

      Gruß, Ashura

      --
      sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
      „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
      [HTML Design Constraints: Logical Markup]
    2. Hi, danke das du Dir mein Problem annimmst.
      Stimmt, in der javascript-konsole zeigt er mir den Fehler an.
      Gut, ich habe es auch schon so probiert gehabt:

      <? echo "<a href='#' onClick='window.open('".URL_TO_LMO.'/'.$diroutput.basename($file)."-sp.html', 'NewWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,
      scrollbars=yes,resizable=no,copyhistory=no,width=780,height=600')'>{$text[480]}</a>&nbsp;"; ?>

      oder so:

      <?php echo "<a href="#" onClick="window.open('".URL_TO_LMO.'/'.$diroutput.basename($file)."-sp.html', 'NewWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=780,height=600')">{$text[480]}</a>&nbsp;"; ?>

      ...aber irgendwie steige ich nicht dahinter, was mein Fehler ist.

      In der javascript-konsole zeigt er mir immer an:

      Fehler: unterminated string literal
      Quelldatei:
      ...
      Zeile: 1, Spalte: 12
      Quelltext:
      window.open('

      Weiß aber nicht so richtig damit anzufangen, außer das der Fehler an dem ersten ' liegt nach der klammer.

      1. Hallo nochmal,

        OK, mach dir mal ganz schrittweise klar was da eigentlich passieren soll. PHP und JavaScript gibt es ja eigentlich nicht, es gibt erst PHP und dann JavaScript. Nun rollen wir die Sache mal von hinten nach vorne auf.

        1. Was soll rauskommen?
          Eine Mischung aus "" für onclick-Attribut und '' für JavaScript-Strings, also
          <a ... onclick="window.open('http://...', 'NewWindow', 'toolbar=no, ...')">

        2. Wie schreibe ich einen solchen String mit PHP? Nun ja, jeweils das Zeichen, das PHP als String-Begrenzer sieht muss ich maskieren, mache ich also echo "...", dann müssen die ", mache ich echo '...' dann die ' maskiert werden.
          ->
          echo "<a href="window.open('http://...', 'NewWindow', 'toolbar=no, ...')">";

        3. Nun ist da noch die Sache mit den Variablen. Wenn du einen String mit " begrenzt, so interpretiert PHP Variablen innerhalb des Strings, Funktionsaufrufe sind allerdings ein Problem, dazu muss der String beendet und der Konkatenationsoperator "." verwendet werden, bspw:
          echo "<a href="\window.open('$url', 'NewWindow', 'toolbar=no, ...')">";
          bzw.
          echo "<a href="\window.open('".$url."', 'NewWindow', 'toolbar=no, ...')">";

        MfG
        Rouven

        --
        -------------------
        When the only tool you've got is a hammer, all problems start to look like nails.
        1. Mein Gott, jetzt habe ich es auch halbwegs verstanden und hinbekommen.

          Man muss also ausserhalb des javascript-anweisungen die " mit einem Backslash ausklammern und dann kann man wie gewohnt den code verwenden. Und ich habe immer in der Klammer auch noch versucht backslashes einzufügen. *kopfschüttel*

          Dankeschön erstmal.