0

I currently have a search form on one page that will look up various restaurants within city limits. Once submitted, you will be directed to a second page with the results displayed within a table.

I need to filter based on the results that are produced from the overall search form. So let's say, I search for "restaurant name". The results are displayed with two columns, one being "Restaurant Name" and the other being "City". What I need the filter to do, I need it to refine my search by city within that result set. I have created a simple form to let the user enter a text search, How do I query the search correctly in order to get the result that I need?

 <?php

      $connection=mysql_connect('***','****','****') or die(mysql_error());
      mysql_select_db('****',$connection) or die(mysql_error());

      $per_page = 20;
      $adjacents = 5; 

      $filter = $_GET['filter'];

      $pages_query = mysql_query("SELECT COUNT('id') FROM broadway") or die(mysql_error());

      $pages = ceil(mysql_result($pages_query, 0) / $per_page);

      $page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1 ;

      $start = ($page - 1) * $per_page;

      $filter = mysql_real_escape_string($filter);


      $query = mysql_query("SELECT * FROM broadway WHERE TYPE = 'Food Service Establishment' AND LOCATE('".$filter."', Name) <> 0 AND LOCATE('".$filter2."', PCITY) <>0 ORDER BY Name ASC, EDATE ASC LIMIT $start, $per_page") or die(mysql_error());


      echo "<table  data-toggle='table' data-sort-name='name' data-sort-order='desc' >";
      echo "<thead>";
      echo "<tr>";
      echo "<th data-sortable='true'>Date</th><th data-field='Name' data-align='left' data-sortable='true'>Name</th><th>City</th><th>Description</th><th>Description</th>";
      echo "</tr>";
      echo "</thead>";

      while($row = mysql_fetch_assoc($query)){
        echo "<tr>";
        echo "<td>{$row['EDATE']}</td>";
        echo "<td>{$row['Name']}</td>";
        echo "<td>{$row['PCITY']}</td>";
        echo "<td>{$row['CODE']}</td>";
        echo  '<td><a class="description" href="/results2.php?nameID=' .$row['ID'].'">' . substr($row['DESCR'], 0, 35) . '</a></td>';
        }

      echo "</table>";
      ?>

      <?php 

Edited by deceptikon: Moved to PHP

2
Contributors
4
Replies
35
Views
2 Years
Discussion Span
Last Post by mgreiner28
1

A better solution may be to have two text boxes one for name and one for city. The problem with filtering on a "sent" set, is that it's just that - "sent" and forgotten about by php. So you'd need to make a separate search for name and city (2nd call) anyhow.

There are some javascript solutions that take the recordset (in json format) and you can filter the resultset on that, but if you have hundreds or thousands of returned results, this becomes very unwieldy. If you limit the resultset to say a hundred, then it may be useful. Dunno.

1

Not off top of my head sorry. It should be straightforward to build a solution one from a JSON object and some HTML template (possibly using Mustache / Handlebars etc).

Have a look at DataTables - I've not used it.

https://www.datatables.net/

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.