No, post #20 gives you a working search script.
What part is not working?
Printable View
No, post #20 gives you a working search script.
What part is not working?
<form method="POST" action="resutls.php">
Again, you need to let ppl know what error(s) are displayed or what is supposed to occur within your code that isn't.
This tells ppl nothing of what the problem is - <form method="POST" action="resutls.php">
Code:<?php
$hostname_logon = "localhost" ;
$database_logon = "school" ;
$username_logon = "root" ;
$password_logon = "crocker" ;
//open database connection
$connections = mysql_connect($hostname_logon, $username_logon, $password_logon) or die ( "Unabale to connect to the database" );
//select database
mysql_select_db($database_logon) or die ( "Unable to select database!" );
//specify how many results to display per page
$limit = 10;
// Get the search variable from URL
$var = @$_GET['q'] ;
//trim whitespace from the stored variable
$trimmed = trim($var);
//separate key-phrases into keywords
$trimmed_array = explode(" ",$trimmed);
// check for an empty string and display a message.
if ($trimmed == "") {
$resultmsg = "<p>Search Error</p><p>Please enter a search...</p>" ;
}
// check for a search parameter
if (!isset($var)){
$resultmsg = "<p>Search Error</p><p>We don't seem to have a search parameter! </p>" ;
}
// Build SQL Query for each keyword entered
foreach ($trimmed_array as $trimm){
// EDIT HERE and specify your table and field names for the SQL query
$query = "SELECT * FROM name WHERE $FirstName LIKE \"%$trimm%\" OR $$LastName LIKE \"%$trimm%\" OR field3 LIKE \"%$trimm%\" ORDER BY $FirstName DESC" ;
// Execute the query to get number of rows that contain search kewords
$numresults=mysql_query ($query);
//$row_num_links_main =mysql_num_rows ($numresults);
// next determine if 's' has been passed to script, if not use 0.
// 's' is a variable that gets set as we navigate the search result pages.
if (empty($s)) {
$s=0;
}
// now let's get results.
$query .= " LIMIT $s,$limit" ;
$numresults = mysql_query ($query) or die ( "Couldn't execute query" );
$row= mysql_fetch_array ($numresults);
//store record id of every item that contains the keyword in the array we need to do this to avoid display of duplicate search result.
do{
$adid_array[] = $row[ 'fieldid' ];
}while( $row= mysql_fetch_array($numresults));
} //end foreach
if($row_num_links_main == 0 && $row_set_num == 0){
$resultmsg = "<p>Search results for:" . $trimmed ."</p><p>Sorry, your search returned zero results</p>" ;
}
//delete duplicate record id's from the array. To do this we will use array_unique function
$tmparr = array_unique($adid_array);
$i=0;
foreach ($tmparr as $v) {
$newarr[$i] = $v;
$i++;
}
// now you can display the results returned. But first we will display the search form on the top of the page
?>
<form action="search.php" method="get" name="search">
<div align="center">
<input name="q" type="text" value=" <?php echo $q; ?> " size="15">
<input name="search" type="submit" value="Search">
</div>
</form>
<?php
// display what the person searched for.
if( isset ($resultmsg)){
echo $resultmsg;
exit();
}else{
echo "Search results for: " . $var;
}
foreach($newarr as $value){
// EDIT HERE and specify your table and field names for the SQL query
$query_value = "SELECT * FROM tablename WHERE fieldid = '$value'";
$num_value=mysql_query ($query_value);
$row_linkcat= mysql_fetch_array ($num_value);
$row_num_links= mysql_num_rows ($num_value);
//now let's make the keywods bold. To do that we will use preg_replace function.
//Replace field
$titlehigh = preg_replace ( "'($var)'si" , "<b>\\1</b>" , $row_linkcat[ 'field1' ] );
$linkhigh = preg_replace ( "'($var)'si" , "<b>\\1</b>" , $row_linkcat[ 'field2' ] );
$linkdesc = preg_replace ( "'($var)'si" , "<b>\\1</b>" , $row_linkcat[ 'field3' ] );
foreach($trimmed_array as $trimm){
if($trimm != 'b' ){
$titlehigh = preg_replace( "'($trimm)'si" , "<b>\\1</b>" , $titlehigh);
$linkhigh = preg_replace( "'($trimm)'si" , "<b>\\1</b>" , $linkhigh);
$linkdesc = preg_replace( "'($trimm)'si" , "<b>\\1</b>" , $linkdesc);
}
//end highlight
?>
<p>
<?php echo $titlehigh; ?><br>
<?php echo $linkhigh; ?><br>
<?php echo $linkhigh; ?>
</p>
<?php
} //end foreach $trimmed_array
if($row_num_links_main > $limit){
// next we need to do the links to other search result pages
if ($s>=1) { // do not display previous link if 's' is '0'
$prevs=($s-$limit);
echo "<div align='left'><a href='$PHP_SELF?s=$prevs&q=$var&catid=$catid'>Previous " .$limit. "</a></div>";
}
// check to see if last page
$slimit =$s+$limit;
if (!($slimit >= $row_num_links_main) && $row_num_links_main!=1) {
// not last page so display next link
$n=$s+$limit;
echo "<div align='right'><a href='$PHP_SELF?s=$n&q=$var&catid=$catid'>Next " .$limit. "</a></div>";
}
}
} //end foreach $newarr
?>
I give up :cry:
did you goto http://bob5731.no-ip.info/web/search.php
You need to upload the file "results.php" to bob5731.no-ip.info/web
Also your search script (search.php) has 2 forms on it.
Code:<form name="form1" method="post" action="results.php">
<form method="POST" action="resutls.php">
Search Word: <input type="text" name="query">
<input type="SUBMIT" value="Search!">
</form>
You need to upload the file "results.php" to bob5731.no-ip.info/web
did it.
And?
It returns a blank page
The page isn't producing any output. My guess is that there is a fatal error killing the script. Try putting:
At the top of your script. Then, see what output you get.PHP Code:error_reporting(E_ALL);
or the names you're searching for aren't in your db.
Maybe add this if no matches are found.
PHP Code:// PHP Search Script
$result = mysql_query("select * from Name WHERE FirstName LIKE '%$query%' OR LastName LIKE '%$query%'", $db);
if (mysql_num_rows($result) == "0") {
echo "No results found!";
}
else
{
while(list($FirstName, $LastName)=mysql_fetch_array($result)){
echo "Result: $FirstName, $LastName <br />";
}
}
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\xampp\htdocs\web\search.php on line 23
Warning: Division by zero in C:\Program Files\xampp\htdocs\web\search.php on line 30
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
Code:<?php
//define your database informations
$dbhost="localhost";
$dbusername="root";
$dbpassword="crocker";
$dbname="school";
?>
<?php
include("config.php");
$query = $_POST['query'];
// connect to db
$db = mysql_connect($dbhost, $dbusername, $dbpassword);
mysql_select_db($dbname,$db) or die('error connection to DB '.mysql_error());
// The form:
if (!isset($_POST['submit']) ) { // if form hasn't been submitted to itself then show form
?>
<form method="POST" action="<?php echo $PHP_SELF?>">
Card #: <input type="text" name="query"><BR><BR>
Total add to card: <input type="text" name="query"><BR><BR>
Total on card: <input type="text" name="query">
<input type="SUBMIT" name="submit" value="Search!">
</form>
<?
}
lse {
// PHP Search Script
$result = mysql_query("select * from Name WHERE FirstName LIKE '%$query%' OR LastName LIKE '%$query%'", $db);
while(list($FirstName, $LastName)=mysql_fetch_array($result)){
echo "Result: $FirstName, $LastName <br />";
}
$add_item = mysql_query("INSERT into name VALUES('bob', '$FirstName')", $db);
$add_item = mysql_query("INSERT into name VALUES('brandon', '$FirstName')", $db);
}
?>
Your query to add names to your database won't work.....check back at post #37.
Also in your form you need to give each field a different name as you currently have them all as "query"
Code:Card #: <input type="text" name="query"><BR><BR>
Total add to card: <input type="text" name="query"><BR><BR>
Total on card: <input type="text" name="query">
I did not know php can fix my file for me.
it can't, you need to make the corrections.
y not?
Just for clarification. Can you post search.php and results.php?