2014-09-22 3 views
0

Я пытаюсь отфильтровать некоторые данные с помощью раскрывающегося списка. Когда пользователь выбирает кнопку «Год/Деление» и «Фильтр щелчка», он должен читать всю строку из базы данных, которая содержит значение. Это насколько я могу идти, и это не сработало. Надеюсь, кто-то может мне помочь.Как фильтровать данные с помощью раскрывающегося списка

if (isset($_GET['do'])) 
{ 
    if($_GET['do'] == 'filter') 
    { 
     if(empty($_POST['key_year'])) 
     { 
      redirect("list.php"); 
     } 
     else 
     { 
      $_SESSION['key_year'] = $_POST['key_year'];   
      $_SESSION['key_division'] = $_POST['key_division'];   
     } 
    } 
    else if($_GET['do'] == 'clear') 
    { 
     unset($_SESSION['key_year']); 
     redirect("list.php"); 
    } 
    else 
    {} 
} 
$limit = 10;  
$page = (isset($_GET['page'])) ? $_GET['page'] : 1; 
$end = (isset($_GET['page'])) ? ($limit * $_GET['page']) : $limit; 
$offset = (isset($_GET['page'])) ? ($limit * $_GET['page']) - $limit : 0; 
$start = $offset +1; 
$next = $page + 1; 
$prev = $page - 1; 
$key_year = (isset($_SESSION['key_year'])) ? $_SESSION['key_year'] : ''; 
$key_year = (isset($_SESSION['key_division'])) ? $_SESSION['key_division'] : ''; 

$sql = "SELECT * FROM tbl_perfomance "; 
$sql .= "ORDER BY `p_aid` ASC"; 
$sql .= " LIMIT $offset, $limit"; 
$rs = mysql_query($sql); 

$sql2="SELECT COUNT(p_aid) AS total FROM tbl_perfomance "; 
if(isset($key_year) && isset($key_division)) 
{ 
    $sql2 .= "WHERE p_year LIKE '%$key_year%' AND p_division LIKE '%$key_division%'"; 
} 
$rs2=mysql_query($sql2); 
$getRec = mysql_fetch_assoc($rs2); 
//total 
$rowCount=$getRec['total']; 
$end = ($end > $rowCount) ? $rowCount : $end; 
$total_page = ceil($rowCount/$limit); 

$for_start = ($page <= 2) ? 1 : $page - 2; 
$for_stop_tmp = $page + 2; 
$for_stop = ($for_stop_tmp > $total_page) ? $total_page : $page + 2; 

Это форму.

  <form name="filter" action="list.php?do=filter" method="GET"> 
        </label> 
        <label style="color:darkgreen;float:left;width:11%" align="left"> 
         Division 
         <select name="key_division"> 
          <option value="All">All</option> 
          <option value="ITNT">ITNT</option> 
          <option value="ITP">ITP</option> 
         </select> 
        </label>  -->     
        <label style="color:darkgreen;float:left;width:11%" align="left">       
         Year   
         <select name="key_year"> 
          <option value="all">All</option> 
          <option value="2014">2014</option> 
          <option value="2015">2015</option> 
         </select> 
        </label> 
        <label style="color:darkgreen;float:left;width:11%" align="left"> 
        </label><br> 
         <input class="button_green" type="submit" value="Filter &raquo;" /> 

      </form> 
+0

попытайтесь повторить свой запрос sql и протестируйте его в phpmyadmin – Khushboo

ответ

0

Я чувствую, вы просто добавив условия для подкачки SQL не для SQL контента

Попробуйте изменить код что-то вроде этого, так что у вас есть надлежащее $sql1 и $sql2.

$sql = "SELECT * FROM tbl_perfomance "; 

$sql2="SELECT COUNT(p_aid) AS total FROM tbl_perfomance "; 
if(isset($key_year) && isset($key_division)) 
{ 
    $sql2 .= "WHERE p_year LIKE '%$key_year%' AND p_division LIKE '%$key_division%'"; 
    $sql1 .= "WHERE p_year LIKE '%$key_year%' AND p_division LIKE '%$key_division%'"; 
} 

$sql .= "ORDER BY `p_aid` ASC"; 
$sql .= " LIMIT $offset, $limit"; 
$rs = mysql_query($sql); 

$rs2=mysql_query($sql2); 
$getRec = mysql_fetch_assoc($rs2); 

как только вы сделаете это, чем эхо как запросы и запускать их прямо в PHP MyAdmin или любой другой инструмент тузд, чтобы убедиться, что они работают.

Смежные вопросы