php - 如何在表单输入后将 PHP 文件的结果显示到当前页面?
问题描述
我是网页设计/编码的新手,所以我的理解有些有限。我正在尝试为我正在制作的这个临时活动网站实现“搜索依据:”功能,它按存储在 MySQL 数据库中的事件的名称和日期对其进行排序。在当前页面上,有一个表单,它有两个提交按钮,一个用于名称和日期,如下所示。
<div>
<form action="resources/files/sport_events.php" method="post">
<lable>Search By: </lable>
<button type="submit" name="name" value="name">Name</button>
<button type="submit" name="date" value="date" >Date</button>
</form>
</div>
后跟一个 php inlcude() 将其链接到sport_events.php。
sports_events.php 本身包含 if/elseif/else 状态,它接收来自 $_POST 的数据,通过上面的表单传递,并根据它确定要使用的查询,然后通过函数传递给 foreach( ),它将数据存储在数据库中,以使事件的“表格”显示在当前页面上。这是它的代码:
<?php
//SQL Queries
if(isset($_POST['name'])){
$queryByName = 'SELECT * FROM events WHERE event_category = "Sports" ORDER BY event_name;';
$result = $queryByName;
} elseif (isset($_POST['date'])) {
$queryByDate = 'SELECT * FROM events WHERE event_category = "Sports" ORDER BY event_date;';
$result = $queryByDate;
} else {
$defaultQuery = 'SELECT * FROM events WHERE event_category = "Sports";';
$result = $defaultQuery;
}
function executeQuery($query){
include('dbh.home.php');
$data = $conn->query($query);
return $data;
}
//Table of Events code.
foreach(executeQuery($result) as $row) {
// Changes the date format before it passes through.
$date_to_sort = strtotime($row['event_date']);
$sorted_date = date("F j, Y",$date_to_sort);
?>
<div class="eventsTable">
<div class="eventImage">
<img src="<?php echo $row['event_image']; ?>" alt="<?php echo $row['event_name'] ?> Image" />
</div>
<div class="eventsData">
<ul class="sectionOne">
<li class="event_title"><?php echo $row['event_name']; ?></li>
<li class="accountUser">
<img class="thumbsDown" alt="Thumbs Down" src="resources/images/system/thumbs-down_left.png" height="20" width="20" onclick="eventDOWN(<?php echo $row['event_id'] ?>)" />
<img class="thumbsUp" alt="Thumbs Up" src="resources/images/system/thumbs-up_left.png" height="20" width="20" onclick="eventUP(<?php echo $row['event_id'] ?>)" />
<button id="book_<?php echo $row['event_id']?>" onclick="location.href='booking.php'">Book In</button>
</li>
<li><?php echo $row['event_description']; ?></li>
<li><span class="label">Date: </span><?php echo $sorted_date; ?></td></li>
<li class="more" id="more_<?php echo $row['event_id']?>"><button type="button" onclick="revealMoreLess(<?php echo $row['event_id']?>)">see more...</button></li>
</ul>
<!--Hidden from view untill click "see more..."-->
<ul class="sectionTwo" id="sectionTwo_<?php echo $row['event_id']?>">
<li><span class="label">Location: </span><?php echo $row['event_venue']; ?></li>
<li><span class="label">Organiser: </span><?php echo $row['event_organiser']; ?></li>
<li><span class="label">Contact: </span><a href="<?php echo $row['contact_info']; ?>"><?php echo $row['contact_info']; ?></a></li>
<li><button type="button" onClick="revealMoreLess(<?php echo $row['event_id']?>)">see less...</button> </li>
</ul>
</div>
</div>
<?php
}
// Checks if the current User is logged in to display the "accountUser" only elements or not.
if($_SESSION['user_id'] === "guest"){ ?>
<script type="text/JavaScript">
bookinList = document.getElementsByClassName("accountUser");
document.getElementsByClassName('accountUser');
if(bookinList){
for(var i=0; i<bookinList.length; i++){
bookinList[i].style.visibility = "hidden";
}
}
</script>
<?php
} else {
?>
<script type="text/JavaScript">
bookinList = document.getElementsByClassName("accountUser");
document.getElementsByClassName('accountUser');
if(bookinList){
for(var i=0; i<bookinList.length; i++){
bookinList[i].style.visibility = "visible";
}
}
</script>
<?php
}
?>
当体育页面加载(即当前页面)时,所有内容都按预期显示。但是,一旦我单击上面表单中的任何提交按钮,它就会正确排序,但它不再显示在当前页面上,而是加载到文件本身:://localhost/SOMEFOLDER/resources/files/sport_events .php ,纯文本,没有任何图像或样式元素,如此处所示。
此外,我在与上图相同的页面上收到以下错误消息,在我添加 if/elseif/else 和函数之前我没有使用过。不知道为什么会这样。
注意:未定义变量:第55行C:\xampp\htdocs\SOMEFOLDER\resources\files\sport_events.php中的 _SESSION
注意:尝试访问第55行C:\xampp\htdocs\SOMEFOLDER\resources\files\sport_events.php中 null 类型值的数组偏移量
正如您可以想象的那样,我的意图是让事件在当前页面上显示这些“表格”,具体顺序取决于是否选择了某些内容(通过提交)或没有(仅显示默认值)。
在这里的任何帮助将不胜感激。如果我错过了任何相关细节,请告诉我,我很乐意发布。
解决方案
推荐阅读
- ios - Swift pagecontroller 故事板 UI 对象与 UIPageviewcontroller 连接
- python - 如何在 python 中将 (2018-09-05T09:00:06.540486Z) 转换为 (2018-09-05)?
- java - 将 UTC 日期转换为 CEST
- azure - 通过 Powershell 添加负载均衡器规则
- matlab - 在一张图中绘制多个神经网络径向基函数?
- jquery - 使用 jquery 和 scss 的自定义按钮动画无法停止
- angular - 如何在角度使用ngFor同时迭代两个数组?
- react-native - 无法使用 React native 发出 post 请求
- xquery - 如何有效地替换 XML 的多个节点?
- mysql - 如果准备好的语句查询不存在行,则返回一些东西