2013-02-23 52 views
1

排序查詢結果,以便排序查詢結果,以便通過字段1字段2字段3 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

雖然我沒有真正得到你想要實現的。代碼是非常糟糕的做法。請閱讀關於sql注入和如何預防。 [鏈接] http://php.net/manual/en/security.database.sql-injection.php – 2013-02-23 11:52:04

回答

0

要實現排序可以添加一個order by子句,您可以在其中指定要對選擇進行排序的字段。

如果您想讓用戶決定如何排序,您可以添加一個請求參數,該參數指定升序或降序。 Morover可以添加一個請求參數「field」,您可以使用它來讓用戶決定他希望按照哪個字段進行排序。

0

你可以這樣做

SELECT * FROM table ORDER BY Field1 ASC,Field2 DESC,Field3 ASC 
0

我不很明白的問題,如果你不知道如何給用戶提供一個選項進行排序,您可以使用多個選擇列表框,和你看爲每個項目中的「TRUE」。 這是在這裏解釋: http://www.abbeyworkshop.com/howto/lamp/php-listbox/index.html

有很多方法來實現,這是我認爲會工作。 另一種方法是有組合,所以你選擇先過濾什麼,然後組合選擇asc或desc,然後是另一個組合,等等......你發佈並查找這些組合中的文本以進行查詢串。

相關問題