【发布时间】:2021-09-17 04:55:09
【问题描述】:
我有一个问题,我必须从数据库中取出域名,并创建一个 knokpu,我可以使用它按此域对数据库进行排序,也就是说,如果我点击 gmail 按钮,那么使用 gmail 的用户应该排序,如果有雅虎用户,那么当你点击雅虎按钮时,也会进行排序。 问题是我不知道如何正确地将按钮与排序相关联......我将非常感谢您的帮助。
这是我的 php 代码。
<!DOCTYPE html>
<html>
<head>
<title>Display all records from Database</title>
</head>
<body>
<h2>All emails</h2>
<table border="2">
<tr>
<td>Sr.No.</td>
<td>E-mail</td>
<td>Delete</td>
<td>CSV</td>
</tr>
<a href="?orderBy=email">
<button>Sort By E-mail</button>
</a>
<a href="?orderBy=date">
<button>Sort By Date</button>
</a>
<a href="?orderBy=">
<button>Export as CSV</button>
</a>
</br>
<?php
include "php/server.php"; // Using database connection file here
$orderBy = array('email', 'date'); // create array of sort options
$order='date'; // default sort option
if (isset($_GET['orderBy']) && in_array($_GET['orderBy'], $orderBy)) {
$order = $_GET['orderBy'];
} // change sort option depending on $order
$query = 'SELECT * FROM users ORDER BY '.$order;
$records = mysqli_query($db, $query); // fetch data from database
$dom=array();
include "php/search.php"; //include search engine
if(isset($_POST["submit"])){ //if button is pressed fecth data from search
$records = mysqli_query($db, $searchquery);
}else{ //if not fecth data from db
$records = mysqli_query($db, $query);
}
while($data = mysqli_fetch_array($records))
{
$parts = explode('@', $data['email']);
$domain = array_pop($parts);
?>
<tr>
<td><?php echo $data['email']; ?></td>
<td><?php echo $data['date']; ?></td>
<td><a href="php/delete.php?id=<?php echo $data['id']; ?>">Delete</a></td>
<td><a><input type="checkbox" id="horns" name="horns"></td>
<td><?php echo $domain; ?></td>
</tr>
<tr>
<input type="submit" name="<?php $domain; array_push($dom,$domain)?>" value="<?php echo $domain; ?>">
</tr>
<?php
}
var_dump($dom);
?>
<h3>Emails is sorting by:<?php echo $order ?></h3>
</table>
</body>
</html>
设计:
【问题讨论】:
-
传递一个参数,告诉您排序依据,就像您为日期和电子邮件所做的那样。为什么你觉得这会有所不同?
-
@El_Vanja 我只是想不出在单击按钮时如何使给定域名的搜索工作。
-
@Natrien 您想按域排序还是按域过滤?
-
@MohdAlomar 我希望在加载数据库时,我得到其中的各种域,出现带有域名称的按钮,通过单击它们,我应该只获得这样的记录域。(因此,如果我点击 gmail.com,只会显示域为 gmail.com 的电子邮件)
-
您需要使用pattern matching。请使用参数化查询来避免SQL Injection。请访问此答案以了解如何avoid SQL Injection