1

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

我正在使用下面的代码创建一个表,其中列出location recordscurrent 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该按钮将用户带到下面列出的另一个页面。

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

表中当前有 3location条记录是正确的,当单击按钮时,用户会被带到正确的屏幕。

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

很长一段时间以来,我一直在尝试对此进行排序,尽管重写了许多页面,但我一直无法找到解决方案。

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

4

2 回答 2

1

在互联网上花了相当长的时间研究这个问题后,我在这里找到了解决方案。然后我可以编辑它以满足我对以下脚本的需要:

<?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"; 


                    }
                    ?>
于 2012-07-08T10:48:07.563 回答
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。这是一个假设,因为我看不到它们的行为是可变的。相反,它们是字符串。看看吧。

于 2012-07-06T13:57:03.803 回答