使用MySql Fetch Array和Ajax创建可点击链接

时间:2011-06-20 07:38:12

标签: php mysql while-loop

我试图在while循环中使用mysql_fetch_array的特定数值结果来执行Javascript函数(Ajax)。我的PHP代码的基本片段如下:

while ($data = mysql_fetch_array($result)) 
{
$link = $data['id']; //example results will be 12345
echo '<span id="val" onclick="goto()">'.$link.'</span>'; //lists 12345, and makes each clickable
}

我的部分Javascript代码如下:

function goto(str)
{
   Ajax...
   var idval = document.getElementById('val').innerHTML; //grabs 1,2,3,4, or 5 based on which number was clicked
   Ajax...
}

我在这里要做的是从MySql查询多个记录,使用while循环列出结果,使每个结果可单击,并将内部html传递给Ajax的变量。

我的问题是当我单击while循环列表中的任何结果时,我只传递了mysql fetch数组的第一个结果。例如,while循环将列出12345.当我尝试单击3时,我得到1作为内部html;当我尝试点击5时,我得到1作为内部html;等等......总是得到第一个结果,即1。

我尝试了破解和爆炸mysql fetch数组,但是内部html总是最终成为数组结果的第一行。我需要以某种方式分解数组,以便每一行都是独立的,不仅仅是在视觉上,而是以编程方式,所以我可以使用getElementById.innerHTML来获取它。

我非常感谢任何人的帮助。您的建议和希望答案将真正有助于使我的PHP项目更有用。

2 个答案:

答案 0 :(得分:1)

您的问题是您在span元素中使用id =“val”。所以你只能获得第一个元素。所以你最终会得到第一个跨度的内部html。

最简单的解决方案是将id值作为参数传递给goto函数调用。

更新:你可以修改你的功能如下:

function goto(link)
{
    Ajax...
    var idval = link;
    Ajax...
}

答案 1 :(得分:1)

首先,将您的php脚本更改为:

while ($data = mysql_fetch_array($result)) 
{
    $link = $data['id']; //example results will be 12345
    echo '<span id="val'.$link.'" onclick="goto('.$link.')">'.$link.'</span>';
}

然后,使用以下javascript代码:

function goto(link)
{
    Ajax...
    var idval = document.getElementById('val'+link).innerHTML; 
    Ajax...
}

但我不确定str在您的javascript代码中的含义以及为什么函数goto接受1个参数(str)而没有参数调用onclick="goto()" )。