PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie javascript innerhalb von php?


Gast
2005-08-08, 15:03:59
Also ich habe ein Javascript das innerhalb eines phpcodes laufen soll da es einiege daten daraus übernimmt.

Ohne PHP geht das script innerhalb von php aber nich o_O

ich füge es normal per echo ein.

ravage
2005-08-08, 15:06:19
Kannst du das ganze vielleicht etwas weiter beschreiben? Vll. mit Beispielen

Ich weiss grad wirklich nicht, was du mir (uns) sagen willst.

massa
2005-08-08, 22:11:42
Klingt als ob du irgendwas vergessen hast. Hab auch ein php-dokument das Daten an ein JS übergibt.
Evtl. liegts an " oder ' die nicht richtig übernommen werden. Prüf einfach mal nach, ob du die " bzw. ' im echo mit \ gekennzeichnet hast...
hoffe du verstehst was ich meine :)

Gast
2005-08-08, 23:54:06
jau versteh ich das hatte ich auch schon. geparsed wird es ja nur wird das js net verarbeitet.

Sphinx
2005-08-09, 00:40:16
erledigt^^

Nase
2005-08-09, 23:26:28
Problemcode bitte hier posten.

Gast
2005-08-10, 00:23:35
<?
include ("../include/header.inc");
?>
<div id="content">
<a class="navi" href="http://www.metalforen.org/ipb2/index.php?showforum=57">CDs</a><br />
<?
Datenbank Login und Forumurl... (entfernt)
$forumid = '57';
mysql_connect ($dbhost, $dbusername, $dbpassword);
mysql_select_db ($dbname);
$topics = mysql_query ("select* from ibf_topics where forum_id=".$forumid." order by title asc");
$postcount = mysql_num_rows($topics);
for ($i=0; $i <$postcount; $i++)
{
$topicrow = mysql_fetch_array($topics);
$titleid = $topicrow["tid"];
$topictitle = ($topicrow["title"]);
$postq = mysql_query ("SELECT * FROM `ibf_posts` where topic_id = ".$titleid." order by post_date");
$postfetch = mysql_fetch_array($postq);
$post = $postfetch["post"];
echo '
<div class="spoiler">
<a class="spoiler" onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].style.display = ''; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; }; return false;" href="#">'.$topictitle.'</a>
</div>
<div style="display: none">
<div class="alt1" style="padding:8px">
'.$post.'
</div>';
}?>
</div>
<?
include ("../include/footer.inc");
?>

So ich war so frech den Spoilerkram aus dem 3DC Quellcode zu mopsen. Ohne PHP geht er wie gesagt. Innerhalb des PHPs nicht. Allerdings soll er einiege Daten vom PHP übernehmen wie man ja am Quelltext recht gut erkennt.

Nase
2005-08-10, 00:38:26
Üäh ...

Da machste ne Javascript-Funktion und rufst die bei onClick auf. Spart Code und funktioniert auch.

Gast
2005-08-10, 00:41:05
Wie meinen? Bin nicht wirklich bewandet mit JavaScript. Die Sache hier ist die erste und wohl auch letzte...

nen code snipplet oder so wäre nicht schlecht, wenn das nicht zu viele Umstände macht.

Sphinx
2005-08-10, 00:51:20
echo '
<div class="spoiler">
<a class="spoiler" onclick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].style.display = ''; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].style.display = 'none'; }; return false;" href="#">'.$topictitle.'</a>
</div>
<div style="display: none">
<div class="alt1" style="padding:8px">
'.$post.'
</div>';

Ich will ja nichts sagen aber wo fäng ~> echo ' an und hört '; wieder auf...

Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in D:\Server\Apache2\htdocs\planetem2k\delete.php5 on line 4


echo '<div class="spoiler">';
echo '<a class="spoiler" onclick="if this.parentNode.parentNode.getElementsByTagName(';
echo "'div'";
echo ")[1].style.display != '') {";
echo ' this.parentNode.parentNode.getElementsByTagName(';
echo "'div'";
echo ")[1].style.display = ''; } else {";
echo ' this.parentNode.parentNode.getElementsByTagName(';
echo "'div'";
echo ')[1].style.display = ';
echo "'none'; }; return false;";
echo '" href="#">';
echo $topictitle;
echo '</a>';

Gast
2005-08-10, 00:55:27
der code oben wird so geparsed da gibt es keine errors. vllt was falsch eingefügt?

echo hört nach dem dem letztem div auf.

Nase
2005-08-10, 00:55:35
Ich hab das letztens so gemacht: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>
<head>
<title>Swap_Content</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<script type="text/javascript">
<!--

function swap_content( nummer ) {
displayType = ( document.getElementById( nummer ).style.display == 'none' ) ? 'block' : 'none';
document.getElementById( nummer ).style.display = displayType;
}

-->
</script>

</head>
<body>

<a href="javascript:swap_content('1');">anzeigen</a>
<div id="1" style="display: none;">Hallo, hier steht Text!</div>

</body>
</html>Ist zwar nur ein kleiner Auszug aus meinem vollständigen Javascript, reicht aber wohl erstmal. Jeder Container muss allerdings eine ID haben. Kannst ja aber ohne Probleme mit PHP durchnummerieren. Was auch wichtig ist. Wenn du die Links dynamisch erstellst, musst du die Hochkommas in der runden Klammer mit einem Backslash markieren.

Sphinx
2005-08-10, 01:02:13
der code oben wird so geparsed da gibt es keine errors. vllt was falsch eingefügt?

echo hört nach dem dem letztem div auf.

echo '<div class="spoiler">';
echo '<a class="spoiler" onclick="if this.parentNode.parentNode.getElementsByTagName(';
echo "'div'";
echo ")[1].style.display != '') {";
echo ' this.parentNode.parentNode.getElementsByTagName(';
echo "'div'";
echo ")[1].style.display = ''; } else {";
echo ' this.parentNode.parentNode.getElementsByTagName(';
echo "'div'";
echo ')[1].style.display = ';
echo "'none'; }; return false;";
echo '" href="#">';
echo $topictitle;
echo '</a>';
echo '<div style="display: none">';
echo '<div class="alt1" style="padding:8px">';
echo $post;
echo '</div>';




Das sollte laufen ^^ zumindest gibt er SO keinen error aus bei mir.

MadMan2k
2005-08-10, 01:08:58
<a class="spoiler" onclick="if (this.parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display != '

geht aber auch rein über CSS
http://www.twisty.com/misc/tests/css/target-trick.html#a

im ff zumindest ;)

Gast
2005-08-10, 01:22:45
ff allein bringt gelinde gesagt garnix aber thx4the info.

$forumid = '57';
mysql_connect ($dbhost, $dbusername, $dbpassword);
mysql_select_db ($dbname);
$topics = mysql_query ("select* from ibf_topics where forum_id=".$forumid." order by title asc");
$postcount = mysql_num_rows($topics);
for ($i=0; $i <$postcount; $i++)
{
$topicrow = mysql_fetch_array($topics);
$titleid = $topicrow["tid"];
$topictitle = ($topicrow["title"]);
$postq = mysql_query ("SELECT * FROM `ibf_posts` where topic_id = ".$titleid." order by post_date");
$postfetch = mysql_fetch_array($postq);
$post = $postfetch["post"];
echo '
<div>
<a onclick="if (this.parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display != \'\') { this.parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display = \'\'; } else { this.parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display = \'none\'; }; return false;" href="#">'.$topictitle.'</a>
</div>
<div style="display: none">
<div style="padding:8px">
'.$post.'
</div>';
}?>

so kommt er mittlerweile etwas weiter. das script guhzt wie es soll. Nur die automatische auflistung der topics nicht. Also er zeigt nur einen Thread an statt alle.

Gast
2005-08-10, 01:25:52
http://www.metalforen.org/reviews/index2.php
http://www.metalforen.org/reviews/index.php

Ums mal anschaulicher zu machen,
eine liste wie beim 2ten allerding mit dem aufklappen vom ersten.

Das ist mein Ziel

Skullcleaver
2005-08-10, 01:55:03
echo '
<div>
<a onclick="if (this.parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display != \'\') { this.parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display = \'\'; } else { this.parentNode.parentNode.getElementsByTagName(\'div\')[1].style.display = \'none\'; }; return false;" href="#">'.$topictitle.'</a><br/>
<div style="display: none">
<div style="padding:8px">'.$post.'</div></div></div>';
}?>
</div>

so mal wieder am zweitem rechner... Die Auflistung funzt nu auch. Allerdings klappt er immer das erste auf egal welches man klickt.

Gast
2005-08-10, 04:05:16
<div>
<span onClick="document.getElementById('.$titleid.').style.display = \'block\';">'.$topictitle.'</span><br/>
<div id="'.$titleid.'" style="display: none"><p>'.$post.'</p></div></div>';
mal ein ganz anderer Ansatz. Funktionier auch jut. Nur bräcuht ich jetzt nen toggle um das ganze wieder "einzufahren"....

Nase
2005-08-10, 11:26:11
<div>
<span onClick="document.getElementById('.$titleid.').style.display = \'block\';">'.$topictitle.'</span><br/>
<div id="'.$titleid.'" style="display: none"><p>'.$post.'</p></div></div>';
mal ein ganz anderer Ansatz. Funktionier auch jut. Nur bräcuht ich jetzt nen toggle um das ganze wieder "einzufahren"....
Macht mein Code von oben doch auch.