Php search script -> Paging bug
Ik heb een script om in mijn database te zoeken. De search werkt perfect alleen de paging niet. Ik heb maximium 6 results per page en dan een link me Show next results.
Als ik op deze link klik echter blijf ik op de 1e pagina...
Script:
Code (php)
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
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
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL | E_STRICT);
// Get the search variable from URL
$var = ucwords($_GET['q']) ;
$trimmed = trim($var); //trim whitespace from the stored variable
// rows to return
$limit=6;
// check for an empty string and display a message.
if ($trimmed == "")
{
echo "<p>Please enter a search...</p>";
}
// check for a search parameter
if (!isset($var))
{
echo "<p>We dont seem to have a search parameter!</p>";
exit;
}
// Build SQL Query
$query = "select * from template where title like \"%$trimmed%\"
order by id ASC"; // 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: "" . $trimmed . "" 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: "" . $var . ""</p>";
// begin to show results set
echo "Results";
$count = 1 + $s ;
// now you can display the results returned
while ($row= @mysql_fetch_object($result)) {
?>
<div class="template_wrapper_index">
<div class="template_top"></div>
<div class="template_middle">
<strong>Title:</strong> <?=$row->title;?><br />
<strong class="float_template">Preview: </strong><a href="viewtemplate.php?id=<?=$row->id;?>"><img src="<?=$row->previewe;?>" alt="Preview" width="185" height="126" border="0" /></a>
<br />
<strong>Demo: </strong><a href="frame.php?url=<?=$row->demo;?>" target="_blank">Click Here</a>
<br />
* Click on the preview image for more info
</div>
<div class="template_bottom"></div>
</div>
<?php
$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=\"search.php?s=$news&q=$var\">Next 10 >></a>";
}
$a = $s + ($limit) ;
if ($a > $numrows) { $a = $numrows ; }
$b = $s + 1 ;
echo "<div style=\"clear:both\"></div>";
echo "<p>Showing results $b to $a of $numrows</p>";
?>
ini_set('display_errors', 1);
error_reporting(E_ALL | E_STRICT);
// Get the search variable from URL
$var = ucwords($_GET['q']) ;
$trimmed = trim($var); //trim whitespace from the stored variable
// rows to return
$limit=6;
// check for an empty string and display a message.
if ($trimmed == "")
{
echo "<p>Please enter a search...</p>";
}
// check for a search parameter
if (!isset($var))
{
echo "<p>We dont seem to have a search parameter!</p>";
exit;
}
// Build SQL Query
$query = "select * from template where title like \"%$trimmed%\"
order by id ASC"; // 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: "" . $trimmed . "" returned zero results</p>";
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: "" . $var . ""</p>";
// begin to show results set
echo "Results";
$count = 1 + $s ;
// now you can display the results returned
while ($row= @mysql_fetch_object($result)) {
?>
<div class="template_wrapper_index">
<div class="template_top"></div>
<div class="template_middle">
<strong>Title:</strong> <?=$row->title;?><br />
<strong class="float_template">Preview: </strong><a href="viewtemplate.php?id=<?=$row->id;?>"><img src="<?=$row->previewe;?>" alt="Preview" width="185" height="126" border="0" /></a>
<br />
<strong>Demo: </strong><a href="frame.php?url=<?=$row->demo;?>" target="_blank">Click Here</a>
<br />
* Click on the preview image for more info
</div>
<div class="template_bottom"></div>
</div>
<?php
$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=\"search.php?s=$news&q=$var\">Next 10 >></a>";
}
$a = $s + ($limit) ;
if ($a > $numrows) { $a = $numrows ; }
$b = $s + 1 ;
echo "<div style=\"clear:both\"></div>";
echo "<p>Showing results $b to $a of $numrows</p>";
?>
Ik krijg geen PHP foutmeldingen.
Alvast bedank,
Jelle
Gewijzigd op 01/01/1970 01:00:00 door Jelle Sturm
Code (php)
1
2
3
4
5
6
2
3
4
5
6
// next determine if s has been passed to script, if not use 0
if (empty($s)) {
$s=0;
}
// get results
$query .= " limit $s,$limit";
if (empty($s)) {
$s=0;
}
// get results
$query .= " limit $s,$limit";
Alleen boven de functie if(empty($s)) { staat $s helemaal niet.
PS: ruim je quotes en alles even op, je gebruikt alles door elkaar echo "<a href=\"$PHP_SELF enz... $var\""; niet bepaald netjes ;-)