1. Advertising
    y u no do it?

    Advertising (learn more)

    Advertise virtually anything here, with CPM banner ads, CPM email ads and CPC contextual links. You can target relevant areas of the site and show ads based on geographical location of the user if you wish.

    Starts at just $1 per CPM or $0.10 per CPC.

Urgent help needed

Discussion in 'PHP' started by Rian, Jul 19, 2010.

  1. #1
    Hi Guys

    I am making use of the following PHP script to search a mysql database, but the pagination does not work. It keeps showing the fist ten records. Can someone please tell me what is the problem here?

    <?php
    
      // Get the search variable from URL
      $var = @$_GET['q'] ;
      $trimmed = trim($var); //trim whitespace from the stored variable
    
    // rows to return
    $limit=10; 
    
    //connect to your database ** EDIT REQUIRED HERE **
    mysql_connect("localhost","xxxxxxx","xxxxxx"); //(host, username, password)
    
    //specify database ** EDIT REQUIRED HERE **
    mysql_select_db("xxxxxxxx") or die("Unable to select database"); //select which database we're using
    
    // Build SQL Query  
    $query = "select * from debt where AccountNumber like \"%$trimmed%\"  
      order by DateReceived DESC"; // 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");
    
    // begin to show results set
    $count = 1 + $s ;
    
    
    // now you can display the results returned
      while ($row= mysql_fetch_array($result)) {
      
      echo '<h1>New Case Information</h1>';
    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    echo '<img alt="" src="divider.png" width="600" height="50" />';
    echo '<br/>';
    echo '<br/>';
    
    $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>";
      
    ?>
    Code (markup):

     
    Rian, Jul 19, 2010 IP
  2. Rainulf

    Rainulf Active Member

    Messages:
    373
    Likes Received:
    12
    Best Answers:
    0
    Trophy Points:
    85
    #2
    Hmm, I didn't carefully check your code, but double check your offset, which is this, because this is usually the problem:
      $query .= " limit $s,$limit";
    Code (markup):
    I made a little function for you to calculate offset:
       function calculateOffset($pageNum, $rowsPerPage) {
          $tempOffset = $pageNum * $rowsPerPage;
          return ($tempOffset > $rowsPerPage) ? ceil($tempOffset-$rowsPerPage) : 0;
       }
    
    PHP:
    Try to call this function and pass it to $s
     
    Last edited: Jul 19, 2010
    Rainulf, Jul 19, 2010 IP
  3. Deacalion

    Deacalion Peon

    Messages:
    438
    Likes Received:
    11
    Best Answers:
    0
    Trophy Points:
    0
    #3
    See?
    
    if (empty($s)) {
        $s=0;
    }
    
    PHP:
    Should be $_GET['s'].
     
    Deacalion, Jul 19, 2010 IP
    Rian likes this.
  4. Rian

    Rian Well-Known Member

    Messages:
    1,763
    Likes Received:
    48
    Best Answers:
    0
    Trophy Points:
    125
    #4
    Thanks guys, I tried, but still dont work...
     
    Rian, Jul 19, 2010 IP
  5. Rian

    Rian Well-Known Member

    Messages:
    1,763
    Likes Received:
    48
    Best Answers:
    0
    Trophy Points:
    125
    #5
    You were right, thank you!

    I passed the s variable to GET and it is working now.
     
    Rian, Jul 19, 2010 IP
  6. Deacalion

    Deacalion Peon

    Messages:
    438
    Likes Received:
    11
    Best Answers:
    0
    Trophy Points:
    0
    #6
    No problem. You might want to do some reading up on SQL injection as well. :)
     
    Deacalion, Jul 20, 2010 IP