首页 > 解决方案 > 如何在表单输入后将 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 和函数之前我没有使用过。不知道为什么会这样。

注意:未定义变量:第55C:\xampp\htdocs\SOMEFOLDER\resources\files\sport_events.php中的 _SESSION

注意:尝试访问第55C:\xampp\htdocs\SOMEFOLDER\resources\files\sport_events.php中 null 类型值的数组偏移量

正如您可以想象的那样,我的意图是让事件在当前页面上显示这些“表格”,具体顺序取决于是否选择了某些内容(通过提交)或没有(仅显示默认值)。

在这里的任何帮助将不胜感激。如果我错过了任何相关细节,请告诉我,我很乐意发布。

标签: phphtmlforms

解决方案


推荐阅读