problems with a search form

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
kujtim
Forum Commoner
Posts: 35
Joined: Sat Oct 25, 2003 4:00 am
Location: kosovo
Contact:

problems with a search form

Post by kujtim »

this is an html page :

Code: Select all

<html>
<head>
  <title></title>
</head>

<body>
 <form name="form" action="php.php" method="get">
  <input type="text" name="q" />
  <input type="submit" name="Submit" value="Search" />
</form>

</body>

</html>
this is an php page :

Code: Select all

<html>

<head>
  <title></title>
</head>

<body>

<?php

  // 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("localhost","administrator",""); //(host, username, password)

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

// Build SQL Query
$query = "select * from the_table where 1st_field like "%$trimmed%"
  order by 1st_field"; // 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["1st_field"];

  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>";

?>


</body>

</html>
the problem si .:
if you can see i have to create a database table ...
i now how to create table but i don't now what to put on it
please help....

Added phptags around code --JAM
User avatar
m3mn0n
PHP Evangelist
Posts: 3548
Joined: Tue Aug 13, 2002 3:35 pm
Location: Calgary, Canada

Post by m3mn0n »

You should replace $var with $trimmed in many places in your script.

Code: Select all

<?php
// Build SQL Query 
$query = "select * from the_table where 1st_field like "%$trimmed%" 
  order by 1st_field"; // EDIT HERE and specify your table and field names for the SQL query 
?>
From that piece of code, I can see the fields in the database all have a keyword named 1st_field that they are identified by in searches.

Is this some open source applications your experimenting with? If so, didn't it come with documentation that tells you what info you need to add to the tables?
Post Reply