如何通过表单标签将数据发送到另一页?

时间:2019-03-09 08:53:38

标签: php html mysql database forms

我试图将所有数据库数据提取到另一个PHP页面和form标签中,但是我无法做到这一点,所以我很容易在option标签中显示所有数据,但无法将其发送到form标签中的action标签。这是代码。

<?php require "pages/header.php" ?>
<?php
//sesssion_start();

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

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
#include "navbar.php";
$sql = "SELECT * FROM `table_3`";
$result = $conn->query($sql);

?>
    <link rel="canonical" href="https://getbootstrap.com/docs/4.3/examples/sign-in/">

<!-- Bootstrap core CSS -->
<link href="https://getbootstrap.com/docs/4.3/dist/css/bootstrap.min.css" rel="stylesheet"
    integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">

        <link href="https://getbootstrap.com/docs/4.3/examples/sign-in/signin.css" rel="stylesheet">
<select id="role"  name="role" class="form-signin" class="form-control">
        <?php
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
       #echo $row['model'];
       #echo "<option value="'.$row["model"].'">";

       #echo "<option value='".$row["model"]."' href='".$row["model"]."'>";
      # echo "<a href='".$row["model"]."'>";
       #echo $row['model'];
       #echo "</a>";
      # echo "</option>";?>
      <form action="repaired.php?<?php $row['model'] ?> enctype=multipart/formdata">
      <select id="role"  name="role" class="form-signin" class="form-control">
      <option value='<?php $row['model'] ?>' href='<?php $row['model'] ?>'>
      </option>
      </select> 
      </form>
      <?php

    }
} else {
    echo "0 results";
}
#$conn->close();
?>
        </select>

1 个答案:

答案 0 :(得分:0)

我不清楚您的确切问题是什么。看来您正在尝试将当前页面(共享代码的页面)中的数据传递到repaired.php

由于您发布的代码太脏了(对不起,请原谅我),我将尝试在其中添加 some 结构(我显然不会非常彻底地清理它) ,但这将是您的工作)。

首先,您所有的<link>标签应位于<head>部分内的某个位置...我想在您的网站上,该位置应位于header.php

之内

pages / header.php

<!doctype html>
<html>
  <head>
    <title>Your App</title>

    <!-- Place your <link> elements here -->
    <link rel="canonical" href="https://getbootstrap.com/docs/4.3/examples/sign-in/">

    <link href="https://getbootstrap.com/docs/4.3/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">

    <link href="https://getbootstrap.com/docs/4.3/examples/sign-in/signin.css" rel="stylesheet">
  </head>
  <body>
    <!-- Body part begins here
         Place for header elements and navigation here, I guess -->

然后,您在其中进行所有连接并尝试通过您的表单发送该文件,在这里我仅将其称为action.php。由于我不知道应该在您的<option>元素中显示什么,因此我采取了与value属性相同的方法。注意,放置while循环的位置是<select>元素的INSIDE(本身就是<form>元素的INSIDE),因为您只需要其中之一。但是,您将有多个<option>元素,因此它们是循环中的元素。另外,我在表单末尾放置了一个提交按钮,这使我们可以提交表单。

action.php

<?php
include "pages/header.php";

// Database variables and connection
// ...

// Data fetching and displaying
$sql = "SELECT * FROM `table_3`";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  echo '<form action="repaired.php" method="post">';
  echo '  <select id="role"  name="role" class="form-signin" class="form-control">';

  while ($row = $result->fetch_assoc()) {
    echo '    <option value="' . $row['model'] . '">' . $row['model'] . '</option>';
  }

  echo '  </select>';
  echo '  <button type="submit" name="form_send">Send</button>';
  echo '</form>';
} else {
  echo 'No data found';
}

现在,显然,在您的repaired.php文件中,您需要获取发布的数据。由于我不知道您想对数据做什么,所以我可以发表一个关于您可以做什么的想法。如果通过post方法发送表单(请参见上面的代码method="post"),则可以使用$_POST超全局变量访问表单数据。这是一个数组,用于保存您发布的数据...表单元素的name属性将是访问数据的关键。因此,如果我发布一个具有单个输入的表单,并且输入具有属性name="first_name",则可以使用目标页面上的$_POST['first_name'](您的{的action属性{1}})。在您的情况下,我们有一个<form><select>,因此您应该能够按照说明进行访问:

repaired.php

name="role"

我的答案即使可以解决您的问题,也远远不够完美,并且未经测试,因此我不知道其中是否有任何错误。我建议您继续练习和扩展知识。学习如何将逻辑代码与标记分开是一个非常好的主意。我建议您阅读MVC或MOVE或其他体系结构模式,或者如果您想先走一条简单的路线,请阅读模板引擎(如Twig)。另外,我建议您扩展您的HTML基础知识(恕我直言,MDN是一个不错的选择,因为在我看来,您似乎还没有完全掌握它们)结构化您的<?php /* First we check, if the submit button was pressed... If not, we echo an error message, if yes, we can proceed to access the posted data */ if (!isset($_POST['form_send'])) { echo 'No data submitted'; } else { echo $_POST['role']; } 部分。

我仍然希望,我的回答可以帮助您回到正确的轨道上