Search script

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
minds_gifts
Forum Commoner
Posts: 63
Joined: Mon Feb 10, 2003 4:23 am

Search script

Post by minds_gifts »

Hello everybody,

Following search script search for the keywords.
I've got a table called articles(article_id, article_name, article_file, article_keywords)

I search for the keywords and display the article names, its working fine!
I want to highlight these article names so that when i click on the article name, the file name which is under article_file has to be shown.

Could somebody please tell me how can i modify my code further.

Many thanks

Code: Select all

<?php

// Get the search variable from URL

  $var = @$_GET['q'] ;
//trim whitespace from the stored variable  
  $trimmed = trim($var); 
// 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>You dont seem to have a search parameter!</p>";
  exit;
  }
//connect to your database 
mysql_connect("localhost","myadmin",""); 

//specify database 
mysql_select_db("versatile") or die("Unable to select database"); 


// Build SQL Query  

 $query = "select ARTICLE_NAME FROM articles WHERE ARTICLE_KEYWORDS LIKE '%".$trimmed."%' order by ARTICLE_ID"; 
 $numresults=mysql_query($query)or die (mysql_error());
 $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
  echo "<table width="80%">";
  echo "<table border="1">";  
  while ($row= mysql_fetch_array($result)) {
  $title = $row["ARTICLE_NAME"];

  echo "<tr>"; 
 // echo "<td width="5%" valign="top">"; 
//  echo "$count.)</td>" ; 
    echo "<td width="95%">" . $title . "</td>"; 
    echo "</td></tr>"; 
 // echo "$count.)&nbsp;$title" ;
  $count++ ;
  }
  echo "</table>";
$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>";
  
?>
User avatar
volka
DevNet Evangelist
Posts: 8391
Joined: Tue May 07, 2002 9:48 am
Location: Berlin, ger

Post by volka »

you mean, the title printed is a link to the article's content?
If so
echo "<td width=\"95%\">" . $title . "</td>";
is the line that actually prints each title. You have to make it look like

Code: Select all

<td width="95%"><a href="article-url">Title #1</a></td>
where article-url probably is the value of $row['article_file'].
minds_gifts
Forum Commoner
Posts: 63
Joined: Mon Feb 10, 2003 4:23 am

Post by minds_gifts »

Hello Volka,

I made the changes accordingly, but i see the article names being highlighted but when I click on the name it does'nt show the file.I changed my query and the line which displays the records as follows:

Code: Select all

$query = "select ARTICLE_NAME, ARTICLE_CONTENT FROM articles WHERE ARTICLE_KEYWORDS LIKE '%".$trimmed."%' order by ARTICLE_ID";
and

Code: Select all

echo "<td width="95%"><a href='".$row[ARTICLE_CONTENT]."'>".$title."</a></td>";
I think it does'nt direct to the correct path.Could you please tell me how I can fix this one.

Many thanks
User avatar
volka
DevNet Evangelist
Posts: 8391
Joined: Tue May 07, 2002 9:48 am
Location: Berlin, ger

Post by volka »

I thought the link is stored in the field article_file ?
What is ARTICLE_CONTENT?
minds_gifts
Forum Commoner
Posts: 63
Joined: Mon Feb 10, 2003 4:23 am

Post by minds_gifts »

Sorry, its the same.Actually its article_content.
Yep, the file name is stored in this field.

Well, I've a folder called admin and my search.php is placed here.

When i point my mouse on the search results,

I see http://localhost/department/admin/filename.html

But, actually the filename.html is not in the admin folder.
Its in the different folder.I mean, each topic has been made a folder and all the files related to that topic are placed there.

Do you have any idea whats wrong here???

Thanks for your time.
User avatar
volka
DevNet Evangelist
Posts: 8391
Joined: Tue May 07, 2002 9:48 am
Location: Berlin, ger

Post by volka »

then you have to build the url according to current location and the requested topic.
e.g.

Code: Select all

$prefix = '../'; // an absolute link might be better
...
/**
	assuming the topic-directories have been created based on the article-id
	and this field has been querried, too
*/

// no need to build $url here, only for better script-reading
$url = $prefix . $row['ARTICLE_ID'] . '/' . $row['ARTICLE_CONTENT'];

echo '<td width="95%"><a href="', $url, '" >', $title, '</a></td>';
Post Reply