douzhuo1853 2015-08-12 02:07
浏览 74
已采纳

使用PHP_SELF和php验证的html表单 - 提交后,结果显示在新页面上而不显示表单

I am trying to create an html search form using a similar code as posted below.

When I submit the form, I want to submit to PHP_SELF

I want to use php validation code to filter the data.

When I submit the form, I cannot figure out how to get the results to post to a new page without displaying the form.

<?php

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "xyz_database";

// Create connection

$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection

if ($conn->connect_error) {

die("Connection failed: " . $conn->connect_error);

}


$showHtml = true;   

$month = $day = $year = "";

$monthErr = $dayErr = $yearErr =  "";

$errorMessage = "Oops..Please correct the item(s) highlighted in red on the form below and re-submit";

 function test_input($data) {  

   $data = trim($data);
   $data = stripslashes($data);
   $data = htmlspecialchars($data);

   return $data;
 }


if ($_SERVER["REQUEST_METHOD"] == "POST") {


// Month error & filter check code....

 if (empty($_POST["month"])) {

 $month = "";

 } else {

 $month = test_input($_POST["month"]);

 if (!preg_match("/^[a-zA-Z ]*$/",$month)) {

  $monthErr = "An invalid entry has been detected. Please reset this form and re-submit.";

  }
  }


 // Day error & filter check code....

   if (empty($_POST["day"])) {

   $day = "";

   } else {

   $day = test_input($_POST["day"]);

   if (!is_numeric($day)) {

  $dayErr = "Day Found - An invalid entry has been detected. Please reset this form and re-submit.";

 }
 }

  // Year error & filter check code....

  if (empty($_POST["year"])) {

  $year = "";

  } else {

  $year = test_input($_POST["year"]);

  if (!is_numeric($year)) {

  $yearErr = "Year Found - An invalid entry has been detected. Please reset this form and re-submit.";


  }
   }


 if (empty($monthErr) and empty($dayErr)  and empty($yearErr)) {


 $showHtml = false;  


$value1 = $_POST['month'];
$value2 = $_POST['day'];
$value3 = $_POST['year'];


 $sql = "SELECT * FROM xyz_test_database WHERE month = ('$value1') AND day =     ('$value2') AND year = ('$value3')";

 $result = $conn->query($sql);


if ($result->num_rows > 0) {echo "<br><br><h2>Search Results</h2>
                       <table><tr>
                                  <th>ID</th> 
                                  <th>Time Stamp</th>
                                  <th>Month</th>                                 
                                  <th>Day</th>
                                  <th>Year</th>
                             </tr>";

 // output data of each row

while($row = $result->fetch_assoc()) {
echo "<tr>
          <td>".$row["id"]."</td>
          <td>".$row["time_stamp"]."</td>
          <td>".$row["month"]."</td>
          <td>".$row["day"]."</td>
          <td>".$row["year"]."</td>
      </tr>";
 }

 echo "</table>";

 } else {


  echo "<p id='no_results'>Sorry - No Results Found :( </p>";

  }
  }
  }


  $conn->close();

  exit ();

 ?>

 <?php

 if ($showHtml)

 {

 ?>


 <!DOCTYPE html>

 <meta charset="UTF-8">

 <html>

 <head>
 </head>

 <body>

 <form name="form1" method="POST" action="<?php echo     htmlspecialchars($_SERVER["PHP_SELF"]);?>">  


 <select id="item_select" name="month">


       <option value="">Select Month</option>
       <option value="January">January</option>
       <option value="February">February</option>
       <option value="March">March</option>
       <option value="April">April</option>
       <option value="May">May</option>
       <option value="June">June</option>
       <option value="July">July</option>
       <option value="August">August</option>
       <option value="September">September</option>
       <option value="October">October</option>
       <option value="November">November</option>
       <option value="December">December</option>

   </select>

 &nbsp;&nbsp;

 <select id="item_select" name="day">

         <option value="">Day</option>
         <option value="1">1</option>
         <option value="2">2</option>
         <option value="3">3</option>
         <option value="4">4</option>
         <option value="5">5</option>
         <option value="6">6</option>
         <option value="7">7</option>
         <option value="8">8</option>
         <option value="9">9</option>
         <option value="10">10</option>

   </select>

 &nbsp;&nbsp;

 <select id="item_select" name="year">

         <option value="">Year</option>
         <option value="2015">2015</option>
         <option value="2014">2014</option>
         <option value="2013">2013</option>
         <option value="2012">2012</option>
         <option value="2011">2011</option>
         <option value="1975">1975</option>
  </select>

<br>

 <span class="error"><?php echo $monthErr;?></span>
 <span class="error"><?php echo $dayErr;?></span>
 <span class="error"><?php echo $yearErr;?></span>

 <br>

    <input type="Submit" id="submit" name="submit" value="Submit Search" style="width: 120px; color: blue;"/>

</form>

</body>

</html>

<?php

}

?>
  • 写回答

2条回答 默认 最新

  • dongmin4052 2015-08-15 15:58
    关注
    <?php
    
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "xyz_database";
    
    // Create connection
    
    $conn = new mysqli($servername, $username, $password, $dbname);
    
    // Check connection
    
    if ($conn->connect_error) {
    
    die("Connection failed: " . $conn->connect_error);
    
    }
    
    
    $showHtml = true;   
    
    $month = $day = $year = "";
    
    $monthErr = $dayErr = $yearErr =  "";
    
    $errorMessage = "Oops..Please correct the item(s) highlighted in red on the form below and re-submit";
    
    function test_input($data) {  
    
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    
    return $data;
    }
    
    
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
    
    
     // Month error & filter check code....
    
    if (empty($_POST["month"])) {
    
    $month = "";
    
    } else {
    
    $month = test_input($_POST["month"]);
    
    if (!preg_match("/^[a-zA-Z ]*$/",$month)) {
    
    $monthErr = "An invalid entry has been detected. Please reset this form and re-submit.";
    
    }
    }
    
    
      // Day error & filter check code....
    
      if (empty($_POST["day"])) {
    
     $day = "";
    
     } else {
    
     $day = test_input($_POST["day"]);
    
     if (!is_numeric($day)) {
    
    $dayErr = "Day Found - An invalid entry has been detected. Please reset this form and re-submit.";
    
     }
     }
    
    // Year error & filter check code....
    
    if (empty($_POST["year"])) {
    
    $year = "";
    
    } else {
    
    $year = test_input($_POST["year"]);
    
    if (!is_numeric($year)) {
    
    $yearErr = "Year Found - An invalid entry has been detected. Please reset this form and re-submit.";
    
    
    }
     }
    
    
    if (empty($monthErr) and empty($dayErr)  and empty($yearErr)) {
    
    
    $showHtml = false;  
    
    
    $value1 = $_POST['month'];
    $value2 = $_POST['day'];
    $value3 = $_POST['year'];
    
    
     $sql = "SELECT * FROM xyz_test_database WHERE month = ('$value1') AND day =     ('$value2') AND year = ('$value3')";
    
     $result = $conn->query($sql);
    
    
    if ($result->num_rows > 0) {echo "<br><br><h2>Search Results</h2>
                       <table><tr>
                                  <th>ID</th> 
                                  <th>Time Stamp</th>
                                  <th>Month</th>                                 
                                  <th>Day</th>
                                  <th>Year</th>
                             </tr>";
    
      // output data of each row
    
      while($row = $result->fetch_assoc()) {
         echo "<tr>
          <td>".$row["id"]."</td>
          <td>".$row["time_stamp"]."</td>
          <td>".$row["month"]."</td>
          <td>".$row["day"]."</td>
          <td>".$row["year"]."</td>
       </tr>";
     }
    
    echo "</table>";
    
    } else {
    
    
     echo "<p id='no_results'>Sorry - No Results Found :( </p>";
    
     }
     }
     }
    
    
     $conn->close();
    
     exit ();
    
     ?>
    
    <?php
    
    if ($showHtml)
    
     {
    
     ?>
    
    
     <!DOCTYPE html>
    
     <meta charset="UTF-8">
    
     <html>
    
     <head>
     </head>
    
     <body>
    
      <form name="form1" method="POST" action="<?php echo     htmlspecialchars($_SERVER["PHP_SELF"]);?>">  
    
    
     <select id="item_select" name="month">
    
    
       <option value="">Select Month</option>
       <option value="January">January</option>
       <option value="February">February</option>
       <option value="March">March</option>
       <option value="April">April</option>
       <option value="May">May</option>
       <option value="June">June</option>
       <option value="July">July</option>
       <option value="August">August</option>
       <option value="September">September</option>
       <option value="October">October</option>
       <option value="November">November</option>
       <option value="December">December</option>
    
      </select>
    
     &nbsp;&nbsp;
    
     <select id="item_select" name="day">
    
         <option value="">Day</option>
         <option value="1">1</option>
         <option value="2">2</option>
         <option value="3">3</option>
         <option value="4">4</option>
         <option value="5">5</option>
         <option value="6">6</option>
         <option value="7">7</option>
         <option value="8">8</option>
         <option value="9">9</option>
         <option value="10">10</option>
    
      </select>
    
     &nbsp;&nbsp;
    
      <select id="item_select" name="year">
    
         <option value="">Year</option>
         <option value="2015">2015</option>
         <option value="2014">2014</option>
         <option value="2013">2013</option>
         <option value="2012">2012</option>
         <option value="2011">2011</option>
         <option value="1975">1975</option>
       </select>
    
      <br>
    
      <span class="error"><?php echo $monthErr;?></span>
      <span class="error"><?php echo $dayErr;?></span>
      <span class="error"><?php echo $yearErr;?></span>
    
      <br>
    
      <input type="Submit" id="submit" name="submit" value="Submit Search" style="width: 120px; color: blue;"/>
    
      </form>
    
      </body>
    
      </html>
    
     <?php
    
      }
    
      ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)