我目前有一个页面,它在表格中显示来自我的数据库的数据,并且还可以使用一些关键术语进行搜索。我想要做的是隐藏表,除非它被搜索。我已经改写了我的代码,因为这是一项任务,我不希望它被抄袭为抄袭。我真的希望有人知道这样做的方法
<?php
include_once('connection.php');
$SQL = "SELECT * FROM `players`";
if (isset($_POST['search'])) {
$search_word = mysql_real_escape_string($_POST['search_bar']);
$SQL .= " WHERE player_id LIKE '%{$search_word}%'";
$SQL .= " or player_name LIKE '%{$search_word}%'";
}
$SQL .= 'group by player_id, player_name order by player_id ASC';
if( !( $SQLRes = mysql_query( $SQL ) ) ){
echo 'Retrieval of data from Database Failed - #'.mysql_errno().': '.mysql_error();
}else{
if( mysql_num_rows( $SQLRes )==0 ){
echo '<tr><td colspan="1">No results </td></tr>';
}else{
$current_player_id = false;
while( $row = mysql_fetch_assoc( $SQLRes ) ){
if ($row['player_id'] !=$current_player_id) {
if ($current_player_id !== false)
echo '</table>';
echo '
<h4>'.$row['player_id'].'</h4>
<table style = "width: 100%" class="listing" cellpadding="0" cellspacing="0">
<tr>
<th style="width: 50%">Player Name</th>
</tr>';
$current_player_id = $row['player_id'];
}
echo '<tr>
<td>'.$row['player_name'].'</td>
<td><a href =delete.php?del='.$row['player_id'].'><strong>DELETE<strong/></a></td>
</tr> ';
}
}
echo '</table>';
?>
</table>
答案 0 :(得分:1)
一开始你用if语句打开:
if (isset($_POST['search'])) {
$search_word = mysql_real_escape_string($_POST['search_bar']);
$SQL .= " WHERE player_id LIKE '%{$search_word}%'";
$SQL .= " or player_name LIKE '%{$search_word}%'";
}
在我看来,检查$_POST
变量是否告诉您是否有搜索。
if
只需要包含整个代码体,它就应该做你正在寻找的东西。
也就是说,代码中的其他地方有一些小问题 - 请采取正确的方式 - 以帮助和指导......
1 - 不要在SQL中构建“like”语句,而是查看绑定变量。另外,请查看mysqli
用法示例。
2 - 不要回显你的代码,而是考虑构建一个$ html字符串,然后在最后回显。
3 - 看起来您正在编写SQL select以返回同一玩家的多个实例。这表明数据模型中存在缺陷(表格毕竟称为player
),或者在SELECT中 - 为什么不回到不同的行。
4 - 将SQL错误回送到控制台是一种很好的方式,可以让外部人员访问有关系统的受保护信息。请考虑记录到文件 - 至少在生产中。
5 - 我已经纠正了你的缩进。学习如何使用它,如果你正确缩进代码,它会多次拯救你的大脑。