向表行添加按钮,该行链接到该行上的数据

时间:2012-07-06 13:51:44

标签: php html button html-table row

我想知道是否有人可以帮助我。

我正在使用以下代码创建一个表格,列出location records的{​​{1}}。

current user

您会看到每行都有一个按钮,可以通过下面列出的<form name="locationsconsole" id="locationsconsole" method="post" action="locationsaction.php"> <table width="865"> <tr> <th width="22"></th> <th width="236"><div align="left">Location Name</div></th> <th width="244"><div align="left">Location Address</div></th> <th width="71"></th> </tr> <?php $query = "SELECT l.*, COUNT(f.locationid) totalfinds FROM detectinglocations l LEFT JOIN finds f ON f.locationid = l.locationid WHERE l.userid = '$idnum' GROUP BY l.locationname"; $result = mysql_query($query) or die('error'); while($obj=mysql_fetch_object($result)) { ?> <tr> <td><input type="hidden" name="lid" value="<?php echo $obj->locationid;?>"/></td> <td><?php echo $obj->locationname;?></td> <td><?php echo $obj->returnedaddress;?></td> <td><input name="type" type="submit" value="View Details"/></td> </tr> <?php } ?> </table> </form> 将用户带到另一个页面。

locationsaction.php

目前表中有3条<?php session_start(); $_SESSION['lid'] = $_POST['lid']; if (isset($_POST['type'])) { $urls = array( 'View Details' => 'viewlocation.php' ); $url = $urls[$_POST['type']]; header("Location: " . $url); } ?> 条记录是正确的,当点击按钮时,用户将被带到正确的屏幕。

但是,我遇到的问题是,无论我点击哪一行按钮,检索到的记录始终与最后location条记录相关。

我一直试图对此进行排序已有一段时间了,尽管有很多页面重写,但我还是找不到解决方案。

我只是想知道是否有人可以看看这个,让我知道我错在哪里。

2 个答案:

答案 0 :(得分:1)

经过相当长的一段时间在互联网上研究这个问题后,我找到了解决方案here。然后我能够编辑它以满足我对以下脚本的需求:

<?php

                    $query = "SELECT  l.*, COUNT(f.locationid) totalfinds FROM detectinglocations l LEFT JOIN finds f ON f.locationid = l.locationid WHERE l.userid = '$idnum' GROUP BY l.locationname";
                    $result = mysql_query($query) or die('error');
                    $row = mysql_fetch_assoc($result);              
                    extract($row); 

                    /* Display Users in a table */ 
                    echo "<table cellspacing='5' border='0' cellpadding='0' width=95%>"; 
                    echo "<tr><td colspan='0' style='text-align: Left'></td></tr>\n"; 
                    echo "<tr><td style='font-weight: bold; 
                        font-size: 1.0em'>Location</td><td style='font-weight: bold; 
                        font-size: 1.0em'>Address</td><td style='font-weight: bold;  
                        font-size: 1.0em'>Finds Made</td></tr>\n";
                    mysql_data_seek($result, 0);

                    while($row = mysql_fetch_array($result))
                    {


                    /* display row for each user */ 
                        echo "<tr>\n"; 
                        $theID = $row['locationid']; 
                        echo " <td>{$row['locationname']}</td>\n"; 
                        echo " <td>{$row['returnedaddress']}</td>\n"; 
                        echo " <td>{$row['totalfinds']}</td>\n"; 
                        echo " <td><form action= locationsaction.php  method= 'post'><input type='hidden' name='lid' value=$theID />
                                    <input type= 'submit' name= 'type' value= 'View/Amend Location Details'/><input type= 'submit' name= 'type' value= 'Add/View Find Images'/><input type= 'submit' name= 'type' value= 'View Location Finds'/><input type= 'submit' name= 'type' value= 'View Location Finds'/></form></td>\n"; 
                        echo "</tr>\n"; 


                    }
                    ?>

答案 1 :(得分:0)

查看您的查询。由于您已经硬化了查询

$query = "SELECT  l.*, COUNT(f.locationid) totalfinds FROM detectinglocations l LEFT JOIN finds f ON f.locationid = l.locationid WHERE l.userid = '27' GROUP BY l.locationname";

与位置ID和用户ID一样。这是一个假设,因为我看不到它们表现为变量。相反,他们是字符串。看看吧。