- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试执行以下操作:
数据库和表已就位且正确。
我的问题是获取用户为区域选择的值并使用它来查询座位。这是代码:
<form method="post">
<?php
$sql = "select Name from Zone";
$handle = $conn->prepare($sql);
$handle->execute(array());
$res = $handle->fetchAll();
echo "<select name='Zone'>";
foreach($res as $row) {
echo "<option>".$row['Name']."</option>";
}
echo "</select>";
?>
<?php
$zone = $_POST['Zone'];
$sql = "select RowNumber, Zone from Seat WHERE Zone =" .$zone;
$handle = $conn->prepare($sql);
$handle->execute(array());
$conn = null;
$res = $handle->fetchAll();
echo "<select name='Seat'>";
foreach($res as $row) {
echo "<option>".$row['RowNumber']."</option>";
}
echo "</select>";
?>
</form>
这真的让我很沮丧,任何有助于取得突破的有用提示都会非常有帮助。提前致谢。
[编辑:因为这是一项评估,所以我选择将表单分解成其组成部分,并将提交时的数据从一个元素传递到下一个元素。即:
选择区域 -> 提交 ->使用选定区域查询数据库中的相关座位并填充下一个下拉列表。
我已经让这个方法起作用了。它很粗糙,但可以完成工作并且是我自己的想法(这是一个评估)。
然而,Craig 和 RamRaider 为遇到此挑战的任何其他人提供了更优雅的解决方案。]
最佳答案
考虑这个使用 HTML、PHP、MySQL 和一个平面 Javascript 命令的工作示例:
index.php
<?php
// Include the class that handles the database interactivity
require_once 'Database.php';
// Initialise the database
$Database = new Database();
// Get the list of Zones
$Zones = $Database->getZones();
// ZONE
if (isset($_POST['Zone'])) {
// You could validate and whitelist entries here if you wanted
if (!in_array($_POST['Zone'], $Zones)) {
$response = 'Sorry but that was not a valid selection';
}
// Passed validation
else {
// Get the corresponding Seats
$Seats = $Database->getSeats($_POST['Zone']);
// Store the Zone selection
$selectedZone = $_POST['Zone'];
// Set the response
$response = 'Viewing seats for '.$_POST['Zone'];
}
}
// SEAT
if (isset($_POST['Seat'])) {
printf('Zone that was chosen: '.$selectedZone);
printf('<br>');
printf('Seat that was chosen: '.$_POST['Seat']);
exit;
}
// This deals with initally loading the page
if (!isset($_POST['Zone']) && !isset($_POST['Seat'])) {
// Open variables
$response = '';
$selectedZone = 'n/a';
$Seats = array();
}
// You could move the code from here onwards into another file
// So you have a template like:
// require_once 'view.php'; which has a form that posts to index.php
// Start generating the page html
$page = '
<!DOCTYPE html>
<html>
<head>
<title>Awesome Page!</title>
</head>
<body>
<form method="POST" action="index.php">
';
// If theres a response to display
if (strlen($response) > 0) {
$page .= '
<p>'.$response.'</p>
';
}
// Dealing with the Zone selection
$page .= '
<p>Zones</p>
<select name="Zone" onchange="this.form.submit()">
<option value="">Please select an option</option>
';
// Itterate over the Zones
foreach ($Zones as $name) {
// If this is the selected Zone
if ($selectedZone == $name) {
$page .= '
<option selected value="'.$name.'">'.$name.'</option>
';
}
// This is not a selected Zone
else {
$page .= '
<option value="'.$name.'">'.$name.'</option>
';
}
}
$page .= '
</select>
';
// Dealing with the Seat selection
if (count($Seats) > 0) {
$page .= '
<p>Seats</p>
<select name="Seat" onchange="this.form.submit()">
<option value="">Please select an option</option>
';
// Itterate over the Seats
foreach ($Seats as $RowNumber) {
$page .= '
<option value="'.$RowNumber.'">Row Number: '.$RowNumber.'</option>
';
}
$page .= '
</select>
';
}
// Theres no Seats yet as Zone is not selected
else {
$page .= '
<p>Please select a Zone first.</p>
';
}
$page .= '
</form>
</body>
</html>
';
// Display the page
echo $page;
数据库.php
<?php
class Database
{
// Active connection
private $link;
// This fires when you call new Database();
public function __construct()
{
$this->doConnect();
}
private function doConnect()
{
// Define database details
$DBHost = 'localhost';
$DBUser = 'username';
$DBPass = 'password';
$DBName = 'database_name';
// Create a database connection for PHP to use
$this->link = mysqli_connect($DBHost, $DBUser, $DBPass);
// Preform from tasks to ensure the connection is active
if (!$this->link) {
echo 'Error: Unable to connect to MySQL' . '<br>';
echo 'Debugging errno: ' . mysqli_connect_errno() . '<br>';
echo 'Debugging error: ' . mysqli_connect_error() . '<br>';
exit;
}
// Sets encoding type to uft8
if (!mysqli_set_charset($this->link, 'utf8')) {
$this->processError();
}
// Set database that is in use (makes queries shorter to write)
if (!mysqli_select_db($this->link, $DBName)) {
$this->processError();
}
}
public function getZones()
{
// Stores the result
$Zones = array();
// Build query
$query = 'SELECT `name` ';
$query .= 'FROM `Zone` ';
// Prepare the statement
if (!$stmt = $this->link->prepare($query)) { $this->processError(); }
// Execute the query
if (!$stmt->execute()) { $this->processError(); }
// Bind variable to query values
if (!$stmt->bind_result($name)) { $this->processError(); }
// Itterate over the rows
while ($stmt->fetch()) {
// Add this Zones name to the result
$Zones[] = $name;
}
// Close the statement
$stmt->close();
// Return the result
return $Zones;
}
public function getSeats($selectedZone)
{
// Stores the result
$Seats = array();
// Build query
$query = 'SELECT `RowNumber` ';
$query .= 'FROM `Seat` ';
$query .= 'WHERE `Zone` = ? ';
// Prepare the statement
if (!$stmt = $this->link->prepare($query)) { $this->processError(); }
// Bind in form values to prevent sql injection
if (!$stmt->bind_param('s', $selectedZone)) { processError($link); } // NB: Assumed this to be a string but might be an integer, if so use i instead of s
// Execute the query
if (!$stmt->execute()) { $this->processError(); }
// Bind variable to query values
if (!$stmt->bind_result($RowNumber)) { $this->processError(); }
// Itterate over the rows
while ($stmt->fetch()) {
// Add this RowNumber to the Seats
$Seats[] = $RowNumber;
}
// Close the statement
$stmt->close();
// Return the result
return $Seats;
}
private function processError()
{
echo 'Error: Unable to connect to MySQL' . '<br>';
echo 'Debugging errno: ' . $this->link->errno . '<br>';
echo 'Debugging error: ' . $this->link->error . '<br>';
exit;
}
}
本质上,我们的 PHP 部分位于顶部,用于处理获取数据和表单提交,然后我们在下面有 html 模板,其中包括一个提交给自身的表单。
模板( View 类型的逻辑)将利用由数据库类(模型类型的逻辑)辅助的第一位( Controller 类型的逻辑)提供的数据。
所以这在本质上是 MVC 模式的一个非常简单的实现。
Javascript 的使用非常简单,可以检测选择值的变化,然后提交表单:onchange="this.form.submit()"
我尝试尽可能多地对代码进行注释,以增加您对代码的理解,但如果您有任何问题,请随时提问 :)
关于php - 如何在 php 中将一个表单元素值传递给下一个表单元素以进行 mysql 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40892841/
在开发中的网页上,我在 IE 上遇到此错误 element = $(element); 此代码位于prototype.js 预期对象 如何消除此错误。 更新: 现场也使用了 jQuery。 最佳答
我有两个大小相同的嵌套数组: Array1 =[[1, 2], [], [2, 3]] Array2= [[1, 4], [8, 11], [3, 6]] 我需要将它们合并到一个数组中,如下所示: A
我有一些 jQuery 代码,当单击具有特定 ID 的项目时运行。当 ID 是 的一部分时,它就可以工作。元素,但当它位于 中时则不然元素。为什么会这样呢?我想使用 an,因为如果用户关闭了 Ja
Flex-box 规范 3声明 flex 元素不是 block 容器: A flex item establishes a new formatting context for its content
我遇到了一个意想不到的问题。 HTML JS $(function() { var $divs = $('.myDiv'); // create new div not in
我使用 Bootstrap 和 Ember.js 得到了一个无序列表。每个列表项都是一个显示新帖子的链接,每当您单击该链接时,Ember 都会添加类 active默认情况下。我正在使用 Bootstr
我正在尝试让一个函数正常工作,但运气不佳,所以我想向 Stackoverflow 智囊团提出一个新手问题! 基本上,我有一个表单,并且循环遍历所有元素以查看是否存在自定义数据属性。如果存在,则保持该元
我想映射一个可选数组,删除那些 nil 值,并使用另一个函数映射非 nil 值。 我知道我可以通过使用 compactMap 然后使用常规 map 来实现这一点,但我只想遍历数组一次。 我为此实现了一
我如何定位 li 元素,除非它们出现在 之后元素?换句话说,我想针对步骤而不是注释。 我尝试向 OL 添加一个我想从选择中排除的类,但我想出的代码不起作用。 (顺便说一句,重构 html 不是一种选
Warning 1 The element 'system.webServer' has invalid child element 'rewrite'. List of possible eleme
我正在尝试编写一个脚本,该脚本将遍历 HTML 源并创建 DOM 的 JSON 文件,然后使用 d3.js 在 TreeView 中显示该文件。我遇到的问题是不仅希望显示元素(TITLE、P、LI 等
我有以下 HTML 表单:- Option 1 Option 2
我试图在选定的 HTML 元素之后选择下一个具有类名 slider-value 的 span 元素。我尝试了多种解决方案,但没有一个有效。 我可以通过 id 选择它,但我不希望那样做使代码冗余。 $(
如果电子邮件地址无效,我想在屏幕上显示一条消息“请输入有效的电子邮件地址”。 body 元素的innerHTML 语句工作正常,但我用于p 元素的innerHTML 语句不起作用。 有一次,当我测试它
以下 jQuery 代码调用 ul 元素,查找元素内的前 三个 li 列表项,并隐藏剩余的 li 项目。然后,它附加一个 li 元素,其中显示“显示更多...”,并且在单击时显示之前隐藏的列表项。 (
我问了a question早些时候关于将编辑/删除链接与 h1 元素内联的最佳方法。我能够通过给出的答案实现这一点,但我现在有额外的要求,我需要在 h1 下方显示一个段落并编辑/删除链接。 到目前为止
我使用 MVC 4 和 knockout.js 库版本 2.1.0 显示从服务器检索到的大量文件的表中的以下摘录。 0)"> 正在正确检索数据,
我创建了一个脚本,该脚本在鼠标悬停在父容器上时激活,并且应该将其子元素移离鼠标。我目前已经让它工作了,但是代码的某些部分似乎与 REACT 代码应该是什么样子相矛盾。特别是两个部分。 我在渲染函数中使
我是 JS 新手,正在尝试理解项目 https://github.com/tastejs/todomvc 的代码 请参阅屏幕截图,我尝试对 button X 以及其父元素 div 设置断点,但在这两种
例如,假设有一个带有奇特颜色的标记: Something written here 使用 Visual Studio 2017 和 MVC 5 元素,有没有办法检查和定位当前应用了哪些样式,以及负责它
我是一名优秀的程序员,十分优秀!