我只是想寻求一个更好的想法。场景是这样的:1.在可单击的表格行上显示消息。如果消息已被读取,则无法单击该行2.点击后,将打开一个用于回复消息的弹出窗口。当窗口关闭时,页面应该刷新。
问题是我只能得到最后一行的数据。会话变量似乎被覆盖了。
<?php
//Display Messages Starts Here
$msg = "SELECT * FROM messages WHERE sid=". $_SESSION['SESS_SERVICE_ID'] ."";
$resulta = mysql_query($msg)or die(mysql_error());
while($row = mysql_fetch_array($resulta))
{
if($row['status']=='deleted'){
echo "<tr bgcolor=#AAAAAA>";
echo "<td>" . date("Y-m-d",strtotime($row['stamp'])) . "</td>";
echo "<td>" . $row['msisdn'] . "</td>";
echo "<td width=100%>" . $row['data'] . "</td>";
echo "</tr>";
}
else{
// id like to use this to a popup form for reply
echo "<tr onmouseover='ChangeColor(this, true);'
onmouseout='ChangeColor(this, false);'
onclick='"DoNav();'">";
echo "<td>" . date("Y-m-d",strtotime($row['stamp'])) . "</td>";
echo "<td>" . $row['msisdn'] . "</td>";
$_SESSION['SESS_MSG_ID'] = $row['id'];
$_SESSION['SESS_MSG_DATA'] = $row['data'];
echo "<td width=100%>" . $row['data'] . "</td>";
$_SESSION['SESS_MSG_NUM'] = $row['msisdn'];
echo "</tr>";
}
}
?>
您正在设置一个$_SESSION
变量,每次都会覆盖此变量。
你最好把它存储在一个数组中,比如:
$_SESSION[$row['id']]['SESS_MSG_DATA'] = $row['data'];
然后将onClick更改为:
onclick='"DoNav(".$row['id'].");
当然,在DoNav功能中:
function DoNav(row_id){
window.open( "reply.php?id="+row_id, "myWindow", "status = 1, height = 300, width = 555, resizable = 0" );
}
然后在reply.php中,用$_GET['id'];
获取ID,并从会话中获取数据,如下所示:
$_SESSION[$_GET['id']]['SESS_MSG_DATA'];
除了SESS_MSG_DATA,您还可以将它们全部存储在此阵列中:
$_SESSION[$row['id']][ANY VARIABLE HERE]