Mark D.: PHP und Javscript zusammen verwenden

Hi,

ich bin grade dabei mit PHP einen Terminkalender zubasteln.
Man soll einfach über das entsprechende Datumdrüber gehen und dann Infos zum Termin erhalten. Dafür muss ich Javascript verwenden da PHP keine onmouseover effekte hat.
Mit einem Textfelder(Formular) wo sich der Wert ändert geht alles wunderbar. Wenn ich aber will das sich in einem div-Bereich der Text geändert/generiet werden soll dann klaptt das nicht.
Hier mal auszüge vom Code:

<?php
echo("<script type='text/javascript'>
var DSDS='test';
var lol1='lol1';
document.getElementById('test').NodeValue = 'lol1';
</script>");
?>

echo("<td><div style='color:black;' onmouseover='document.getElementById('test').write = 'lol1'>".$c."</div></td>");

echo("<div  id='test'></div>");

Ich hab mir schon gedacht dass der nicht richtig eingehaltene Syntax Probleme darstellenkönnte,da überall ' steht und nicht " was man aber nicht umgehen kann.
vlt. könnt ihr euch das besser vorstellen, wenn ihr die Seite seht
könnt ja mal die URL anklicken.
Danke im Vorraus.

  1. document.getElementById('test').NodeValue = 'lol1';
    echo("<td><div style='color:black;' onmouseover='document.getElementById('test').write = 'lol1'>".$c."</div></td>");

    Sowohl das Attribut NodeValue noch write existieren nicht. Aus welcher Doku hast du das?

    Struppi.

    1. document.getElementById('test').NodeValue = 'lol1';
      echo("<td><div style='color:black;' onmouseover='document.getElementById('test').write = 'lol1'>".$c."</div></td>");

      Sowohl das Attribut NodeValue noch write existieren nicht. Aus welcher Doku hast du das?

      Struppi.

      Ups,da ist mir ein Fehler unterlaufen.
      Da sollte stehen:

      document.getElementById('test').firstChild.NodeValue = 'lol1';

      Funktioniert aber trotzdem nicht.^^

      Einmal aus
      http://www.ayom.com/topic-6083.html
      und das anderemit write auch durchs Googlen mit den Suchbegriffen "div text ändern" oder ähnliches.

      @cybaer
      Wenn ich es richtig verstanden habe muss ich
      im PHP code folgende Sachen übernehmen
      $jsCode= mit Pfad zur ner datei mit .js
      insertJS($jsCode); zum plazieren an der richtigen Stelle.

      ich probiers mal aus und hoffe ich habs richtig verstanden.
      Danke euch beiden.

      1. Ups,da ist mir ein Fehler unterlaufen.
        Da sollte stehen:

        document.getElementById('test').firstChild.NodeValue = 'lol1';

        Funktioniert aber trotzdem nicht.^^

        Ist ja auch noch immer falsch

        und das anderemit write auch durchs Googlen mit den Suchbegriffen "div text ändern" oder ähnliches.

        Wie wär's mit selfhtml?
        http://de.selfhtml.org/javascript/objekte/node.htm#node_value

        Struppi.

        1. Ups,da ist mir ein Fehler unterlaufen.
          Da sollte stehen:

          document.getElementById('test').firstChild.NodeValue = 'lol1';

          Funktioniert aber trotzdem nicht.^^

          Ist ja auch noch immer falsch

          und das anderemit write auch durchs Googlen mit den Suchbegriffen "div text ändern" oder ähnliches.

          Wie wär's mit selfhtml?
          http://de.selfhtml.org/javascript/objekte/node.htm#node_value

          Struppi.

          Danke jetzt klappt es und ein problem war das im beriech <div id='test'></div>
          schon ein text stehen musssonst geht es erst garnicht.

          @cybaer
          ich habs auch so probiert wie du es im Beispiel hattest ohne backslashes(ka wie mans schreibt). Kamauch ein Error. Zu ungenau definiert oder so.

          1. Danke jetzt klappt es und ein problem war das im beriech <div id='test'></div>
            schon ein text stehen musssonst geht es erst garnicht.

            Ja, weil ansonsten das firstChild fehlt. Du kannst aber auch ein &nbsp; verwenden.

            Struppi.

      2. Hi,

        Wenn ich es richtig verstanden habe muss ich
        im PHP code folgende Sachen übernehmen
        $jsCode= mit Pfad zur ner datei mit .js

        Nein. $jsCode ist eine Variable, die den eigentlichen JS-Source selbst enthält. Der JS-Source geht im Beispiel von der Zeichenkette "JavaScript" bis zur Zeichenkette "JavaScript" (im Beispiel also nur ein alert())! Im Prinzip also das gleiche wie
         $jsCode="alert('Hallo');";
        nur daß diese Form der Wertzuweisung bei PHP ohne Anführungszeichen auskommt, und somit im Variablenwert enthaltene Anführungszeichen nicht maskiert werden müssen - nur noch die Backslashes müssen maskiert werden. Das macht die Integration wesentlich einfacher, da man bei JS oft mit beiden Anführungszeichen arbeiten muß, aber eines ja auch von PHP gebraucht wird. :)

        insertJS($jsCode); zum plazieren an der richtigen Stelle.

        Die Funktion bastelt halt die HTML-Tags (SCRIPT & Co.) in korrekter Notation und setzt den Inhalt der Variable passend rein. Bei Bedarf kann ich die Funktion hier posten. Oder Du schreibst sie selbst. :)

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
        1. BTW:

          Bei Bedarf kann ich die Funktion hier posten. Oder Du schreibst sie selbst. :)

          Was Du hier aber übrigens kaum brauchst! Mir ging es ja nur um die Notation, um Probleme mit dem " und ' zu vermeiden! =:-)

          Unabhängig von deinem fehlerhaften JS-Code, den Du, um ihn zu bewerten, hier nicht in ein PHP-Kleid hättest packen sollen(!) also eher:

          $htmlCode=<<<HTMLCode
          <td><div style="color:black;" onmouseover="document.getElementById('test').write = 'lol1';">$c</div></td>
          HTMLCode;

          echo $htmlCode;

          Und schon mußt Du, trotz " *und* ' im Code nichts mehr in PHP maskieren. Der Code ist so, wie man ihn auch in einem HTML-Editor schreiben würde.

          Gruß, Cybaer

          --
          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  2. Hi,

    Ich hab mir schon gedacht dass der nicht richtig eingehaltene Syntax Probleme darstellenkönnte,

    Deswegen nehme ich i.d.R. eine andere. :)

    $jsCode=<<<JavaScript
     alert("Hallo\n'JS-Fan'! ;-)");
    JavaScript;
    insertJS($jsCode);

    Wobei insertJS() eine eigene Funktion ist, die mir "nur" noch den JS-Source dann korrekt in den (X)HTML-Code reinbrezelt. ;-)

    Bei dieser Notation müssen, wie im Beispiel zu sehen, nur noch die Backslashes escaped werden!

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  3. Hi,

    ich bin grade dabei mit PHP einen Terminkalender zubasteln.
    Man soll einfach über das entsprechende Datumdrüber gehen und dann Infos zum Termin erhalten. Dafür muss ich Javascript verwenden da PHP keine onmouseover effekte hat.

    keine OnMouseOver-Effekte haben kann. PHP wird serverseitig ausgeführt, Javascript clientseitig.

    Mit einem Textfelder(Formular) wo sich der Wert ändert geht alles wunderbar. Wenn ich aber will das sich in einem div-Bereich der Text geändert/generiet werden soll dann klaptt das nicht.
    Hier mal auszüge vom Code:

    <?php
    echo("<script type='text/javascript'>
    var DSDS='test';
    var lol1='lol1';
    document.getElementById('test').NodeValue = 'lol1';

    Es muss "document.getElementById('test').firstChild.NodeValue = 'lol1';" heißen.

    </script>");
    ?>

    echo("<td><div style='color:black;' onmouseover='document.getElementById('test').write = 'lol1'>".$c."</div></td>");

    Ist das eine Tabellenzelle ohne Tabelle? Was soll da eigentlich passieren, bei deinem MouseOver? Wenn du ebenfalls den Text ändern möchtest, warum verwendest du nicht, wie oben, NodeValue? Und wieso schreibst du den gleichen Text rein, den du schon beim Start reinschreibst? Wo kommt $c her?

    echo("<div  id='test'></div>");

    Ich hab mir schon gedacht dass der nicht richtig eingehaltene Syntax Probleme darstellenkönnte,da überall ' steht und nicht " was man aber nicht umgehen kann.

    Erstens stört das nicht und zweitens kannst du es sehr wohl umgehen. Du könntest z. B. echo('<script type="text/javascript">'); verwenden oder die Heredoc-Syntax einsetzen. Weiterhin ist dein serverseitiges PHP vollkommen unnötig - du könntest dir den Echo-Bla und das PHP-Zeugs sparen und gleich den HTML-Code hinschreiben.

    Schöne Grüße
    Julian

    --
    "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning." - Rich Cook
    http://derjulian.net
    1. ?>

      echo(...

      Und wieso schließt du den PHP-Bereich um dannach noch mehr PHP-Befehle auszuführen (ausführen zu wollen)?

      Schöne Grüße
      Julian

      --
      "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning." - Rich Cook
      http://derjulian.net
    2. Hi,

      ich bin grade dabei mit PHP einen Terminkalender zubasteln.
      Man soll einfach über das entsprechende Datumdrüber gehen und dann Infos zum Termin erhalten. Dafür muss ich Javascript verwenden da PHP keine onmouseover effekte hat.

      keine OnMouseOver-Effekte haben kann. PHP wird serverseitig ausgeführt, Javascript clientseitig.

      Mit einem Textfelder(Formular) wo sich der Wert ändert geht alles wunderbar. Wenn ich aber will das sich in einem div-Bereich der Text geändert/generiet werden soll dann klaptt das nicht.
      Hier mal auszüge vom Code:

      <?php
      echo("<script type='text/javascript'>
      var DSDS='test';
      var lol1='lol1';
      document.getElementById('test').NodeValue = 'lol1';

      Es muss "document.getElementById('test').firstChild.NodeValue = 'lol1';" heißen.

      </script>");
      ?>

      echo("<td><div style='color:black;' onmouseover='document.getElementById('test').write = 'lol1'>".$c."</div></td>");

      Ist das eine Tabellenzelle ohne Tabelle? Was soll da eigentlich passieren, bei deinem MouseOver? Wenn du ebenfalls den Text ändern möchtest, warum verwendest du nicht, wie oben, NodeValue? Und wieso schreibst du den gleichen Text rein, den du schon beim Start reinschreibst? Wo kommt $c her?

      echo("<div  id='test'></div>");

      Ich hab mir schon gedacht dass der nicht richtig eingehaltene Syntax Probleme darstellenkönnte,da überall ' steht und nicht " was man aber nicht umgehen kann.

      Erstens stört das nicht und zweitens kannst du es sehr wohl umgehen. Du könntest z. B. echo('<script type="text/javascript">'); verwenden oder die Heredoc-Syntax einsetzen. Weiterhin ist dein serverseitiges PHP vollkommen unnötig - du könntest dir den Echo-Bla und das PHP-Zeugs sparen und gleich den HTML-Code hinschreiben.

      Schöne Grüße
      Julian

      Hi,

      ich wollte den ganzen Quellcode nicht kopieren,da ich sonst immer angeschnauzt werde in Foren wenn ich es mache ,aber damit du die Zusammenhänge verstehst(Ich weiß da könnte man noch einiges optimieren):

      <html>
      <head>
      <?php
      echo("<script type='text/javascript'>
      var DSDS='test';
      var lol1='lol1';
      document.getElementById('test').firstChild.NodeValue = 'lol1';
      </script>");
      ?>

      <title>Test</title>
      </head>
      <body>
      <table>
      <tr><td><?php
      if($yep==1)
      echo("Januar");
      if($yep==2)
      echo("Februar");
      if($yep==3)
      echo("März");
      ?></td></tr>
      <tr>
      <td>Mo</td>
      <td>Di</td>
      <td>Mi</td>
      <td>Do</td>
      <td>Fr</td>
      <td>Sa</td>
      <td>So</td>
      </tr>
      <?php
      @include"termine.inc.php";
      ?>
      <?php
      $next=$yep+1;
      if($yep != 1)
      $pre=$yep-1;
      if ($yep == 1)
      $pre=$yep;
      ?>
      <?php
      @include"arraya.inc.php";
      ?>
      <?php
      $month=$yep;
      $t=0;
      while($t <= 12){
      $checkdat = split ("[.]", $o[T.$t][dat]);
      $dateday=$checkdat[0];
      if($month == $checkdat[1]){
      $a[$dateday][da]="T".$t;
      $a[$dateday][tt]="true";

      }
      $t++;

      }

      if ($a[1][day]== 0)
      $a[1][pos]=7;
      if ($a[1][day]== 1)
      $a[1][pos]=1;
      if ($a[1][day]== 2)
      $a[1][pos]=2;
      if ($a[1][day]== 3)
      $a[1][pos]=3;
      if ($a[1][day]== 4)
      $a[1][pos]=4;
      if ($a[1][day]== 5)
      $a[1][pos]=5;
      if ($a[1][day]== 6)
      $a[1][pos]=6;

      $c=1;
      $bits=0;
      while($c <= 31){
      if($c != 0)
      {$b=$c-1;
      $d=$a[$b][pos]+1;
      $a[$c][pos]=$d;}
      if ($bits <= 7 && $c == 1){

      if($a[$c][day]==0){
      $bits=7;
      if($bits=0){
      echo("<tr>");}
      echo("<td></td><td></td><td></td><td></td><td></td><td></td><td>".$c."</td>");
      if($bits=7){
      echo("</tr>");}}

      if($a[$c][day]==1){
      if($bits=0){
      echo("<tr>");}
      $bits=$bits+2;
      echo("<tr><td>".$c."</td>");}

      if($a[$c][day]==2){
      if($bits=0){
      echo("<tr>");}
      $bits=3;
      echo("<tr><td></td><td>".$c."</td>");}

      if($a[$c][day]==3){
      if($bits=0){
      echo("<tr>");}
      $bits=4;
      echo("<tr><td></td><td></td><td>".$c."</td>");}

      if($a[$c][day]==4){
      if($bits=0){
      echo("<tr>");}
      $bits=5;
      echo("<tr><td></td><td></td><td></td><td>".$c."</td>");}

      if($a[$c][day]==5){
          if($bits=0){
      echo("<br>");}
      $bits=6;
      echo("<tr><td></td><td></td><td></td><td></td><td>".$c."</td>");}

      if($a[$c][day]==6){
      if($bits=0){
      echo("<br>");}
      $bits=7;
      echo("<tr><td></td><td></td><td></td><td></td><td></td><td>".$c."</td></tr>");}
      }

      if ($bits <= 7 && $c != 1){

      if($a[$c][day]==0){
      if($a[$c][tt]=="true"){
      echo("<td><div style='color:black;' onmouseover='document.getElementById('test').write = 'lol1'>".$c."</div></td>");
          }
      if($a[$c][tt]=="false"){
      echo("<td><div style='color:grey;'>".$c."</div></td>");
          }
      echo("</tr>");
      }

      if($a[$c][day]==1){
      echo("<tr>");
      if($a[$c][tt]=="true"){
      echo("<td><div style='color:black; onmouseover=''document.getElementById('test').write = 'lol1'>".$c."</div></td>");
          }
      if($a[$c][tt]=="false"){
      echo("<td><div style='color:grey;'>".$c."</div></td>");
          }
      }

      if($a[$c][day]==2){
      if($a[$c][tt]=="true"){
      echo("<td><div style='color:black;' onmouseover='document.getElementById('test').write = 'lol2'>".$c."</div></td>");
          }
      if($a[$c][tt]=="false"){
      echo("<td><div style='color:grey;'>".$c."</div></td>");
          }
      }

      if($a[$c][day]==3){
      if($a[$c][tt]=="true"){
      echo("<td><div style='color:black;' onmouseover='document.getElementById('test').write = 'lol3'>".$c."</div></td>");
          }
      if($a[$c][tt]=="false"){
      echo("<td><div style='color:grey;'>".$c."</div></td>");
          }
      }

      if($a[$c][day]==4){
      if($a[$c][tt]=="true"){
      echo("<td><div style='color:black;' onmouseover='document.getElementById('test').write = 'lol4'>".$c."</div></td>");
          }
      if($a[$c][tt]=="false"){
      echo("<td><div style='color:grey;'>".$c."</div></td>");
          }
      }

      if($a[$c][day]==5){
      if($a[$c][tt]=="true"){
      echo("<td><div style='color:black;' onmouseover='document.getElementById('test').write = 'lol5'>".$c."</div></td>");
          }
      if($a[$c][tt]=="false"){
      echo("<td><div style='color:grey;'>".$c."</div></td>");
          }
      }

      if($a[$c][day]==6){
      if($a[$c][tt]=="true"){
      echo("<td><div style='color:black;' onmouseover='document.getElementById('test').write = 'lol6'>".$c."</div></td>");
          }
      if($a[$c][tt]=="false"){
      echo("<td><div style='color:grey;'>".$c."</div></td>");
          }
      }
      }
      $c++;}
      echo("</tr><tr><td colspan='3'><a href='test.php?yep=".$pre."'>vorheriger Monat</td>
      <td colspan='3'><a href='test.php?yep=".$next."'>nächster Monat</a></td></table><br><br><br><div  id='test'></div>");
      $ta=0;

      ?>
      </body>
      </html>

      In dem includes stehen nur Arrays für genaue Termin angaben.

      by markd