- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我为一个应用程序构建了一个搜索表单,它目前只在应该有多个结果的时候拉回结果。我确信这是愚蠢的事情,想知道是否有人可以告诉我我做错了什么。
完整代码如下:
<?php
// php search data in mysql database using PDO
// set data in input text
$TaskId = "";
$ClientId="";
$TaskName = "";
$TaskDescription = "";
$TaskStartAt = "";
if(isset($_POST['Find']))
{
// connect to mysql
try {
$pdoConnect = new PDO("mysql:host=localhost;dbname=tt","root","root");
} catch (PDOException $exc) {
echo $exc->getMessage();
exit();
}
// id to search
//$TaskId = $_POST['TaskId'];
$ClientId = $_POST['ClientId'];
// date to search
//$DateCreated = $_POST['DateCreated'];
// mysql search query
$pdoQuery = "SELECT *
FROM tasks t
left join users u using (UserId)
left join clients cl using (ClientId)
WHERE t.isdeleted = 0 and ClientId = :ClientId";
$pdoResult = $pdoConnect->prepare($pdoQuery);
//set your id to the query id
$pdoExec = $pdoResult->execute(array(":ClientId"=>$ClientId));
if($pdoExec)
{
// if id exist
// show data in inputs
if($pdoResult->rowCount()>0)
{
echo '<table>';
foreach
($pdoResult as $rows)
{
//$TaskId = $row['TaskId'];
$ClientId = $rows['ClientId'];
// $TaskName = $row['TaskName'];
// $TaskDescription = $row['TaskDescription'];
}
echo '</table>';
}
// if the id not exist
// show a message and clear inputs
}else{
echo 'ERROR Data Not Inserted';
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Task Tracker</title>
<link rel="stylesheet" href="css/table.css" type="text/css" />
<link rel="stylesheet" href="assets/demo.css">
<link rel="stylesheet" href="assets/header-fixed.css">
<link href='http://fonts.googleapis.com/css?family=Cookie' rel='stylesheet' type='text/css'>
<script type="text/javascript">
//Display the Month Date and Time on login.
function display_c(){
var refresh=1000; // Refresh rate in milli seconds
mytime=setTimeout('display_ct()',refresh)
}
function display_ct() {
var strcount
var x = new Date()
document.getElementById('ct').innerHTML = x;
tt=display_c();
}
</script>
</head>
<body>
<header class="header-fixed">
<div class="header-limiter">
<h1><a href="#">Task Tracker</a></h1>
<nav>
<a href="dashboard.php" class =>Dashboard</a>
<a href="addtask.php" class=>Task Management</a>
<a href="configuration.php" class =>Configuration</a>
<a href="logout.php" class =>Logout</a>
<a href="search.php" class ="selected">Reports & Analytics</a>
</nav>
</nav>
</div>
</header>
<title> Query a task</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<form action="search.php" method="post">
<!-- Enter a Task Id : <input type="text" name="TaskId" value=""> <br><br> -->
Enter a Client Id : <input type="text" name="ClientId" value="<?php echo $ClientId;?>"><br><br>
<input type="submit" name="Find" value="Find Data">
<br> </br>
<table border="0">
<tr COLSPAN=2 BGCOLOR="lightblue">
<td>Id</td>
<td>Client</td>
<td>Task Name</td>
<td>Task Description</td>
<td>Hours</td>
<td>Date Created</td>
<td>Who Completed Task</td>
</tr>
<?php
{
if($pdoResult->rowCount()>0)
{
echo "<tr>".
"<td>".$rows["TaskId"]."</td>".
"<td>".$rows["ClientName"]."</td>".
"<td>".$rows["TaskName"]."</td>".
"<td>".$rows["TaskDescription"]."</td>".
"<td>".$rows["Hours"]."</td>".
"<td>".$rows["DateCreated"]."</td>".
"<td>".$rows["UserName"]."</td>".
"</tr>";
}
else{
echo 'No data associated with this Id';
}
}
?>
</table>
</form>
</body>
</html>
最佳答案
乍一看,这似乎只是因为您将功能拆分得太多了。
在页面顶部,您可以建立数据库连接并检索结果集。然后通过 PDO 语句对象回显 table
元素、foreach
,并将当前行的内容分配给变量 $rows
。注意:当前行的内容。
在页面的更下方,您使用 $rows['field']
echo
各个字段 — 但您在外部执行此操作你的 foreach
循环。由于 $rows
每次循环时都会重新填充,并且由于您在循环完成后没有销毁变量,所以您最终得到的变量仍然包含结果的最后一行设置。
您需要将实际打印每一行内容的位置放在循环中,循环遍历您的语句对象以检索字段。另一方面,如果根本没有输入任何用户输入,您根本不想这样做,所以整个事情仍然需要在第一个条件的肯定分支内检查 $_POST[' Find']
已设置,如下面的版本所示。
我首先将变量 $results
指定为一个空字符串——如果用户根本没有发送表单,我们将输出该值。如果 $_POST['Find']
不为空,那么我们搜索数据库,遍历结果集,在这个循环中创建一个 HTML 字符串,并将结果存储在 $results
变量。如果没有返回任何行或 execute()
调用完全失败,我们将抛出一个由异常处理程序处理的异常(您必须在中央级别为整个项目定义),传递要显示给用户的一般错误消息。
请注意,我还删除了很多无关的内容和注释以使相关位更清晰,并将 $rows
变量重命名为 $row
以使其成为清楚,因为它是在一个循环中填充的,所以它包含一个行,而不是所有行。
<?php
// Set the global exception handler—should of course be done
// in a global boilerplate file, rather than for each file
set_exception_handler('your_exception_handler_here');
$results = "";
if(!empty($_POST['Find']))
{
$pdoConnect = new PDO("mysql:host=localhost;dbname=tt","root","root");
$pdoConnect->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$ClientId = $_POST['ClientId'];
$pdoQuery = "SELECT *
FROM tasks t
left join users u using (UserId)
left join clients cl using (ClientId)
WHERE t.isdeleted = 0 and ClientId = :ClientId";
$pdoResult = $pdoConnect->prepare($pdoQuery);
$pdoExec = $pdoResult->execute(array(":ClientId"=>$ClientId));
if($pdoResult->rowCount()>0)
{
$results = '<table border="0">
<tr COLSPAN=2 BGCOLOR="lightblue">
<td>Id</td>
<td>Client</td>
<td>Task Name</td>
<td>Task Description</td>
<td>Hours</td>
<td>Date Created</td>
<td>Who Completed Task</td>
</tr>';
foreach ($pdoResult as $row)
{
$ClientId = $row['ClientId'];
$results .= "<tr>".
"<td>".$row["TaskId"]."</td>".
"<td>".$row["ClientName"]."</td>".
"<td>".$row["TaskName"]."</td>".
"<td>".$row["TaskDescription"]."</td>".
"<td>".$row["Hours"]."</td>".
"<td>".$row["DateCreated"]."</td>".
"<td>".$row["UserName"]."</td>".
"</tr>";
}
$results .= "</table>";
} else {
$return = '<span class="error_message">No data associated with this Id</span>');
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Task Tracker</title>
</head>
<body>
<title>Query a task</title>
<form action="search.php" method="post">
Enter a Client Id : <input type="text" name="ClientId" value="<?php echo $ClientId;?>"><br><br>
<input type="submit" name="Find" value="Find Data">
</form>
<?php
echo $results;
?>
</body>
</html>
关于php - PDO MySQL 查询只返回一组结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38163027/
我有三张 table 。表 A 有选项名称(即颜色、尺寸)。表 B 有选项值名称(即蓝色、红色、黑色等)。表C通过将选项名称id和选项名称值id放在一起来建立关系。 我的查询需要显示值和选项的名称,而
在mysql中,如何计算一行中的非空单元格?我只想计算某些列之间的单元格,比如第 3-10 列之间的单元格。不是所有的列...同样,仅在该行中。 最佳答案 如果你想这样做,只能在 sql 中使用名称而
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
我正在为版本7.6进行Elasticsearch查询 我的查询是这样的: { "query": { "bool": { "should": [ {
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
是否可以编写一个查询来检查任一子查询(而不是一个子查询)是否正确? SELECT * FROM employees e WHERE NOT EXISTS (
我找到了很多关于我的问题的答案,但问题没有解决 我有表格,有数据,例如: Data 1 Data 2 Data 3
以下查询返回错误: 查询: SELECT Id, FirstName, LastName, OwnerId, PersonEmail FROM Account WHERE lower(PersonEm
以下查询返回错误: 查询: SELECT Id, FirstName, LastName, OwnerId, PersonEmail FROM Account WHERE lower(PersonEm
我从 EditText 中获取了 String 值。以及提交查询的按钮。 String sql=editQuery.getText().toString();// SELECT * FROM empl
我有一个或多或少有效的查询(关于结果),但处理大约需要 45 秒。这对于在 GUI 中呈现数据来说肯定太长了。 所以我的需求是找到一个更快/更高效的查询(几毫秒左右会很好)我的数据表大约有 3000
这是我第一次使用 Stack Overflow,所以我希望我以正确的方式提出这个问题。 我有 2 个 SQL 查询,我正在尝试比较和识别缺失值,尽管我无法将 NULL 字段添加到第二个查询中以识别缺失
什么是动态 SQL 查询?何时需要使用动态 SQL 查询?我使用的是 SQL Server 2005。 最佳答案 这里有几篇文章: Introduction to Dynamic SQL Dynami
include "mysql.php"; $query= "SELECT ID,name,displayname,established,summary,searchlink,im
我有一个查询要“转换”为 mysql。这是查询: select top 5 * from (select id, firstName, lastName, sum(fileSize) as To
通过我的研究,我发现至少从 EF 4.1 开始,EF 查询上的 .ToString() 方法将返回要运行的 SQL。事实上,这对我来说非常有用,使用 Entity Framework 5 和 6。 但
我在构造查询来执行以下操作时遇到问题: 按activity_type_id过滤联系人,仅显示最近事件具有所需activity_type_id或为NULL(无事件)的联系人 表格结构如下: 一个联系人可
如何让我输入数据库的信息在输入数据 5 分钟后自行更新? 假设我有一张 table : +--+--+-----+ |id|ip|count| +--+--+-----+ |
我正在尝试搜索正好是 4 位数字的 ID,我知道我需要使用 LENGTH() 字符串函数,但找不到如何使用它的示例。我正在尝试以下(和其他变体)但它们不起作用。 SELECT max(car_id)
我有一个在 mysql 上运行良好的 sql 查询(查询 + 连接): select sum(pa.price) from user u , purchase pu , pack pa where (
我是一名优秀的程序员,十分优秀!