我想知道是否有人可以帮助我。
我正在使用以下代码创建一个表格,列出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
条记录相关。
我一直试图对此进行排序已有一段时间了,尽管有很多页面重写,但我还是找不到解决方案。
我只是想知道是否有人可以看看这个,让我知道我错在哪里。
答案 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一样。这是一个假设,因为我看不到它们表现为变量。相反,他们是字符串。看看吧。