Php 输出按顺序排列
我有一个表,将数据库中的所有信息放在一个页面上。我想添加一个下拉列表,显示按名字、姓氏、组等排序 我如何做到这一点Php 输出按顺序排列,php,mysql,Php,Mysql,我有一个表,将数据库中的所有信息放在一个页面上。我想添加一个下拉列表,显示按名字、姓氏、组等排序 我如何做到这一点 <?php $query = "SELECT * FROM contacts WHERE type = 'lead'"; $result = mysql_query($query); if (!$result) { die('Invalid query: ' . mysql_error()); } ?> <table> <tr
<?php $query = "SELECT * FROM contacts WHERE type = 'lead'";
$result = mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error()); } ?>
<table>
<tr><td>ID</td> <td>Name</td> <td>Email</td></tr>
<?php
while ($row = mysql_fetch_assoc($result))
{
echo '<tr>';
echo '<td>' . $row['id'] . '</td>';
echo '<td>' . $row['name'] . '</td>';
echo '<td>' . $row['email'] . '</td>';
echo '<td>' . '<a href = "/admin/leads/convert-contact.php?id=' . $row[id] . '">Make Contact</a>';
echo '</tr>';
}
echo '</table>';
?>
请注意,所有排序列必须是类型兼容的(例如,所有字符/变量字符或所有数字)
名字
第二个名字
组
PHP文件中的
if($_POST['orderby']=='firstname') $lastpart= 'ORDER BY firstname';
if($_POST['orderby']=='lastname') $lastpart= 'ORDER BY lastname';
if($_POST['orderby']=='group') $lastpart= 'GROUP BY field';
<?php $query = "SELECT * FROM contacts WHERE type = 'lead' $lastpart"; ----
if($_POST['orderby']='firstname')$lastpart='orderby firstname';
如果($_POST['orderby']='lastname')$lastpart='orderbylastname';
如果($_POST['orderby']='group')$lastpart='groupby field';
也许:
名字
第二个名字
名称
团体
ID名称电子邮件
一点AJAX就可以使其成为可重新排序的输出。从下面的例子中可以看出,这并不难
下面的代码将在页面上放置一个下拉列表,并允许用户选择排序顺序。选择后,排序结果将显示在div中。然后用户可以选择不同的排序顺序,这些结果将显示在div中
HTML:
$(文档).ready(函数(){
$('#mysel').change(function(){
var sby=$(this.val();
//警报(sby);
$.ajax({
类型:“POST”,
url:“另一个php文件.php”,
数据:'sortby='+sby,
成功:函数(数据){
$(“#结果”).html(数据);
}
});
});
}); //END$(document.ready())
选一个
按姓氏排序
按名字排序
另一个php文件.php
<?php
$order = $_POST['sortby'];
// Do your database login here
$output = '<table><tr><td>ID</td><td>Name</td><td>Email</td></tr>';
$result = mysql_query("SELECT * FROM contacts WHERE type = 'lead' ORDER BY '$order'");
$num_rows = mysql_num_rows($result);
while ($row = mysql_fetch_assoc($result)) {
$output .= '<tr>';
$output .= '<td>' . $row['id'] . '</td>';
$output .= '<td>' . $row['name'] . '</td>';
$output .= '<td>' . $row['email'] . '</td>';
$output .= '<td>' . '<a href = "/admin/leads/convert-contact.php?id=' . $row[id] . '">Make Contact</a>';
$output .= '</tr>';
}
$output .= '</table>';
echo $output;
..
到目前为止,您尝试了什么?Mysql_*函数已弃用。检查mysqli_*或PDO。对于您的问题:使用下拉和提交按钮将表单放在那里。在下拉列表中添加一些值1、2、3等。然后进行切换,并添加到查询(1-名字=>按姓氏排序),(2-姓氏-按姓氏排序)等。请进一步解释此sql查询。如何从select/option字段获取结果并将sql语句更改为order by“X”。有人能详细说明sql语句应该是什么样子吗?
if($_POST['orderby']=='firstname') $lastpart= 'ORDER BY firstname';
if($_POST['orderby']=='lastname') $lastpart= 'ORDER BY lastname';
if($_POST['orderby']=='group') $lastpart= 'GROUP BY field';
<?php $query = "SELECT * FROM contacts WHERE type = 'lead' $lastpart"; ----
<form action='this page url' type='post'>
<select name='orderby'>
<option value='0'>First Name</option>
<option value='1'>Second Name</option>
<option value='2'> Name</option>
<option value='3'> Group</option>
</select>
<input type='submit' name='querygroup' value='Order'/>
</form>
<table>
<tr><td>ID</td> <td>Name</td> <td>Email</td></tr>
<?php
if(isset($_POST['querygroup'])){
if(is_numeric($_POST['orderby'])){
$query = "SELECT * FROM contacts WHERE type = 'lead' ORDER BY CASE '".$_POST['orderby']."' WHEN '0' THEN field_name WHEN '1' THEN field_name [other options] ELSE field_name END";
$result = mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
while ($row = mysql_fetch_assoc($result)){
echo '<tr>';
echo '<td>' . $row['id'] . '</td>';
echo '<td>' . $row['name'] . '</td>';
echo '<td>' . $row['email'] . '</td>';
echo '<td>' . '<a href = "/admin/leads/convert-contact.php?id=' . $row[id] . '">Make Contact</a>';
echo '</tr>';
}
}
}
?>
</table>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#mysel').change(function() {
var sby = $(this).val();
//alert(sby);
$.ajax({
type: "POST",
url: "another_php_file.php",
data: 'sortby=' + sby,
success: function(thedata) {
$("#results").html(thedata) ;
}
});
});
}); //END $(document).ready()
</script>
</head>
<body>
<div id="results"></div>
<select id="mysel">
<option value = '0'>Choose One</option>
<option value = 'last'>Sort by Last Name</option>
<option value = 'first'>Sort by First Name</option>
</select>
</body>
</html>
<?php
$order = $_POST['sortby'];
// Do your database login here
$output = '<table><tr><td>ID</td><td>Name</td><td>Email</td></tr>';
$result = mysql_query("SELECT * FROM contacts WHERE type = 'lead' ORDER BY '$order'");
$num_rows = mysql_num_rows($result);
while ($row = mysql_fetch_assoc($result)) {
$output .= '<tr>';
$output .= '<td>' . $row['id'] . '</td>';
$output .= '<td>' . $row['name'] . '</td>';
$output .= '<td>' . $row['email'] . '</td>';
$output .= '<td>' . '<a href = "/admin/leads/convert-contact.php?id=' . $row[id] . '">Make Contact</a>';
$output .= '</tr>';
}
$output .= '</table>';
echo $output;