Problem with search engine.

Discussion in 'PHP' started by valters, Jul 31, 2007.

  1. #1
    When i need to add search engine to my page, i have discovered one problem, but i cant get answer, because all code are fine, but i have error - Couldn't execute query
    
    <?
    
      // Get the search variable from URL
    
      $var = @$_POST['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", "user", "password");
    mysql_select_db("database") or die("Unable to select database"); //select which database we're using
    
    // Build SQL Query  
    $query = "SELECT * FROM tables WHERE field_1 like \"%$trimmed%\" OR field_2 like \"%$trimmed%\"
      order by field_1"; // 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>";
      
    ?> 
    
    PHP:

     
    valters, Jul 31, 2007 IP
  2. nico_swd

    nico_swd Prominent Member

    Messages:
    4,153
    Likes Received:
    344
    Best Answers:
    18
    Trophy Points:
    375
    #2
    Replace:
    
     $result = mysql_query($query) or die("Couldn't execute query");
    
    PHP:
    With:
    
     $result = mysql_query($query) or die(mysql_error());
    
    PHP:
    And tell us what the exact error is.
     
    nico_swd, Jul 31, 2007 IP
  3. goldensea80

    goldensea80 Well-Known Member

    Messages:
    422
    Likes Received:
    10
    Best Answers:
    0
    Trophy Points:
    128
    #3
    Right, and sometime you need to print out the query then paste it in your MySQL console (phpmyadmin) to find more error description.

    
     $result = mysql_query($query) or die(mysql_error()."<br>query: $query");
    
    PHP:
     
    goldensea80, Jul 31, 2007 IP
  4. ecentricNick

    ecentricNick Peon

    Messages:
    351
    Likes Received:
    13
    Best Answers:
    0
    Trophy Points:
    0
    #4
    SELECT * FROM tables WHERE field_1 like \"%$trimmed%\" OR field_2 like \"%$trimmed%\" order by field_1

    should be...

    SELECT * FROM tables WHERE field_1 like '%$trimmed%' OR field_2 like '%$trimmed%' order by field_1

    ie. single quotes not double
     
    ecentricNick, Jul 31, 2007 IP