我的php有问题。我在这里要做的是,我有一个.html指向外部.js和这个js文件打开一个.php php从mysql表和xml中提取数据并在网页上显示数据(以.html格式表格行)。现在,当用户点击任何一行时,我希望php应该打开一个新窗口,我想要显示来自同一个mysql和xml的更多数据(新窗口)
for($k=0;$k<=$x->length-1;$k++)
{
for($l=0;$l<=$j-1;$l++)
{
if($y->item($k)->nodeValue==$JobNoArr[$l])
{
$m++;
if ($m%2==0)
{$a="#A5ADEA";}
else
{$a="#D1D1D3";}
//form_html1+="<tr onclick='show(" + x + ")' bgcolor="+ y +">";
echo "<tr bgcolor=". $a .">";
echo "<td>" . $m . "</td>";
echo "<td>" . ($y->item($k)->nodeValue) . "</td>";
echo "<td>" . ($TitleArr[$l]) . "</td>";
echo "<td onclick=show(".$u->item($k)->nodeValue.")><i><font size=2>Click for Abstract</font></i></td>";
echo "<td>" . $uu . "</td>";
echo "</tr>";
}
}
}
如果我使用echo "<td onclick=show() "
,它会在.js
文件中打开show函数,但如果我使用echo "<td onclick=".show()."... "
,它会在php本身打开该函数但没有onclick功能。
我不知道是否能够在这里清楚地解释我的问题,但是如果你可以帮助我,请这样做。
答案 0 :(得分:2)
您可以使用YUI创建隐藏的浮动对话框,并包含“摘要”的数据。默认隐藏页面上所有项目的所有摘要。您的js show函数可以在用户单击项目时将YUI元素设置为可见。您甚至不需要打开新的浏览器窗口。
答案 1 :(得分:2)
你不想实际上“在PHP中执行此操作”,你将使用JavaScript来实现。 PHP是一种服务器端技术,您想要做的事情需要在客户端(浏览器)上进行。你可以通过几种不同的方式来解决这个问题。我在下面概述的方法只使用很少的JavaScript。
首先,您需要重写onClick
,如下所示:
echo "<td onClick=\"return show('".$u->item($k)->nodeValue."');\"><i><font size=2>Click for Abstract</font></i></td>";
我们将使用window.open
函数实际弹出一个新窗口 - 这将要求您创建一个新的PHP脚本,该脚本可以显示您想要显示的数据,给定指定的行ID或某些其他标识符。在这种情况下,您的show
函数将是这样的:
我已经更新了以下示例,以便从PHP中输出
echo "
<script type=\"text/javascript\">
<![CDATA[
function show(rowid, arrno) {
window.open(
'showAbstract.php?rowid='+rowid+'&rowid2='+arrno, // the url to the php script
'somenameforthewindow', // some name for the window
'status=0,width=100,height=100' // display options for the window
);
return false;
}
]]>
</script>";
您的PHP页面应该抓取$_GET['rowid']
参数,查找相应的数据,并按照您希望的方式格式化/打印它。
您实际上可以将所有数据嵌入到JSON中,并使用DHTML和CSS图层来获得类似的效果而无需额外的窗口。如果您愿意,我可以发布一个例子。
答案 2 :(得分:0)
如上所述,您希望使用javascript模式窗口来显示内容。您可以(无论如何使用大多数模态窗口)在模态窗口中使用PHP代码,允许您使用相同的MySQL和XML,但PHP作为服务器端技术无法在不刷新页面或完全打开新页面的情况下打开新窗口
如果您使用jQuery(我推荐),我会建议Facebox作为一个很棒的灯箱式模态窗口,您可以轻松使用,甚至可以自定义。
希望这有帮助。