2016-04-30 2 views
2

У меня есть форма поиска. здесь много полей. иногда я формирую submit с одним полем, иногда формирую submit с двумя, а иногда и несколькими значениями поля.поиск по нескольким полям. иногда одним полем и иногда более чем одним полем

 if (isset($_POST['search'])) { 
     $projectName  = $_POST['pName']; 
     $clientId  = $_POST['s_by_clientName']; 
     $departmentId = $_POST['s_by_department']; 
     $statusName = $_POST['s_by_status']; 
     if (!empty($projectName)) 
     { 
      $searchSql = mysql_query("select * from project_list where projectName='$projectName'"); 
     } 

     if (!empty($clientId)) 
     { 
      $searchSql = mysql_query("select * from project_list where client_id='$clientId'"); 
     } 

     if (!empty($departmentId)) 
     { 
      $searchSql = mysql_query("select * from project_list where department_id='$departmentId'"); 
     } 

     if (!empty($statusName)) 
     { 
      $searchSql = mysql_query("select * from project_list where status='$statusName'"); 
     } 

    } 

это запрос только для поиска по одному полю. Как сделать запрос, который выполняет поиск по одному или нескольким значениям поля Возможно ли это?

+1

mysql_query() является устаревшим в PHP 5.5 и удалены в PHP 7. Просьба обновить код, чтобы использовать Mysqli библиотеку PDO. Попробуйте сохранить параметры поиска в массиве и добавить в запрос запрос AND или OR, если отправлено более одного поля. – Shubhamoy

+0

о да ... это уже существующий проект. просто подстраивая –

ответ

1

Использование Конкатенация в запросе переменной

$searchSql ="select * from project_list where 1=1 "; 
if (isset($_POST['search'])) { 
    $projectName  = $_POST['pName']; 
    $clientId  = $_POST['s_by_clientName']; 
    $departmentId = $_POST['s_by_department']; 
    $statusName = $_POST['s_by_status']; 
    if (!empty($projectName)) 
    { 
     $searchSql. = " AND projectName='$projectName'"; 
    } 
    if (!empty($clientId)) 
    { 
     $searchSql. = " AND client_id='$clientId'"; 
    } 
    if (!empty($departmentId)) 
    { 
     $searchSql. = " AND department_id='$departmentId'"; 
    } 
    if (!empty($statusName)) 
    { 
     $searchSql. = " AND status='$statusName'"; 
    } 
} 
$result=mysql_query($searchSql); 

ПРИМЕЧАНИЕ: mysql_query() является устаревшим в PHP 5.5 и удалены в PHP 7. Просьба обновить, чтобы использовать библиотеку mysqli PDO.

+0

Спасибо вам, мух ... @ Sanooj T –

+0

Добро пожаловать, мой друг –

+0

")" нет необходимости закрывать круглую скобку в конце запроса –

1

Вы можете построить increntale запрос

<code> 
if (isset($_POST['search'])) { 
    $projectName  = $_POST['pName']; 
    $clientId  = $_POST['s_by_clientName']; 
    $departmentId = $_POST['s_by_department']; 
    $statusName = $_POST['s_by_status']; 
    $my_sql = "select * from project_list "; 
    $my_where = ""; 
    if (!empty($projectName)) 
    { 
     if ($my_where = ""){ 
      $my_sql .= "where "; 
     } else { 
      $my_sql .= "and "; 
     } 
     $my_sql .= "projectName='$projectName'"; 

    } 
    if (!empty($clientId)) 
    { 

     if ($my_where = ""){ 
      $my_sql .= "where "; 
     } else { 
      $my_sql .= "and "; 
     } 
     $my_sql .= "client_id='$clientId'"; 

    } 
    if (!empty($departmentId)) 
    { 
     if ($my_where = ""){ 
      $my_sql .= "where "; 
     } else { 
      $my_sql .= "and "; 
     } 
     $my_sql .= "department_id='$departmentId'"; 


    } 
    if (!empty($statusName)) 
    { 
     if ($my_where = ""){ 
      $my_sql .= "where "; 
     } else { 
      $my_sql .= "and "; 
     } 
     $my_sql .= "status='$statusName'"; 

    } 
} 

1

Здесь я использовал столбец id как primary key . Измените его в соответствии с именем столбца.

$query = "SELECT * FROM project_list WHERE id is not null"; 

Код

<? 
if (isset($_POST['search'])) { 
    $projectName  = $_POST['pName']; 
    $clientId  = $_POST['s_by_clientName']; 
    $departmentId = $_POST['s_by_department']; 
    $statusName = $_POST['s_by_status']; 

    // Here I used coloumn 'id' as primary key & auto-increment. Change it as per your column name. 
    $query = "SELECT * FROM project_list WHERE id is not null" 

    if (!empty($projectName)) 
    { 
     $query. = " AND projectName='".$projectName."'"; 
    } 
    if (!empty($clientId)) 
    { 
     $query. = " AND client_id='".$clientId."'"; 
    } 
    if (!empty($departmentId)) 
    { 
     $query. = " AND department_id='".$departmentId."'"; 
    } 
    if (!empty($statusName)) 
    { 
     $query. = " AND project_list='".$statusName."'"; 
    } 

    $searchSql = mysql_query($query); 
} 
Смежные вопросы