PHP und Javscript zusammen verwenden
Mark D.
- javascript
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.
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.
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.
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.
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_valueStruppi.
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.
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 verwenden.
Struppi.
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
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
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
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
?>
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
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