我试图将所有数据库数据提取到另一个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>
答案 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'];
}
部分。
我仍然希望,我的回答可以帮助您回到正确的轨道上