Php 将sql表结果限制为仅选定内容
我觉得我很快就能弄明白这一点,但就是无法缩小差距。我有一个从SQL数据库中提取的列表,我希望能够从列表中选择一项,并且只显示表所连接的信息。除了列表中的所有项目都在拉,而不仅仅是选中的项目外,所有项目都在拉Php 将sql表结果限制为仅选定内容,php,mysql,database,html-table,Php,Mysql,Database,Html Table,我觉得我很快就能弄明白这一点,但就是无法缩小差距。我有一个从SQL数据库中提取的列表,我希望能够从列表中选择一项,并且只显示表所连接的信息。除了列表中的所有项目都在拉,而不仅仅是选中的项目外,所有项目都在拉 <form action="#" method="post"> <table class="table"> <thead>Martial Weapon Name</thead> <t
<form action="#" method="post">
<table class="table">
<thead>Martial Weapon Name</thead>
<tr>
<th>
<select name="Choosen">
<?php
echo'<option>Select Weapon</option>';
//Check if at least one row is found
if($result->num_rows >0){
//Loop through results
while($row = $result->fetch_assoc()){
//Display weapon info
$output = $row['weapon_name'];
echo '<option>'.$output.'</option>';
}
}
?>
</select>
</th>
</tr>
</table>
<input class="btn btn-default" type="submit" name="submit" value="Generate">
<h3>Weapon</h3>
<table class="table table-striped">
<tr>
<th>Weapon Name</th>
<th>Weapon Type</th>
<th>Damage</th>
</tr>
<?php
$choose= "SELECT
weapon_types_martial.id,
weapon_types_martial.weapon_name,
weapon_types_martial.weapon_type,
weapon_types_martial.weapon_damage
FROM weapon_types_martial";
$result = $mysqli->query($choose) or die($mysqli->error.__LINE__);
if(isset($_POST['submit'])){
$selected_weapon = $_POST['Choosen'];
while($list = $result->fetch_assoc()){
//Display weapon
$show ='<tr>';
$show .='<td>'.$list['weapon_name'].'</td>';
$show .='<td>'.$list['weapon_type'].'</td>';
$show .='<td>'.$list['weapon_damage'].'</td>';
$show .='</tr>';
//Echo output
echo $show;
}
}
?>
</form>
武名
武器
武器名称
武器类型
损坏
上面是表单和表的代码。同样,一切都在运转。数据库正在连接和调出一切很棒的东西。我唯一要做的就是确保输出的数据只是从下拉列表中选择的项目
下面是列表的屏幕截图。我目前在数据库中只有3项(故意的)。所以我选择了战斧而不是战斧线,3个都出现了
编辑1
根据要求,这里是完整的代码页。整个页面都在工作,数据库正在连接等等。只是输出不是放置1个选定的武器。根据之前建议的一些更改,我完全停止将武器输入表中,因此为了清晰起见,我发布了最初列出的页面代码
<?php
include('includes/database.php'); ?>
<?php
//Create the select query
$query = "SELECT
weapon_types_martial.id,
weapon_types_martial.weapon_name,
weapon_types_martial.weapon_type,
weapon_types_martial.weapon_damage
FROM weapon_types_martial
ORDER BY weapon_name";
//Get results of query
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">
<title>App Test | Weapons</title>
<!-- Bootstrap core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<style type="text/css"></style>
</head>
<body>
<div class="site-wrapper">
<div class="site-wrapper-inner">
<div class="cover-container">
<div class="masthead clearfix">
<div class="inner">
<h3 class="masthead-brand">Cover</h3>
<nav>
<ul class="nav masthead-nav">
<li><a href="index.php">Front Page</a></li>
<li class="active"><a href="weapons.php">Weapons</a></li>
<li><a href="armor.php">Armor</a></li>
<li><a href="consumables.php">Consumables</a></li>
</ul>
</nav>
</div>
</div>
<form action="#" method="post">
<table class="table">
<thead>Martial Weapon Name</thead>
<tr>
<th>
<select name="Choosen">
<?php
echo'<option>Select Weapon</option>';
//Check if at least one row is found
if($result->num_rows >0){
//Loop through results
while($row = $result->fetch_assoc()){
//Display weapon info
$output = $row['weapon_name'];
echo '<option>'.$output.'</option>';
}
}
?>
</select>
</th>
</tr>
</table>
<input class="btn btn-default" type="submit" name="submit" value="Generate">
<h3>Weapon</h3>
<table class="table table-striped">
<tr>
<th>Weapon Name</th>
<th>Weapon Type</th>
<th>Damage</th>
</tr>
<?php
$choose= "SELECT
weapon_types_martial.id,
weapon_types_martial.weapon_name,
weapon_types_martial.weapon_type,
weapon_types_martial.weapon_damage
FROM weapon_types_martial";
$result = $mysqli->query($choose) or die($mysqli->error.__LINE__);
if(isset($_POST['submit'])){
$selected_weapon = $_POST['Choosen'];
while($list = $result->fetch_assoc()){
//Display weapon
$show ='<tr>';
$show .='<td>'.$list['weapon_name'].'</td>';
$show .='<td>'.$list['weapon_type'].'</td>';
$show .='<td>'.$list['weapon_damage'].'</td>';
$show .='</tr>';
//Echo output
echo $show;
}
}
?>
</form>
</div>
</div>
</div>
</div>
</div>
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="../../assets/js/vendor/jquery.min.js"><\/script>')</script>
<script src="../../dist/js/bootstrap.min.js"></script>
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<script src="../../assets/js/ie10-viewport-bug-workaround.js"></script>
应用程序测试|武器
掩护
武名
武器
武器名称
武器类型
损坏
window.jQuery | | document.write(“”)
以上代码的结果显示在上面的屏幕截图中。下拉列表显示了正确的武器列表,但是我希望能够选择其中一种武器,点击生成,并且在下表中只显示一种选定的武器。现在它正在显示列表中的所有武器,而不仅仅是选定的武器。它应该可以工作:
<form action="#" method="post">
<table class="table">
<thead>Martial Weapon Name</thead>
<tr>
<th>
<select name="Choosen">
<?php
echo'<option>Select Weapon</option>';
//Check if at least one row is found
if($result->num_rows >0){
//Loop through results
while($row = $result->fetch_assoc()){
//Display weapon info
$output = $row['weapon_name'];
echo '<option>'.$output.'</option>';
}
}
?>
</select>
</th>
</tr>
</table>
<input class="btn btn-default" type="submit" name="submit" value="Generate">
<h3>Weapon</h3>
<table class="table table-striped">
<tr>
<th>Weapon Name</th>
<th>Weapon Type</th>
<th>Damage</th>
</tr>
<?php
$choose= "SELECT
weapon_types_martial.id,
weapon_types_martial.weapon_name,
weapon_types_martial.weapon_type,
weapon_types_martial.weapon_damage
FROM weapon_types_martial";
$result = $mysqli->query($choose) or die($mysqli->error.__LINE__);
if(isset($_POST['submit'])){
$selected_weapon = $_POST['Choosen'];
while($list = $result->fetch_assoc()){
//Display weapon
$show ='<tr>';
$show .='<td>'.$list['weapon_name'].'</td>';
$show .='<td>'.$list['weapon_type'].'</td>';
$show .='<td>'.$list['weapon_damage'].'</td>';
$show .='</tr>';
//Echo output
echo $show;
}
}
?>
</form>
<?php
if (isset($_POST['submit'])) {
$selected_weapon = $_POST['Choosen'];
$choose = "SELECT
weapon_types_martial.id,
weapon_types_martial.weapon_name,
weapon_types_martial.weapon_type,
weapon_types_martial.weapon_damage
FROM weapon_types_martial WHERE weapon_types_martial.weapon_name = " . $selected_weapon;
$result = $mysqli->query($choose) or die($mysqli->error . __LINE__);
foreach ($result->fetch_assoc() as $item) {
//Display weapon
$show = '<tr>';
$show .= '<td>' . $item['weapon_name'] . '</td>';
$show .= '<td>' . $item['weapon_type'] . '</td>';
$show .= '<td>' . $item['weapon_damage'] . '</td>';
$show .= '</tr>';
//Echo output
echo $show;
}
}
?>
在制定新问题时结束此问题。当前代码
<?php
if (isset($_POST['submit'])) {
$selected_weapon = $_POST['Choosen'];
$choose = "SELECT
weapon_types_martial.id,
weapon_types_martial.weapon_name,
weapon_types_martial.weapon_type,
weapon_types_martial.weapon_damage
FROM weapon_types_martial WHERE weapon_types_martial.weapon_name = " . $selected_weapon;
$result = $mysqli->query($choose) or die($mysqli->error . __LINE__);
foreach ($result->fetch_assoc() as $item) {
//Display weapon
$show = '<tr>';
$show .= '<td>' . $item['weapon_name'] . '</td>';
$show .= '<td>' . $item['weapon_type'] . '</td>';
$show .= '<td>' . $item['weapon_damage'] . '</td>';
$show .= '</tr>';
//Echo output
echo $show;
}
}
?>
Hmm,这太接近了!但现在我得到一个未知列错误。下面是我看到的图像。(我完全复制了你发布的内容)我确实想编辑一下,说明列表不再“技术上”显示在下面,但它显示了一行关于未知列的内容。你有列战斧吗?没有,上面的代码显示没有该列。但是“未知列”错误会根据我从下拉菜单中选择的选项而变化。所以在照片中它显示了战斧,但我可以尝试选择俱乐部,取而代之的是列俱乐部未知。我觉得这与WHERE子句有关(我的意思是,错误确实说明了这一点)@mfka我用页面代码编辑了上面的评论。我确实将代码还原为我的原始代码,因为它仍在输出到表中。我再次尝试了使用foreach添加的代码,但仍然得到未知列。它看起来像是专门说明了$result
部分的行。