Hi guys,

I'm implementing a feature on my site were you can search a database and it will bring back results on a page.

I'm not too good with programming as I'm just a casual webmaster so I'm using this tutorial: http://www.designplace.org/scripts.php?page=1&c_id=25

The problem is everytime I click submit it just brings up the text: "Please enter a search..."

I think the problem lies at the database select info. The database contains one table called ClassNotes which holds 55 records.

This is what I used:

<?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","alumni_alumni","alumni"); //(host, username, password)

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

// Build SQL Query  
$query = "select * from ClassNotes 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: &quot;" . $trimmed . "&quot; 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: &quot;" . $var . "&quot;</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\">&lt;&lt; 
  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 &gt;&gt;</a>";
  }

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

Any help would be great

Recommended Answers

$var = @$_GET['q'] ;
  echo $var;

echo your $var variable to know whether you getting the value when you submit. I thought it is not coming.

Also check after submit, you have the url with the query string follwed by quesiton mark.

Jump to Post

Your index file action attribue value should look like below:

<form  method="post" action=[B]"search.php?q=10"[/B]  id="searchform"> 
 <input  type="text" name="name"> 
<input  type="submit" name="submit" value="Search"> 
</form>

Now test it.

Jump to Post

All 7 Replies

Member Avatar
$var = @$_GET['q'] ;
  echo $var;

echo your $var variable to know whether you getting the value when you submit. I thought it is not coming.

Also check after submit, you have the url with the query string follwed by quesiton mark.

I added that line and nothing changed.

I'm not sure how to do the second part though - this is just a personal site, I'm not really a web technical person.

I uploaded the files I was using here: www.dndiscounts.info/search.zip

Thanks

Member Avatar

Your index file action attribue value should look like below:

<form  method="post" action=[B]"search.php?q=10"[/B]  id="searchform"> 
 <input  type="text" name="name"> 
<input  type="submit" name="submit" value="Search"> 
</form>

Now test it.

Now I get this error:


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/username/public_html/search/search.php on line 44


=(

Member Avatar

Change like below to know the error in query

$numresults = mysql_query($query) or die ("Error in query: $query. ".mysql_error()); 
 $numrows=mysql_num_rows($numresults);

Error in query: select * from ClassNotes where 1st_field like "%10%" order by 1st_field. Unknown column '1st_field' in 'where clause'


I'm not sure how to select the table from the database

http://i34.tinypic.com/64pi13.png is the structure of the database

Member Avatar

Click the structure tab and select your table to know the fieldname. Actually there is no field with the name 1st_field, it may be wrong. I think the field will not start with a digit.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.