Search in MySQL + pages

Discussion in 'PHP' started by FokeBox, Aug 7, 2011.

  1. #1
    Here it is the code how to make search in MySQL, but the links to other 10 results doesn't work!
    Please help me

    <?php
    
        mysql_connect("localhost", "worldweb", "pass") or die(mysql_error()) ;
        mysql_select_db("worldweb") or die(mysql_error()) ;
    
    
      // 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><b>Please enter a search ...</b></p>";
      exit;
      }
    
    // check for a search parameter
    if (!isset($var))
      {
      echo "<p>We dont seem to have a search parameter!</p>";
      exit;
      }
    
    
    //specify database ** EDIT REQUIRED HERE **
    mysql_select_db("worldweb") or die("Unable to select database"); //select which database we're using
    
    // Build SQL Query
    $query = "select * from users where website_information like \"%$trimmed%\"
      order by input_date"; // 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 "";
    
    
      }
    
    // 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 "<b>Search results: </b> &quot;" . $var . "&quot; <img src=\"img/other_img/down.gif\" width=\"7\" height=\"5\">";
    
    
    // begin to show results set
    
    $count = 1 + $s ;
    
    // now you can display the results returned
      while ($row= mysql_fetch_array($result)) {
      $title = $row["website_name"]." - ".$row["short_description"]."<br>&nbsp;&nbsp;&nbsp;&nbsp;".$row["website_information"]."<br>&nbsp;&nbsp;&nbsp;&nbsp;<a target='_blank' href=redirect.php?id=".$row['id']."><b>".$row["url"]."</b></a>&nbsp;&nbsp;&nbsp;&nbsp;<font size=\"1\" color=\"#808080\">● Country: ".$row['country']."</font><hr>";
    
      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:
     
    FokeBox, Aug 7, 2011 IP
  2. bogi

    bogi Well-Known Member

    Messages:
    482
    Likes Received:
    16
    Best Answers:
    2
    Trophy Points:
    140
    #2
    You forgot a

    $s = $_GET['s'];
    PHP:
    from the first lines, so $s is always zero.

    You should use mysql_real_escape_string to prevent SQL injections. And one single query would be enough, I don't see a reason to run the (almost) same MySQL query 2 times.
     
    bogi, Aug 7, 2011 IP
  3. FokeBox

    FokeBox Active Member

    Messages:
    432
    Likes Received:
    4
    Best Answers:
    0
    Trophy Points:
    65
    #3
    Thx now it works )
     
    FokeBox, Aug 7, 2011 IP