2012-06-27 68 views
0

我想知道是否有人能够帮助我。会话变量不再工作

我觉得我需要一双新鲜的眼睛来看看我有一个我看不到解决方案的问题。

下面的表格用于列出保留在MySQL数据库中的Location records

<form name="locationsconsole" id="locationsconsole" method="post" action="locationsaction.php"> 

            <?php 

             $query = "SELECT * FROM `table` WHERE `userid` = '$idnum' ORDER BY locationname"; 
             $result = mysql_query($query) or die('error'); 
             $num = mysql_numrows($result); 
             mysql_close($connect);     
             $i=0; 
             while ($i < $num) { 
             $lid=mysql_result($result,$i,"locationid"); 
             $lname=mysql_result($result,$i,"locationname"); 
             $laddress=mysql_result($result,$i,"returnedaddress"); 

          <tr> 
           <td><input type="text" id="lid" name="lid" value="<?=$lid?>"/></td> 
           <td><div align="center"><?php echo $lname;?></div></td> 
           <td><div align="left"><?php echo $laddress;?></div></td> 
           <td><div align="center"><?php echo $findscount?></div></td> 
           <td><div align="center"><input name="type" type="submit" value="View Details"/></div></td> 
           <td><div align="center"><input name="type" type="submit" value="Add Finds"/></div></td> 
           <td><div align="center"><input name="type" type="submit" value="Add Images"/></div></td> 
           <td><div align="left"><input name="type" type="submit" value="View Location Finds"/></div></td> 
          </tr> 

    </form> 

用下面的代码,在我的形式结束时的四个按钮将用户带到四个独立的屏幕,经由$lid variable所有链接回Location record。因此

<?php session_start(); 
$_SESSION['lid'] = $_POST['lid']; 
if (isset($_POST['type'])) { 
    $urls = array(
     'View Details' => 'viewlocation.php', 
     'Add Finds' => 'addfinds.php', 
     'Add Images' => 'addimages.php', 
     'View Location Finds' => 'locationfinds.php' 
    ); 
    $url = $urls[$_POST['type']]; 
    header("Location: " . $url); 
} 
?> 

所有的四个接收形式具有此$lid = $_SESSION['lid'];在每一页的顶部,以捕捉该变量。

这个架构在几天前完美运行,现在它全部出错,我不知道为什么。我知道我的表单中的这个字段<input type="text" id="lid" name="lid" value="<?=$lid?>"/>保持了正确的值。

但是,无论有多少个Locations records,如果我点击任何按钮,我都会将其带到正确的接收屏幕,但始终是列表中的最后一个“位置”记录。

我只是似乎无法找到我在这里做错了什么,或者明白为什么它现在开始导致我的问题。我已经在Chrome中检查了JavaScript控制台,这也没有显示任何错误。

我只是想知道是否有人可以看看这个请让我知道我要去哪里错了。

非常感谢和亲切的问候

+2

'$ num = mysql_numrows($ result);'???该函数被称为'mysql_num_rows()' –

+1

另外,您正在通过'mysql_close()'关闭连接,然后检索任何行。 –

+0

嗨@迈克尔,谢谢你帮助我。我已经对代码进行了修改,以了解会发生什么,并且不幸的是问题仍然在发生。非常感谢和问候 – IRHM

回答

1

您所有的 “盖子” 的投入是相同的形式。当你提交你的表单时,所有的值都被发送,只有最后一个进入你的$ _POST数组。将表单标签移动到你的循环内部(这意味着生成很多表单),它应该可以正常工作。

<?php 

$query = "SELECT * FROM `table` WHERE `userid` = '$idnum' ORDER BY locationname"; 
$result = mysql_query($query) or die('error'); 
$num = mysql_num_rows($result); 
mysql_close($connect); 
$i = 0; 
while ($i < $num) { 
    $lid=mysql_result($result,$i,"locationid"); 
    $lname=mysql_result($result,$i,"locationname"); 
    $laddress=mysql_result($result,$i,"returnedaddress"); 

    ?><form name="locationsconsole" id="locationsconsole" method="post" action="locationsaction.php"> 
     <table> 
      <tr> 
       <td><input type="text" id="lid" name="lid" value="<?=$lid?>"/></td> 
       <td><div align="center"><?php echo $lname;?></div></td> 
       <td><div align="left"><?php echo $laddress;?></div></td> 
       <td><div align="center"><?php echo $findscount?></div></td> 
       <td><div align="center"><input name="type" type="submit" value="View Details"/></div></td> 
       <td><div align="center"><input name="type" type="submit" value="Add Finds"/></div></td> 
       <td><div align="center"><input name="type" type="submit" value="Add Images"/></div></td> 
       <td><div align="left"><input name="type" type="submit" value="View Location Finds"/></div></td> 
      </tr> 
     </table> 
    </form><?php 
} 
+0

嗨@DonatasOlsevičius,我很抱歉有点慢,在这里,但我相对较新。你能否详细说明一下更多的答案,告诉我需要移动表单标签的位置?非常感谢和亲切的问候 – IRHM

+0

用您需要的代码更新了我的文章。 –

+0

嗨@DonatasOlsevičius,非常感谢你。我已经修改了我的代码,根据你的建议,不幸的是,不是所列的位置,而是一个屏幕上的错误,它只是说'错误'。非常感谢和亲切的问候 – IRHM

1

你有一个错字:

'mysql_numrows'

应该是:

'mysql_num_rows'

+0

Hi @ maxhud。感谢您帮助我。我已经做出了改变,但不幸的是我仍然有同样的问题。亲切的问候和感谢。 – IRHM