2009-06-22 31 views
1

我有我的PHP中的問題。我在這裏要做的是,我有一個.html,它指向一個外部.js和這個js文件打開一個.php php從mysql表和xml中提取數據,並在網頁上顯示數據, (以表格行的.html格式)。現在,當用戶點擊任何行,我想在PHP會打開一個新的窗口,我想顯示來自同MySQL和XML一些關於它的更多的數據(新視窗)使用php打開一個新窗口,並顯示該數據

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文件中打開顯示功能,但如果我使用echo "<td onclick=".show()."... ",它將在php中打開該功能,但不具有onclick功能。

我不知道是否能夠在這裏清楚地解釋我的問題,但如果您可以幫助我,請這樣做。

回答

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圖層可以在沒有附加窗口的情況下獲得類似的效果。如果你願意,我可以發表一個這樣的例子。

+0

非常感謝你這麼詳細的回答達斯汀。 我正在嘗試使用該代碼。但它仍然給出了一個錯誤: 失蹤)在參數列表 它也給出了同樣的錯誤之前。 – 2009-06-22 17:56:06

2

您可能可以使用YUI創建隱藏的浮動對話框,幷包含「摘要」的數據。默認隱藏頁面上所有項目的所有摘要。您的js show功能可以將用戶點擊該項目時YUI元素設置爲可見。你甚至不需要打開一個新的瀏覽器窗口。

0

就像上面說的,你會想要使用一個JavaScript模式窗口來顯示內容。您可以(通過大多數模態窗口)在模式窗口中使用PHP代碼,從而允許您使用相同的MySQL和XML,但作爲服務器端技術的PHP無法在不刷新頁面或完全打開新頁面的情況下打開新窗口。

如果您使用jQuery(我推薦),我會建議Facebox作爲一個偉大的,lightbox風格的模式窗口,您可以輕鬆使用,甚至可以自定義自己。

希望這會有所幫助。