Page 1 of 1

multi input form

Posted: Thu Jul 13, 2006 3:17 pm
by adult.swim
Ive created a single input form. Its input is later compared to a column in the mysql database that Ive created (so basically its a search form).

My question is how are multi input forms generally handled? My understanding is that when u query a database, u can only traverse 1 column. Is it possible to take multiple inputs and check multiple columns at the same time?

Here is the code I have for my form and search pages:

form.html

Code: Select all

<form name="form" action="search.php" method="get">
  mlsnumber:
  	<input type="text" name="q" />
  	<input type="submit" name="Submit" value="Search" />
</form>Now, enter
search.php

Code: Select all

// Get the search variable from URL
  $var = @$_GET['q'] ;
  $trimmed = trim($var); //trim whitespace from the stored variable

// rows to return
$limit=10; 

// check for an empty string and display a message.
if ($trimmed == "")
  {
  echo "<p>Please enter a search...</p>";
  exit;
  }

// check for a search parameter
if (!isset($var))
  {
  echo "<p>We dont seem to have a search parameter!</p>";
  exit;
  }

//connect to your database ** EDIT REQUIRED HERE **
mysql_connect("***", "***", "***"); //(host, username, password)

//specify database ** EDIT REQUIRED HERE **
mysql_select_db("homep_listings") or die("Unable to select database"); //select which database we're using

// Build SQL Query  
$query = "select * from listings where mlsnumber like '%$trimmed%'  
  order by mlsnumber"; // EDIT HERE and specify your table and field names for the SQL query

 $numresults=mysql_query($query);
 $numrows=mysql_num_rows($numresults);

// If we have no results, offer a google search as an alternative

if ($numrows == 0)
  {
  echo "<h4>Results</h4>";
  echo "<p>Sorry, your search: "" . $trimmed . "" returned zero results</p>";

// google
 echo "<p><a href=\"http://www.google.com/search?q=" 
  . $trimmed . "\" target=\"_blank\" title=\"Look up 
  " . $trimmed . " on Google\">Click here</a> to try the 
  search on google</p>";
  }

// next determine if s has been passed to script, if not use 0
  if (empty($s)) {
  $s=0;
  }

// get results
  $query .= " limit $s,$limit";
  $result = mysql_query($query) or die("Couldn't execute query");

// display what the person searched for
echo "<p>You searched for: "" . $var . ""</p>";

// begin to show results set
echo "Results";
$count = 1 + $s ;

// now you can display the results returned
  while ($row= mysql_fetch_array($result)) {
  $title = $row["mlsnumber"];

  echo "$count.)&nbsp;$title" ;
  $count++ ;
  }

$currPage = (($s/$limit) + 1);

//break before paging
  echo "<br />";

  // next we need to do the links to other results
  if ($s>=1) { // bypass PREV link if s is 0
  $prevs=($s-$limit);
  print "&nbsp;<a href=\"$PHP_SELF?s=$prevs&q=$var\"><< 
  Prev 10</a>&nbsp&nbsp;";
  }

// calculate number of pages needing links
  $pages=intval($numrows/$limit);

// $pages now contains int of pages needed unless there is a remainder from division

  if ($numrows%$limit) {
  // has remainder so add one page
  $pages++;
  }

// check to see if last page
  if (!((($s+$limit)/$limit)==$pages) && $pages!=1) {

  // not last page so give NEXT link
  $news=$s+$limit;

  echo "&nbsp;<a href=\"$PHP_SELF?s=$news&q=$var\">Next 10 >></a>";
  }

$a = $s + ($limit) ;
  if ($a > $numrows) { $a = $numrows ; }
  $b = $s + 1 ;
  echo "<p>Showing results $b to $a of $numrows</p>";

Posted: Thu Jul 13, 2006 3:48 pm
by Ward

Code: Select all

SELECT *
FROM listings
WHERE mlsnumber LIKE '%$trimmed%'
OR other_field LIKE '%$trimmed%'
OR another_field LIKE '%$trimmed'
This is a very simple way of doing it, you won't get results ordered by relevancy, but it will work.

Posted: Thu Jul 13, 2006 6:06 pm
by RobertGonzalez
Remember, too, that OR returns all records where any one of the fields matches the given criteria. AND returns only those records where alls fields (included in the AND) match the given criteria.