按Field1 Field2 Field3对ASC和DESC进行排序查询结果
朋友们,我需要得到的帮助,我的网站上有一个过滤器,让我知道如何将结果泄露给mysql数据库,以及Field1 Field2 Field3 ASC和DESC
并希望在表单上创建选择选项的值,以便用户决定是否为每个字段选择选择ASC或DESC顺序过滤器和选项值
<?php
$o = '';
// Pon la información correspondiente:
$data = array( 'localhost', 'user', 'password' );
$con = mysql_connect( $data[0], $data[1], $data[2] );
if( ! $con ) {
$o = 'Error: no se pudo conectar con el servidor. ' . mysql_error();
echo $o;
exit;
}
// Cambia el nombre de la base de datos por la tuya
$db_name = 'database';
if( ! mysql_select_db( $db_name, $con ) ) {
$o = 'Error: no se pudo seleccionar la base de datos "' . $db_name . '". ' . mysql_error();
echo $o;
exit;
}
$table = 'users'; // Cambia este SÓLO si sabes lo que hace.
$query = "SELECT * FROM $table";
$where = " WHERE";
$and = 0;
if( isset( $_GET['Nombre'] ) && ! empty( $_GET['Nombre'] ) ) {
$where .= " Nombre LIKE '%$_GET[Nombre]%'";
$and = 1;
}
if( isset( $_GET['Tarifa'] ) ) {
$e = explode( ' - ', $_GET['Tarifa'] );
if( is_numeric( $e[0] ) && is_numeric( $e[1] ) ) {
if( $and === 1 )
$where .= " AND";
$where .= " Tarifa BETWEEN $e[0] AND $e[1]";
$and = 1;
}
}
if( isset( $_GET['Edad'] ) ) {
$e = explode( ' - ', $_GET['Edad'] );
if( is_numeric( $e[0] ) && is_numeric( $e[1] ) ) {
if( $and === 1 )
$where .= " AND";
$where .= " Edad BETWEEN $e[0] AND $e[1]";
$and = 1;
}
}
if( isset( $_GET['Estatura'] ) ) {
$e = explode( ' - ', $_GET['Estatura'] );
if( is_numeric( $e[0] ) && is_numeric( $e[1] ) ) {
if( $and === 1 )
$where .= " AND";
$where .= " Estatura BETWEEN $e[0] AND $e[1]";
$and = 1;
}
}
if( isset( $_GET['Peso'] ) ) {
$e = explode( ' - ', $_GET['Peso'] );
if( is_numeric( $e[0] ) && is_numeric( $e[1] ) ) {
if( $and === 1 )
$where .= " AND";
$where .= " Peso BETWEEN $e[0] AND $e[1]";
$and = 1;
}
}
if( isset( $_GET['Ciudad'] ) && !empty( $_GET['Ciudad'] ) ) {
if( $and === 1 )
$where .= " AND";
$where .= " Ciudad = '$_GET[Ciudad]'";
$and = 1;
}
if( isset( $_GET['Ojos'] ) && !empty( $_GET['Ojos'] ) ) {
if( $and === 1 )
$where .= " AND";
$where .= " Ojos = '$_GET[Ojos]'";
$and = 1;
}
if( isset( $_GET['Cabello'] ) && !empty( $_GET['Cabello'] ) ) {
if( $and === 1 )
$where .= " AND";
$where .= " Cabello = '$_GET[Cabello]'";
$and = 1;
}
if( strlen( $where ) > 6 )
$query .= $where;
$result = mysql_query( $query, $con);
if( $result ) {
$nrows = mysql_num_rows( $result );
if( $nrows > 0 ) {
$o = '';
while( $row = mysql_fetch_assoc( $result ) ) {
$o .= "$row[Imagen]";
}
$o .= "";
} else {
$o = 'No hubieron resultados';
}
} else {
$o = 'Error: no se ejecutó la consulta. ' . mysql_error( $con );
}
mysql_free_result( $result );
mysql_close( $con );
echo $o . "";
exit;
?>
答案 0 :(得分:0)
要实现排序,您可以添加order by
子句,您可以在其中指定要对选择进行排序的字段。
如果您想让用户决定如何排序,您可以添加一个请求参数,该参数指定升序或降序。 Morover你可以添加一个请求参数“field”,你可以用它来让用户决定他希望选择哪个字段。
答案 1 :(得分:0)
你可以这样做
SELECT * FROM table ORDER BY Field1 ASC,Field2 DESC,Field3 ASC
答案 2 :(得分:0)
我不太明白这个问题,如果您不知道如何为用户提供排序选项,您可以使用具有多个选择的列表框,并在每个项目中查找“TRUE”。 这在这里解释: http://www.abbeyworkshop.com/howto/lamp/php-listbox/index.html
有很多方法可以实现,这是我认为可行的方法。 另一个是组合,所以你先选择要过滤的内容,然后选择一个组合来选择asc或desc,再选择另一个组合等等...你发布那个并在那些组合中查找文本以生成查询字符串