首页 > 解决方案 > PHP按域名排序数据库

问题描述

我有一个问题,我必须从数据库中取出域名,并创建一个knokpu,我可以使用它按此域对数据库进行排序,也就是说,如果我点击gmail按钮,那么应该对带有gmail的用户进行排序,如果有 yahoo 用户,那么当您单击 yahoo 按钮时,也会执行排序。问题是我不知道如何正确地将按钮与排序相关联......我将非常感谢您的帮助。

这是我的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>

设计:

设计

标签: phphtmlcss

解决方案


我认为您的意思是,您想根据单击的电子邮件提供商按钮过滤数据?

您可以像这样添加 HTML:

...
<a href="?filterBy=gmail.com">
  <button>gmail.com</button>
</a>
<a href="?filterBy=inbox.lv">
  <button>inbox.lv</button>
</a>
<a href="?filterBy=yahoo.lv">
  <button>yahoo.lv</button>
</a>
...

在 PHP 中,您需要更新这一行:

...
if (isset($_GET['orderBy']) && in_array($_GET['orderBy'], $orderBy)) {
  $order = $_GET['orderBy'];
}
$filter = "";
if (isset($_GET['filterBy'])) {
  $filter = "WHERE `email` LIKE ?";
}
$query = 'SELECT * FROM users '.$filter.' ORDER BY '.$order;
$prepare = mysqli_prepare($db, $query);
if (isset($_GET['filterBy'])) {
   $param = "%".$_GET['filterBy'];
   $prepare->bind_param('s', $param);
}
$prepare->execute();
// $records = mysqli_query($db, $query); // change this query to:
$records = $prepare->get_result();
...

推荐阅读