Javascript弹出窗口仅显示PHP查询中的最后一个结果

时间:2014-01-27 08:22:41

标签: javascript php mysql while-loop

我有以下代码块,我不知道如何做我想做的事。

本质上我希望javascript弹出窗口显示该行的值,但(显然)它只显示最后一行数据,因为没有为每一行设置弹出窗口,而是在单击时调用该变量。

任何帮助将不胜感激!

<?php
$result = mysql_query("SELECT hr_overtime.overtime_id, hr_user.name, hr_overtime.overtime_date, hr_overtime.overtime_type, hr_overtime.overtime_from, hr_overtime.overtime_to, hr_overtime.overtime_amount, hr_overtime.details
FROM hr_overtime 
inner join hr_user
on hr_user.user_id = hr_overtime.user_id
where hr_overtime.overtime_status = 'Pending' order by hr_overtime.overtime_date ASC");
echo "
<table border='0'>
<tr>
<th class='tablecell_header'>Consultant</th>
<th class='tablecell_header'>Date</th>
<th class='tablecell_header'>Type</th>
<th class='tablecell_header'>From</th>
<th class='tablecell_header'>To</th>
<th class='tablecell_header'>Amount</th>
<th> </th>
<th> </th>
<th> </th>
</tr>";
while($row = mysql_fetch_array($result))
  {
  $work = $row['details'];
  echo "<tr>";
    echo "<td class='tablecell'>" . $row['name'] . "</td>";
    echo "<td class='tablecell'>" . $row['overtime_date'] . "</td>";
    echo "<td class='tablecell'>" . $row['overtime_type'] . "</td>";
    echo "<td class='tablecell'>" . $row['overtime_from'] . "</td>";
    echo "<td class='tablecell'>" . $row['overtime_to'] . "</td>";
    echo "<td class='tablecell'>" . $row['overtime_amount'] . "</td>";?>
    <td class='tablecell'> <button onclick="myFunction()">Show work</button>         </td><script>
function myFunction()
{
alert("<?php echo $work;?>");
}
</script>
        <?php
    echo "<td valign='middle'><form action='manager_overtime_approve.php'     method='post'>
<input name='approve_id' type='hidden' value='" . $row['overtime_id'] . "' />
<input type='submit' value='APPROVE' id='edit' />
</form></td>";
    echo "<td valign='middle'><form action='manager_overtime_reject.php' method='post'>
<input name='cancel_id' type='hidden' value='" . $row['overtime_id'] . "' />
<input type='submit' value='REJECT' id='edit' />
</form></td>";
 echo "</tr>";
  } 
    echo "</table>";
?>

5 个答案:

答案 0 :(得分:1)

您无需使用错误的单独功能。您可以简单地使用内联警报:

<td class='tablecell'> <button onclick="alert('<?php echo $work;?>');">Show work</button>

答案 1 :(得分:1)

你不能在你的foreach循环中插入myFunction()的声明,这样你就可以覆盖行为所显示的每个条目,因此它只适用于最后一行。

一个快速解决方案是将整个$ work变量作为onclick函数的参数插入,例如。

<td class='tablecell'> <button onclick="myFunction('<?php echo $work ?>')">Show work</button>

然后在foreach循环之外,您可以定义myFunction,例如:

function myFunction(details){
  alert(details)
}

答案 2 :(得分:0)

我认为,在结果HTML中,你有myFunction()的多个定义,而javascript只使用最后一个。您可以使用HTML标记属性来显示正确的信息。

答案 3 :(得分:0)

试试这个

$work .= $row['details'];

并将javascript设置为循环
祝你好运

答案 4 :(得分:0)

那是因为myFunction是一个 Javascript 函数,它被定义为一次并且与PHP共享相同的范围。所以$work只保留最后一个值。

我建议这样的事情:

echo "<tr data-detail-value='$work'>";
...
<td class='tablecell'> <button onclick="myFunction(this)">Show work</button>
...
function myFunction(btn) {
   alert(btn.parentNode.parentNode.getAttribute("data-detail-value"));
}