Php 在使用菜单完成查询后,如何使下拉选择菜单持续显示相同的数据?
因此,我有一个下拉选择框的问题。我所做的是让某人登录到数据库,然后数据库在选择框中显示所有可用的表。然后,用户可以选择他们想要查看的表,点击select并点击bam!这是表格信息 但是,我遇到了一个问题,即在选择框中的数据点击“选择”后,如何使其保持不变。出于某种原因,它只是让它变空了。我在使用会话变量,也许这会影响它?我现在才开始了解它是如何工作的。看看《让我知道你的想法》:Php 在使用菜单完成查询后,如何使下拉选择菜单持续显示相同的数据?,php,html,mysql,pdo,Php,Html,Mysql,Pdo,因此,我有一个下拉选择框的问题。我所做的是让某人登录到数据库,然后数据库在选择框中显示所有可用的表。然后,用户可以选择他们想要查看的表,点击select并点击bam!这是表格信息 但是,我遇到了一个问题,即在选择框中的数据点击“选择”后,如何使其保持不变。出于某种原因,它只是让它变空了。我在使用会话变量,也许这会影响它?我现在才开始了解它是如何工作的。看看《让我知道你的想法》: <?php session_start(); if(!isset($_SESSION['session_lev
<?php
session_start();
if(!isset($_SESSION['session_level'])):
$_SESSION['session_level'] = 0; ?>
<? endif ?>
<?php
if(isset($_POST['host'])):
$_SESSION['host'] = $_POST['host'];
$_SESSION['dbname'] = $_POST['dbname'];
$_SESSION['username'] = $_POST['username'];
$_SESSION['pw'] = $_POST['pw'];
?>
<?php endif ?>
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8' />
<title>Login Test</title>
</head>
<body>
<?
if (isset($_POST['return']))
{
$_SESSION['session_level'] = 0;
}
else if (isset($_POST['submit']))
{
try
{
$db = new PDO("mysql:host=".$_POST['host'].";dbname=".$_POST['dbname'], $_POST['username'], $_POST['pw']);
}
catch(Exception $error)
{
$_SESSION['session_level'] = 0;?>
<a href='<?= $_SERVER['PHP_SELF'] ?>'>Click here to return.</a>
<? echo "\n"; ?>
<?die("Connection to user database failed: " . $error->getMessage());
}
try
{
$db->setAttribute(PDO::ATTR_ERRMODE, PDO:: ERRMODE_EXCEPTION);
$query = "SHOW TABLES";
$results = $db->query($query)->fetchAll();
$_SESSION['session_level'] = 1;
}
catch(Exception $error)
{
echo "Problem with query!";
$_SESSION['session_level'] = 0;?>
<a href='<?= $_SERVER['PHP_SELF'] ?>'>Click here to return.</a>
<? }
}
?>
<?php if($_SESSION['session_level'] == 0){?>
<h1>Database Practice</h1>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name='initialentry'>
<table border='0' style='text-align: center'>
<tr>
<td style='text-align: right;'>Enter host name:</td>
<td style='text-align: left;'>
<input type='text' name='host' value='localhost'>
</td>
</tr>
<tr>
<td style='text-align: right;'>Enter database name:</td>
<td style='text-align: left;'>
<input type='text' name='dbname' value='zxyx999'>
</td>
</tr>
<tr>
<td style='text-align: right;'>Enter user name:</td>
<td style='text-align: left;'>
<input type='text' name='username' value='zxyx999'>
</td>
</tr>
<tr>
<td style='text-align: right;'>Enter password:</td>
<td style='text-align: left;'>
<input type='password' name='pw' width='15' value='12345'>
</td>
</tr>
<tr>
<td style='text-align: right;'><input type="reset" name="reset" value="Reset"></td>
<td style='text-align: left;'><input type="submit" name="submit" value="Submit"></td>
</tr>
</table>
</form>
<?php }
else if ($_SESSION['session_level'] == 1)
{
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name='getForm'>
<select name='select'>
<? foreach($results as $row)
echo "<option value=" . $row[0] .">" .$row[0]. "</option>"; ?>
</select>
<input type="submit" name="selected" value="Select">
<input type="submit" name="return" value="Return to Main Screen">
</form>
<?php
if(isset($_POST['selected']))
{
try
{
$db = new PDO("mysql:host=".$_SESSION['host'].";dbname=".$_SESSION['dbname'], $_SESSION['username'], $_SESSION['pw']);
}
catch(Exception $error)
{
die("Connection to user database failed: " . $error->getMessage());
}
try
{
$query = $db->prepare("SELECT * FROM " . $_POST['select']);
$query->execute();
$header = true;
}
catch(Exception $error)
{
echo "Query failed.";
}
echo "</br>";
?>
<?php
echo "<table border='1'>";
while ($row = $query->fetch(PDO::FETCH_ASSOC))
{
echo "<tr>";
if($header == 'true')
{
foreach($row as $index => $fieldValue)
{
echo "<td>";
echo $index;
echo"</td>";
}
echo "</tr>";
$header = 'false';
}
echo "<tr>";
foreach($row as $index => $fieldValue)
{
echo "<td>";
echo $fieldValue;
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
}
}
?>
</body>
</html>
登录测试
数据库实践
当您重新填充选择列表时,如果所选的选项与正在填充的选项匹配,那么您可以生成该代码位如果我很了解您的问题,那么我的建议是更改您的表单并按以下方式执行:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name='getForm'>
<input type="hidden" name="selected" value="true">
<select name='select'>
<? foreach($results as $row)
echo "<option value=" . $row[0] .">" .$row[0]. "</option>"; ?>
</select>
<input type="submit" value="Select">
</form>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name='getForm'>
<input type="hidden" name="return" value="true">
<input type="submit" value="Return to Main Screen">
</form>
我添加了这个,但在我显示了一个表之后,它仍然没有显示任何内容。我想确保我理解正确。有一个用户登录的表单。一旦超过这个值,就会有另一个带有选择框的表单,允许用户选择一个选项。选择后,用户提交该表单。然后,页面将重新加载并显示所请求的信息,您希望选择框仍然是用户选择的。我希望它仍然是用户选择的,并且我希望他们能够选择其他选项。确切地说。。。因此,您将使用已有的代码循环所有选项,并添加if
语句的代码,该语句“如果循环中的当前选项与最初选择的选项匹配,则将标记“selected”添加到选项中。”我知道这不是您的要求,但我个人认为,我将使用jQuery和AJAX来访问数据。这样,数据将被更新,但页面永远不必刷新。您仍然可以使用PHP获取数据并将数据发送到数据库,但AJAX可以动态地发出这些请求。在我点击submit and output a table(提交并输出表格)后,下拉列表仍然为空:/dropdown(下拉列表)指的是
?此外,“空白”是指里面没有选项或没有“预选”选项?这是正确的。没有选择任何东西的能力。这让我觉得showtables查询没有被重新激活。但我不知道为什么。这意味着有一个错误。但它显示在您的选择中。如果您的浏览器上有firebug
插件,请检查您的选择。这会暴露你的错误。如果您没有firebug,我强烈建议您安装它;)哦,这真是太花哨了。因此,我运行了firebug
并检查了脚本区域。它说对受限URI的访问被拒绝。
。这是正确的部分吗?如果是,这个错误对您有意义吗?