mat3000000 Posted August 20, 2010 Share Posted August 20, 2010 OK, I am new to PHP I am wanting to create a property search using drop down boxes. I have a database with 4 main fields to search: Bedrooms (beds), Area (area), Price Range (price) and Type (type) Here is the code so far, can someone please correct it. Thanks... ****************************** When I run it it says: Warning: trim() expects at most 2 parameters, 4 given in C:\wamp\www\search222.php on line 8 Warning: mysql_query() expects parameter 1 to be string, resource given in C:\wamp\www\search222.php on line 45 Couldn't execute query +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <?php // Get the search variable from URL $var1 = @$_GET['beds'] ; $var2 = @$_GET['area'] ; $var3 = @$_GET['price'] ; $var4 = @$_GET['type'] ; $trimmed = trim($var1, $var2, $var3, $var4); // rows to return $limit=10; // check for an empty string and display a message. if ($var1 == "") { echo "<p>Please enter a search...</p>"; exit; } // check for a search parameter if (!isset($var1)) { echo "<p>We dont seem to have a search parameter!</p>"; exit; } $host = "localhost"; $username = "root"; $password = ""; //connect to your database ** EDIT REQUIRED HERE ** $link = mysql_connect($host, $username, $password) or die("Unable to connect to SQL Server"); //(host, username, password) $db = "property_db"; //specify database ** EDIT REQUIRED HERE ** mysql_select_db($db, $link) or die("Unable to select database"); //select which database we're using // Build SQL Query $results = mysql_query("SELECT * FROM house_src", $link); $numresults = mysql_num_rows($results); // get results $result = mysql_query($results) or die("Couldn't execute query"); // display what the person searched for echo "<p>You searched for: ". $var4 . "property, with ". $var1 . " bedrooms, in the " . $var2 . "area, with a price range of " . $var3 .""; // 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.) $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 " <a href=\"$PHP_SELF?s=$prevs&q=$var\"><< Prev 10</a>  "; } // 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 " <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>"; ?> Quote Link to comment https://forums.phpfreaks.com/topic/211323-simple-php-search-help/ Share on other sites More sharing options...
jcbones Posted August 20, 2010 Share Posted August 20, 2010 You need to call trim on each $var, not all of them together. As well, on line 39 you executed a query, then you used the resource to try and execute it again. THAT is a big no no, and you will get the response you received from PHP parser. Try this: <?php // Get the search variable from URL $var1 = trim(@$_GET['beds']); $var2 = trim(@$_GET['area']) ; $var3 = trim(@$_GET['price']) ; $var4 = trim(@$_GET['type']) ; // rows to return $limit=10; // check for an empty string and display a message. if ($var1 == "") { echo "<p>Please enter a search...</p>"; exit; } // check for a search parameter if (!isset($var1)) { echo "<p>We dont seem to have a search parameter!</p>"; exit; } $host = "localhost"; $username = "root"; $password = ""; //connect to your database ** EDIT REQUIRED HERE ** $link = mysql_connect($host, $username, $password) or die("Unable to connect to SQL Server"); //(host, username, password) $db = "property_db"; //specify database ** EDIT REQUIRED HERE ** mysql_select_db($db, $link) or die("Unable to select database"); //select which database we're using // Build SQL Query $results = "SELECT * FROM house_src"; // get results $result = mysql_query($results) or die("Couldn't execute query"); $numresults = mysql_num_rows($result); // display what the person searched for echo "<p>You searched for: ". $var4 . "property, with ". $var1 . " bedrooms, in the " . $var2 . "area, with a price range of " . $var3 .""; // 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.) $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 " <a href=\"$PHP_SELF?s=$prevs&q=$var\"><< Prev 10</a>  "; } // 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 " <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>"; ?> Quote Link to comment https://forums.phpfreaks.com/topic/211323-simple-php-search-help/#findComment-1101847 Share on other sites More sharing options...
mat3000000 Posted August 21, 2010 Author Share Posted August 21, 2010 OK, now I have that a LOT of new things come up... Firstly my results are strange. (BTW my fields are: beds(int), area(text), price range(text) and type(text)) Is this right? Secondly when I run this script I get a lot of errors. I need to know what to put in the 's' variable?... You searched for: Detached property, with 2 bedrooms, in the Calderdale area, with a price range of £50 - £100 Results: Notice: Undefined variable: s in C:\wamp\www\search222.php on line 30 1.) 22.) 1 Notice: Undefined variable: s in C:\wamp\www\search222.php on line 32 Notice: Undefined variable: s in C:\wamp\www\search222.php on line 34 Notice: Undefined variable: numrows in C:\wamp\www\search222.php on line 37 Notice: Undefined variable: numrows in C:\wamp\www\search222.php on line 39 Notice: Undefined variable: s in C:\wamp\www\search222.php on line 43 Notice: Undefined variable: s in C:\wamp\www\search222.php on line 45 Notice: Undefined variable: PHP_SELF in C:\wamp\www\search222.php on line 45 Notice: Undefined variable: var in C:\wamp\www\search222.php on line 45 Next 10 >> Notice: Undefined variable: s in C:\wamp\www\search222.php on line 45 Notice: Undefined variable: numrows in C:\wamp\www\search222.php on line 45 Notice: Undefined variable: numrows in C:\wamp\www\search222.php on line 45 Notice: Undefined variable: s in C:\wamp\www\search222.php on line 45 Notice: Undefined variable: numrows in C:\wamp\www\search222.php on line 45 Showing results 1 to of Would be greatful for any help, cheers! PS: Thanks for your previous answer it did sort a lot of the problems out! <?php // Get the search variable from URL $var1 = trim(@$_GET['beds']); $var2 = trim(@$_GET['area']) ; $var3 = trim(@$_GET['price']) ; $var4 = trim(@$_GET['type']) ; // rows to return $limit=10; // check for an empty string and display a message. if ($var1 == "") { echo "<p>Please enter a search...</p>"; exit; } // check for a search parameter if (!isset($var1)) { echo "<p>We dont seem to have a search parameter!</p>"; exit; } $host = "localhost"; $username = "root"; $password = ""; $link = mysql_connect($host, $username, $password) or die("Unable to connect to SQL Server"); mysql_select_db("property_db", $link) or die("Unable to select database"); //select which database we're using// Build SQL Query $results = "SELECT * FROM house_src"; // get results $result = mysql_query($results) or die("Couldn't execute query"); $numresults = mysql_num_rows($result); // display what the person searched for echo "<p>You searched for: ". $var4 . " property, with ". $var1 . " bedrooms, in the " . $var2 . " area, with a price range of " . $var3 .""; // begin to show results set echo "<br><br>Results:";$count = 1 + $s ; // now you can display the results returned while ($row= mysql_fetch_array($result)) { $title = $row["beds"]; echo "$count.) $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 " <a href=\"$PHP_SELF?s=$prevs&q=$var\"><< Prev 10</a>  "; } // 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 " <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>"; ?> Quote Link to comment https://forums.phpfreaks.com/topic/211323-simple-php-search-help/#findComment-1102196 Share on other sites More sharing options...
jcbones Posted August 22, 2010 Share Posted August 22, 2010 1. $s is not defined, it is used on line 30 for addition purposes, but nowhere is it's initial value set. 2. I'm thinking that $numrows is suppose to point back to Line 24, but that is set to $numresults. Change this name to $numrows as that variable is used more than once. 3.$PHP_SELF is only if Globals are on, which in later releases of PHP they are not. Change to $_SERVER['PHP_SELF']. 4. There is no $var in your script, they are $var1,$var2,$var3,$var4. Correct those 4 things, should get you well on your way. Quote Link to comment https://forums.phpfreaks.com/topic/211323-simple-php-search-help/#findComment-1102224 Share on other sites More sharing options...
premiso Posted August 22, 2010 Share Posted August 22, 2010 If you want an example that works there is a tutorial called Simple SQL Search that will be a good read. But most of your errors seemed like you learned PHP from a bad source (surpressing $_GET errors and register_globals assuming to be on). I would highly suggest reading through that tutorial above. Quote Link to comment https://forums.phpfreaks.com/topic/211323-simple-php-search-help/#findComment-1102415 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.