2012-02-21 44 views
0

我只想问一个更好的主意。情景是这样的: 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>"; 
     } 
    } 
    ?> 

回答

0

您正在设置一个$_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] 
+0

我做了什么,你的建议和它不是现在overwritting,但弹出的窗口中仍然没有获得所需的数据。仍然有未定义的变量它 – N3R0 2012-02-21 11:11:46

+0

你如何读取那里的数据?你如何将变量传递给弹出窗口?函数DoNav()做了什么 – 2012-02-21 11:14:47

+0

'function DoNav(row_id) { window.open(“reply.php”,“myWindow”,“status = 1,height = 300,width = 555,resizable = 0”) }' – N3R0 2012-02-21 11:32:35