sonnieboy Posted April 22, 2015 Share Posted April 22, 2015 Total <?php echo $num_rows;?> Records : <?php echo $num_pages;?> Page(s) : <?php if($prev_page) { echo " <a href='$_SERVER[SCRIPT_NAME]?Page=$prev_page&$searchType'><< Back</a> "; } for($i=1; $i<=$num_pages; $i++){ if($i != $page) { echo "[ <a href='$_SERVER[SCRIPT_NAME]?Page=$i&$searchType&sort=$sort&order=$order'>$i</a> ]"; } else { echo "<b> $i </b>"; } } if($page!=$num_pages) { echo " <a href ='$_SERVER[SCRIPT_NAME]?Page=$next_page&$searchType'>Next>></a> "; } Total 4899 Records : 245 Page(s) : << Back [ 1 ] 2 [ 3 ][ 4 ][ 5 ][ 6 ][ 7 ][ 8 ][ 9 ][ 10 ][ 11 ][ 12 ][ 13 ][ 14 ][ 15 ][ 16 ][ 17 ][ 18 ][ 19 ][ 20 ][ 21 ][ 22 ][ 23 ][ 24 ][ 25 ][ 26 ][ 27 ][ 28 ][ 29 ][ 30 ][ 31 ][ 32 ][ 33 ][ 34 ][ 35 ][ 36 ][ 37 ][ 38 ][ 39 ][ 40 ][ 41 ][ 42 ][ 43 ][ 44 ][ 45 ][ 46 ][ 47 ][ 48 ][ 49 ][ 50 ][ 51 ][ 52 ][ 53 ][ 54 ][ 55 ][ 56 ][ 57 ][ 58 ][ 59 ][ 60 ][ 61 ][ 62 ][ 63 ][ 64 ][ 65 ][ 66 ][ 67 ][ 68 ][ 69 ][ 70 ][ 71 ][ 72 ][ 73 ][ 74 ][ 75 ][ 76 ][ 77 ][ 78 ][ 79 ][ 80 ][ 81 ][ 82 ][ 83 ][ 84 ][ 85 ][ 86 ][ 87 ][ 88 ][ 89 ][ 90 ][ 91 ][ 92 ][ 93 ][ 94 ][ 95 ][ 96 ][ 97 ][ 98 ][ 99 ][ 100 ][ 101 ][ 102 ][ 103 ][ 104 ][ 105 ][ 106 ][ 107 ][ 108 ][ 109 ][ 110 ][ 111 ][ 112 ][ 113 ][ 114 ][ 115 ][ 116 ][ 117 ][ 118 ][ 119 ][ 120 ][ 121 ][ 122 ][ 123 ][ 124 ][ 125 ][ 126 ][ 127 ][ 128 ][ 129 ][ 130 ][ 131 ][ 132 ][ 133 ][ 134 ][ 135 ][ 136 ][ 137 ][ 138 ][ 139 ][ 140 ][ 141 ][ 142 ][ 143 ][ 144 ][ 145 ][ 146 ][ 147 ][ 148 ][ 149 ][ 150 ][ 151 ][ 152 ][ 153 ][ 154 ][ 155 ][ 156 ][ 157 ][ 158 ][ 159 ][ 160 ][ 161 ][ 162 ][ 163 ][ 164 ][ 165 ][ 166 ][ 167 ][ 168 ][ 169 ][ 170 ][ 171 ][ 172 ][ 173 ][ 174 ][ 175 ][ 176 ][ 177 ][ 178 ][ 179 ][ 180 ][ 181 ][ 182 ][ 183 ][ 184 ][ 185 ][ 186 ][ 187 ][ 188 ][ 189 ][ 190 ][ 191 ][ 192 ][ 193 ][ 194 ][ 195 ][ 196 ][ 197 ][ 198 ][ 199 ][ 200 ][ 201 ][ 202 ][ 203 ][ 204 ][ 205 ][ 206 ][ 207 ][ 208 ][ 209 ][ 210 ][ 211 ][ 212 ][ 213 ][ 214 ][ 215 ][ 216 ][ 217 ][ 218 ][ 219 ][ 220 ][ 221 ][ 222 ][ 223 ][ 224 ][ 225 ][ 226 ][ 227 ][ 228 ][ 229 ][ 230 ][ 231 ][ 232 ][ 233 ][ 234 ][ 235 ][ 236 ][ 237 ][ 238 ][ 239 ][ 240 ][ 241 ][ 242 ][ 243 ][ 244 ][ 245 ] Next>> //A search produces the following: Total 653 Records : 33 Page(s) : 1 [ 2 ][ 3 ][ 4 ][ 5 ][ 6 ][ 7 ][ 8 ][ 9 ][ 10 ][ 11 ][ 12 ][ 13 ][ 14 ][ 15 ][ 16 ][ 17 ][ 18 ][ 19 ][ 20 ][ 21 ][ 22 ][ 23 ][ 24 ][ 25 ][ 26 ][ 27 ][ 28 ][ 29 ][ 30 ][ 31 ][ 32 ][ 33 ] Next>> Dear experts, This issue is probably not for the faint hearted. I have been struggling for days now trying to resolve pagination issue with no success. User performs a search and if record exists, they get displayed. Some of searches produce more than 60 rows of records. Using paging, each page contains a maximum of 20 rows or records. The remaining are spread out to other pages. The issue is that assume that I did a search which produces 65 records which amounts to 4 pages, when I click either Next >> or a page number, the number explodes. Here is example of what I mean: If you click Next >> or page number, then the same results explode to this: I believe the issue has to do with the search parameter called $searchType that I am passing to the navigation link: Any idea how to resolve this? I will be glad to post the code used as search parameters. Thank you very much in advance Link to comment https://forums.phpfreaks.com/topic/295762-click-next-on-paging-explodes-the-numbers/ Share on other sites More sharing options...
sonnieboy Posted April 22, 2015 Author Share Posted April 22, 2015 $fields = array( 'projectTitle' => array('field' => 'b.BidTitle', 'searchType' => 'like'), 'BidType' => array('field' => 'b.BidType', 'searchType' => 'equal'), 'BidStatus' => array('field' => 'b.BidStatus', 'searchType' => 'equal'), 'department' => array('field' => 'b.AliasID', 'searchType' => 'equal'), 'bidId' => array('field' => 'b.BidID', 'searchType' => 'like'), 'txtFromDate' => array('field' => 'b.BidDate', 'searchType' => 'gte'), 'txtToDate' => array('field' => 'b.BidDate', 'searchType' => 'lte'), 'txtFromDueDate' => array('field' => 'b.DueDate', 'searchType' => 'gte'), 'txtToDueDate' => array('field' => 'b.DueDate', 'searchType' => 'lte'), 'bidDate' => array('field' => 'b.BidDate', 'searchType' => 'equal'), 'dueDate' => array('field' => 'b.DueDate', 'searchType' => 'equal') ); $where = array(); $searchType = ""; foreach($fields as $fieldPost => $field) { if(isset($_POST[$fieldPost]) && strlen($_POST[$fieldPost]) > 0) { if($field['searchType'] == 'like') { $where[] = "".$field['field']." LIKE '%" . ms_escape_string($_POST[$fieldPost]) . "%'"; } elseif ($field['searchType'] == 'gte') { $where[] = "".$field['field']." >= '" . ms_escape_string($_POST[$fieldPost]) . "'"; } elseif ($field['searchType'] == 'lte') { $where[] = "".$field['field']." <= '" . ms_escape_string($_POST[$fieldPost]) . "'"; } else { $where[] = "".$field['field']." = '" . ms_escape_string($_POST[$fieldPost]) . "'"; } $searchType .= (empty($searchType) ? "" : "&") . $fieldPost . "=" . $_POST[$fieldPost]; } if(isset($_GET[$fieldPost]) && strlen($_GET[$fieldPost]) > 0) { if($field['searchType'] == 'like') { $where[] = "".$field['field']." LIKE '%" . ms_escape_string($_POST[$fieldPost]) . "%'"; } elseif ($field['searchType'] == 'gte') { $where[] = "".$field['field']." >= '" . ms_escape_string($_POST[$fieldPost]) . "'"; } elseif ($field['searchType'] == 'lte') { $where[] = "".$field['field']." <= '" . ms_escape_string($_POST[$fieldPost]) . "'"; } else { $where[] = "".$field['field']." = '" . ms_escape_string($_POST[$fieldPost]) . "'"; } $searchType .= (empty($searchType) ? "" : "&") . $fieldPost . "=" . $_GET[$fieldPost]; // echo $searchType; } } $sql = " SELECT c.* FROM ( SELECT TOP 1000000 ROW_NUMBER() OVER(ORDER BY b.ID DESC) AS RowID,b.ID,CONVERT(VARCHAR(11), b.BidDate, 106) sBidDate,CONVERT(VARCHAR(11), b.DueDate, 106) sDueDate,b.BidTitle,b.DueTime,b.BidID,b.BidIDFile, da.DeptAlias,b.BidType,CASE WHEN b.AwardDate ='01/01/1900' Then NULL ELSe convert(char(10),b.AwardDate,101)END AS AwardDate, CONVERT(VARCHAR(11), b.LastUpdate, 106) LastUpdate,s.Status FROM bids b inner join DeptALIAS da on b.AliasID = da.AliasID inner join Dept d on da.DeptCode = d.DeptCode inner join status s on b.BidStatus=s.StatusId " . ( count($where) > 0 ? " WHERE " . implode(' AND ', $where) : " " ) . " ORDER BY $sort $order ) AS c WHERE c.RowID BETWEEN $row_start AND $row_end ORDER BY c.RowID "; <form id="form1" action="Search.php" method="post" target="SearchResults"> Since I could not modify y original post, I decided to bring to your attention what I discovered now that I thought could be the problem. First, on my markup, when I try using the post method as shown above, then the WHERE clauses are ignored. As a result, all those records are displayed. However, when I change to get method which is what I found out I should be using when performing a search, I get a message that no records found. I know this is not true. Does anyone know what I need to change in the following code above: BTW: How do I get my code to show up below my comments? Everything is posted at top of page. Link to comment https://forums.phpfreaks.com/topic/295762-click-next-on-paging-explodes-the-numbers/#findComment-1509629 Share on other sites More sharing options...
sonnieboy Posted April 22, 2015 Author Share Posted April 22, 2015 where[] = "".$field['field']." <= '" . ms_escape_string($_POST[$fieldPost]) . "'"; //to this line where[] = "".$field['field']." <= '" . ms_escape_string($_GET[$fieldPost]) . "'"; I have resolved this problem. I changed this line: Link to comment https://forums.phpfreaks.com/topic/295762-click-next-on-paging-explodes-the-numbers/#findComment-1509635 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.