如何从HTML页面中的表单进行搜索,在同一个html页面中显示结果?当我尝试运行未定义inputPackageID的代码时出错。我怎样才能解决这个问题。似乎变量未从表单中识别。请帮忙
这是我的代码。如果你不理解我的问题,你可以问我哪些不清楚。
<div class="main">
<div class="col-md-12">
<div class="row">
<div class="container">
</div>
<div class="search center-block col-md-6" align="center">
<p>
Want to track your package? <br />
Enter your Package ID(PID)
</p>
<form method="post" action="trackShipment.php">
<div class="form-group">
<label class="sr-only" for="inputPackageID"></label>
<input type="search" name="inputPackageID" class="form-control edit-form-control" id="inputPackageID" placeholder="PID">
</div>
<div class="modal-footer">
<input type="submit" class="btn btn-primary" name="submit" />
</div>
</form>
</div>
<div class="col-md-8" align="center">
<h2>Well, Here is your package!</h2>
<?php
include '../includes/connection.php';
//include 'phpscripts/trackShipment.php';
$PackageID = $_GET['inputPackageID'];
$sql = "select * from package where p_id='$PackageID'";
?>
<table class="table table-striped">
<tr>
<th><span>PID</span></th>
<th><span>Customer ID</span></th>
<th>Name</th>
<th>Description</th>
<th>Destination Per KM</th>
<th>Type</th>
<th>Price/KG</th>
</tr>
</th>
<?php
foreach ($db->query($sql) as $count)?>
<tr>
<td>
<?php echo $count['p_ID']; ?>
</td>
<td>
<?php echo $count['cus_ID']; ?>
</td>
<td>
<?php echo $count['package_name']; ?>
</td>
<td>
<?php echo $count['package_description']; ?>
</td>
<td>
<?php echo $count['package_type']; ?>
</td>
<td>
<?php echo $count['destination_per_km']; ?>
</td>
<td>
<?php echo $count['price_per_kg']; ?>
</td>
<?php } ?>
</table>
</div>
</div>
答案 0 :(得分:2)
它向您显示它未定义,因为您的表单使用了post方法,并且您正在使用GET数组。
$PackageID = $_GET['inputPackageID'];
将其更改为
$PackageID = $_POST['inputPackageID'];
另外,请使用isset()
if(isset($_POST['inputPackageID'])){
$PackageID = $_POST['inputPackageID'];
}
因为您在同一页面中使用了已退役的代码。
或!empty()
if(!empty($_POST['inputPackageID'])){
$PackageID = $_POST['inputPackageID'];
}
如果您在同一个文件中使用相同的代码,则可以使用action=""
和提交按钮的额外条件语句。
if(isset($_POST['submit'])){...}
看到您的评论,情况并非如此,您使用的是单独的文件,因此我们可以抓住。
但是,如果您真正想要使用GET方法,则需要在表单中将方法更改为method="get"
。使用这种方法是不安全的,请参阅我的脚注。
<强>脚注:强>
您目前的代码向SQL injection开放。使用mysqli
with prepared statements或PDO with prepared statements,它们更安全。
“如何从HTML页面中的表单进行搜索,在同一个html页面中显示结果?”
action=""
。