添加到相同的php页面并等待用户输入
Posted
技术标签:
【中文标题】添加到相同的php页面并等待用户输入【英文标题】:Add to same php page and wait for user to input 【发布时间】:2013-05-05 23:06:41 【问题描述】:我正在尝试从用户那里获取输入,然后当他按下提交时,它将在数据库中进行查询并在表中返回结果。 但是,我的代码似乎并没有等待,因为它会自动执行保存查询结果的 var 为 false 的场景。我正在尝试在同一页面上执行此操作,因为如果我将数据发送到另一个页面,它会起作用,但我想尽量减少我正在使用的文件数量。
这是我的代码:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>View a Faculty Member</title>
<style type="text/css">
.block
display:block;
margin-top:3px;
</style>
</head>
<body>
<h1>View a faculty member:</h1>
<form action="" method="post">
<label class="block">Please Enter ID: <input type="text" placeholder="ie. 12345" maxlength="30" size="30" name="id"></label>
<input class="block" type="submit" name="submit" value="Get Faculty Member">
</form>
<hr/>
<?php
// 1- get the id
// 2- construct query in string
// 3- connect to db
// 4- execute the query
// 5- put the result in a var
// 6- get the information from the var into a table
$id = $_POST["id"]; // step 1
$query = "SELECT * FROM FM WHERE id=\"$id\""; // step 2
try
$db = new PDO("mysql:dbname=project;host=localhost", "khaled", ""); // step 3
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$row = $db->query($query)->fetch(); // step 4 & step 5
if ($row == FALSE)
// id doesnt exist since the query failed
?>
<h3>The ID you entered does not exist.</h3>
<h4>Please try again.</h4>
<?
else
// step 6
displayTable($row);
catch (PDOException $ex)
?>
<h3 style="color:red;">An error occured.</h3>
<p>An error occured during the connection to the database.</p>
<p>Exact error message: <?= $ex->getMessage() ?></p>
<?php
function displayTable ($row)
?>
<table border="1">
<tr>
<th>ID</th>
<th>Last Name</th>
<th>First Name</th>
<th>Office</th>
<th>Extension</th>
<th>Home Phone</th>
<th>Mobile Phone</th>
<th>Address</th>
<th>Email</th>
<th>Starting Year</th>
<th>Termination Year</th>
<th>Latest Degree</th>
<th>Obtained From</th>
<th>Degree Year</th>
<th>Research Interest</th>
</tr>
<tr>
<td><?= $row["id"] ?></td>
<td><?= $row["lastName"] ?></td>
<td><?= $row["firstName"] ?></td>
<td><?= $row["office"] ?></td>
<td><?= $row["extension"] ?></td>
<td><?= $row["homePhone"] ?></td>
<td><?= $row["mobilePhone"] ?></td>
<td><?= $row["address"] ?></td>
<td><?= $row["email"] ?></td>
<td><?= $row["startingYear"] ?></td>
<td><?= $row["terminationYear"] ?></td>
<td><?= $row["latestDegree"] ?></td>
<td><?= $row["obtainedFrom"] ?></td>
<td><?= $row["degreeYear"] ?></td>
<td><?= $row["researchInterest"] ?></td>
</tr>
</table>
<?php
?>
</body>
</html>
如何让我的代码等待用户输入然后检查它是否是错误查询?
【问题讨论】:
顺便说一下,由于您使用的是PDO-Mysql,请使用准备好的语句:php.net/manual/en/pdo.prepared-statements.php 【参考方案1】:您不能让您的代码等待。阅读作为 PHP 基础的客户端-服务器模型。 相反,您需要执行您的代码两次(最初和客户端的 POST 请求之后),并让您的代码识别这两种情况中的哪一种。
例如,我会检查是否设置了某个 POST 变量来检测需要执行的操作。
看起来像:
if(isset($_POST['submit']))
... // Don't display query results yet
else
... // Display query results
【讨论】:
具有底层客户端服务器模型,您不只是指整个 HTTP 吗?因为我认为限制来自 HTTP。 是的,我就是这个意思。谢谢。【参考方案2】:您可以像这样轻松检查:
if(isset($_POST['submit']))...
。如果你应该把查询代码和东西放在里面。
【讨论】:
以上是关于添加到相同的php页面并等待用户输入的主要内容,如果未能解决你的问题,请参考以下文章