Echo result = php query, kan dit?
Op mijn homepage, heb ik dat niet. Daar komt het result alleen als volgt naar voren:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
} else {
while($row = mysql_fetch_array($result))
{
echo $row['inhoud'];
}
}
?>
} else {
while($row = mysql_fetch_array($result))
{
echo $row['inhoud'];
}
}
?>
De 'inhoud' , dat wil ik eigenlijk een slim stukje php code laten zijn, die telkens een random resultaat geeft. Dit is de volgende code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
include_once('fGet_Mvotm.php');
$UID = fGet_Mvotm();
$select = "SELECT * FROM ffm_mv WHERE uid = '" . $UID . "' ORDER BY nummer DESC";
$resultaat = mysql_query($select) or die (mysql_error());
$regel = mysql_fetch_array($resultaat);
echo "";
echo $regel['inhoud'],"<br />\n";
echo "";
?>
include_once('fGet_Mvotm.php');
$UID = fGet_Mvotm();
$select = "SELECT * FROM ffm_mv WHERE uid = '" . $UID . "' ORDER BY nummer DESC";
$resultaat = mysql_query($select) or die (mysql_error());
$regel = mysql_fetch_array($resultaat);
echo "";
echo $regel['inhoud'],"<br />\n";
echo "";
?>
Als ik deze code hard in mijn page zet, werkt dit perfect, maar als een result werkt dit niet.
Nu is dus mijn vraag, is het überhaupt mogelijk om een soort "echo result" in een "echo result" te stoppen? Hoe zou ik dit kunnen oplossen, anders zou ik het idee moeten laten varen.
Ik ben zelf geen PHP expert, dus nieuwe code verzinnen is lastig voor mij zonder goede voorbeelden. De manier waarop ik werk zie ik weinig in voorbeeld op sites voorbijkomen. Heb al aardig wat afgestruind op google. en ja, ik weet dat ik de code nog moet bijwerken naar nieuwe php, daar wordt al aan gewerkt.
Alvast bedankt
Gewijzigd op 31/07/2016 23:13:10 door Sebastiaan van Mierlo
Wel valt het me op dat je een lege echo output op lijn 8 en 10, waarom eigenlijk ;-)
Verder is een die() in een foutafhandeling verre van netjes. Los dit liever op met een if-else, of nog mooier (maar minder simpeler voor een beginner) met een OO-manier waarbij je de MySQLi-class extend en de query-functie uitbeidt met foutafhandeling.
Dit komt als resultaat terug in de eerste code. Echter op de website ziet je dan niets.
terwijl, als ik de code hard op mijn page zet (wat dus niet wenselijk is), krijg ik wel resultaat.. namelijk:
Het stukje code zorgt ervoor dat een video en wat html naar voren wordt gehaald. via de php, laat ik dat randomizen, het resultaat van die randomizer,wil ik dus tonen op mijn homepage, maar niet op de andere pagina's.. en dat los ik op door het in de SQL database te zetten.
Maar het result kan prima html zijn, maar zodra in het result php-code zit, werkt het niet meer..
Gewijzigd op 01/08/2016 00:07:24 door Sebastiaan van Mierlo
Maak anders liever functies die diverse soorten data ophalen, en zorg ervoor dat je die met placeholder-tags zoals bijv. [content], [map], [address] etc.. aan de juiste functie koppelt. Kijk eens naar preg_replace_callback. Dan kan er ook niks misgaan, omdat de code gewoon al vaststaat, en niet opeens aangepast kan worden in je database.
Gewijzigd op 01/08/2016 00:14:37 door - Ariën -
en hoeverre is eval() een gevaar. Ik heb geen logins voor anderen op mijn database. er wordt alleen data uitgelezen. toevoegen van data gebeurt dus niet.
Hoe zou ik mijn code om moeten zetten, zodat deze wel getoond kan worden? Dan gaat het alleen maar om onderstaande code:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
include_once('fGet_Mvotm.php');
$UID = fGet_Mvotm();
$select = "SELECT * FROM ffm_mv WHERE uid = '" . $UID . "' ORDER BY nummer DESC";
$resultaat = mysql_query($select) or die (mysql_error());
$regel = mysql_fetch_array($resultaat);
echo $regel['inhoud'],"<br />\n";
?>
include_once('fGet_Mvotm.php');
$UID = fGet_Mvotm();
$select = "SELECT * FROM ffm_mv WHERE uid = '" . $UID . "' ORDER BY nummer DESC";
$resultaat = mysql_query($select) or die (mysql_error());
$regel = mysql_fetch_array($resultaat);
echo $regel['inhoud'],"<br />\n";
?>
PHP-code hoort daarom ook op applicatieniveau, en niet op dataniveau.
En verder zou ik ook maar eens kijken naar MySQLi of PDO ;-)
Gewijzigd op 01/08/2016 00:45:08 door - Ariën -
maar prima, ik heb liever ook veilige code. Er zit veel tijd in mijn website, dus als dat zo gesloopt kan worden, liever niet.
Wat betreft het MySQLi verhaal.. dat loopt al :)
loop daar nog tegen wat dingetjes aan.., heeft met mijn paginatie-code te maken.., maar dat komt wel goed :)
Sebastiaan van Mierlo op 01/08/2016 00:36:34:
Hoe zou ik mijn code om moeten zetten, zodat deze wel getoond kan worden? Dan gaat het alleen maar om onderstaande code:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
include_once('fGet_Mvotm.php');
$UID = fGet_Mvotm();
$select = "SELECT * FROM ffm_mv WHERE uid = '" . $UID . "' ORDER BY nummer DESC";
$resultaat = mysql_query($select) or die (mysql_error());
$regel = mysql_fetch_array($resultaat);
echo $regel['inhoud'],"<br />\n";
?>
include_once('fGet_Mvotm.php');
$UID = fGet_Mvotm();
$select = "SELECT * FROM ffm_mv WHERE uid = '" . $UID . "' ORDER BY nummer DESC";
$resultaat = mysql_query($select) or die (mysql_error());
$regel = mysql_fetch_array($resultaat);
echo $regel['inhoud'],"<br />\n";
?>
1. maak er een functie van
2. vervang de code in je database voor iets als [random_video]
3. scan de data uit je database op dit keyword.
4. vervang het keyword voor de output van je functie
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
function getRandomVideo($UID) {
$UID = fGet_Mvotm();
$select = "SELECT * FROM ffm_mv WHERE uid = '" . $UID . "' ORDER BY nummer DESC";
$resultaat = mysql_query($select) or die (mysql_error());
$regel = mysql_fetch_array($resultaat);
return $regel['inhoud'];
}
include_once('fGet_Mvotm.php');
// snippet voor keyword vervangen voor output
// $body komt normaal gesproken uit je database
$body = '<h1>Random video</h1>[random_video]<br>bla bla bla';
$body = str_replace('[random_video]', getRandomVideo($UID), $body);
// debug
echo $body;
?>
function getRandomVideo($UID) {
$UID = fGet_Mvotm();
$select = "SELECT * FROM ffm_mv WHERE uid = '" . $UID . "' ORDER BY nummer DESC";
$resultaat = mysql_query($select) or die (mysql_error());
$regel = mysql_fetch_array($resultaat);
return $regel['inhoud'];
}
include_once('fGet_Mvotm.php');
// snippet voor keyword vervangen voor output
// $body komt normaal gesproken uit je database
$body = '<h1>Random video</h1>[random_video]<br>bla bla bla';
$body = str_replace('[random_video]', getRandomVideo($UID), $body);
// debug
echo $body;
?>
Gewijzigd op 01/08/2016 08:11:39 door Frank Nietbelangrijk
Quote:
Als ik deze code hard in mijn page zet, werkt dit perfect, maar als een result werkt dit niet.
Wat is daar op tegen dan?
Ik weet niet of het "beter" is om hier een functie van te maken omdat je dit maar voor één ding gebruikt eigenlijk.
Wat zit er in fGet_Mvotm.php en kun je de resterende code daar niet ook gewoon in stoppen zodat je simpelweg kunt volstaan met het enkel includen van fGet_Mvotm.php? Zodat alle beslissingen besloten zijn in deze include zelf en hier geen informatie uitbungelt. Zoiets dus:
Dat lijkt mij het simpelst.
in de fget_mvotm zitten alle unieke ID's van "muziek-video's" die ik op mijn website heb staan. o.b.v. die unieke code weet trek ik de bijbehorende html-code van de muziekvideo erbij.
"$UID" is dus het resultaat nu uit de fget_mvotm.php
Als het resultaat uit die fget_mvotm.php de html-code is, dan is de echo alleen maar die htmlcode, en dat kan ik dan waarschijnlijk wel in de database werkend krijgen.
Ik kan de code niet op de pagina vast zetten, omdat afhankelijk van waar ik naar toe navigeer, ik andere data laat zien.
website is trouwens http://www.finalfrontiermedia.nl , niet om reclame te maken, maar dan snap je misschien wat ik bedoel. Als in het midden-rechts staat niet vast op de page, alleen het menu links, boven, de afbeeldingen onder en boven en de links onderin. De rest is flexibel. Dit stukje code wil ik ook flexibel houden.
Ik ga er mee spelen, mocht je hier nog specifieke aanwijzingen in hebben, graag.
Wat betreft het document "fGet_Mvotm.php" hier staat het volgende in (heb het ingekort):
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
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
<?php
function fGet_Mvotm() {
$mvotm[] = '007bashir';
$mvotm[] = '13yearoldself';
$mvotm[] = 'abinitotrailer';
$mvotm[] = 'absolutionhigh';
$mvotm[] = 'adiemus';
$mvotm[] = 'alcoholwarning';
$mvotm[] = 'alliknow';
$mvotm[] = 'alliwant';
$mvotm[] = 'wonderfulworld';
$mvotm[] = 'yellowsubmarine_e';
$mvotm[] = 'youcantmakelove';
$mvotm[] = 'youlooksofine';
$mvotm[] = 'youmyheart';
$mvotm[] = 'yourebeautiful';
$mvotm[] = 'yourgame';
$rand = mt_rand(0, count($mvotm) - 1);
$sHTML_Output = "$mvotm[$rand]";
return $sHTML_Output;
}
?>
function fGet_Mvotm() {
$mvotm[] = '007bashir';
$mvotm[] = '13yearoldself';
$mvotm[] = 'abinitotrailer';
$mvotm[] = 'absolutionhigh';
$mvotm[] = 'adiemus';
$mvotm[] = 'alcoholwarning';
$mvotm[] = 'alliknow';
$mvotm[] = 'alliwant';
$mvotm[] = 'wonderfulworld';
$mvotm[] = 'yellowsubmarine_e';
$mvotm[] = 'youcantmakelove';
$mvotm[] = 'youlooksofine';
$mvotm[] = 'youmyheart';
$mvotm[] = 'yourebeautiful';
$mvotm[] = 'yourgame';
$rand = mt_rand(0, count($mvotm) - 1);
$sHTML_Output = "$mvotm[$rand]";
return $sHTML_Output;
}
?>
Een typfoutje is via het cms zo in de code geplaatst.
Verder wordt de code ondoorzichtig: in het aangehaalde voorbeeld hierboven staat een var $regel.
Stel dat er in de rest van de code van het script ook een $regel voorkomt, dan zou die zo maar overschreven kunnen worden....
Ivo P op 02/08/2016 15:11:45:
Gevaar zit niet zo zeer in onbetrouwbare medewerkers, maar ook in onhandigheid van zo'n medewerker.
En ook jijzelf of wij kunnen soms een keer "niet zo handig" bezig zijn...
Voorkomen is altijd beter dan genezen.
Zelf ben ik ook niet zo voor het "overal in de code" gebruiken van include(). Ik hou dat zelf liever voor het declareren van functies of nog liever classes aan het begin van je "landingspagina". Met landingspagina bedoel ik het bestand dat als eerste door de webbrowser ingeladen wordt bij een request. Een uitzondering kan zijn daar waar je HTML of templates gaat laden, de zogenoemde 'view'. (Als je geen idee hebt waar ik het over heb Google dan eens op MVC.)
Dit in het kader van ondoorzichtige code wat Ivo al aanhaalde.
geen cms. geen onbetrouwbare of onhandige medewerkers. de code heb ik helemaal onder controle die er in zit en niemand anders past dat aan. Ondoorzichtig is voor mij dus niet mogelijk.
Wat betreft mvc, zou dus zijn. Ik heb de data (bron informatie) in mijn database. Met het "get_document" zou ik de berekeningen kunnen doen, en mijn index.php zorgt alleen voor de weergave :)
Nou ja, dat werd geopperd door jou (Frank) dus daar ga ik naar kijken. Samen met de rest, en kijken wat het resultaat wordt.
Ik bedoelde, zoals Frank ook verduidelijk, ook jou zelf. Nu weten we allemaal dat we zelf nooit fouten maken, maar het zou natuurlijk wel zomaar kunnen.
1 typfoutje in je scriptje in de database kan dan zomaar tot rare meldingen op je scherm leiden, of misschien wel een lek.
En aangezien je kennelijk at random iets wilt tonen, is het nog maar de vraag of de fout inderdaad optreedt als je het test.
Bottom line: het kan wel en het kan ook goed gaan, maar qua onderhoudbaarheid wordt het lastig aangezien je bij aanpassingen in je script of in je code in de database steeds bewust moet blijven dat die 2 samen moeten blijven werken.
Soms ontkom je inderdaad niet of moeilijk aan het gebruik van eval(). Maar wees je steeds bewust van de beperkingen van die functie.
Quote:
If eval() is the answer, you're almost certainly asking the
wrong question. -- Rasmus Lerdorf, BDFL of PHP
wrong question. -- Rasmus Lerdorf, BDFL of PHP
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
if ($pagina == 'home') {
include_once('fGet_Mvotm.php');
$UID = fGet_Mvotm();
$select = "SELECT * FROM ffm_mv WHERE uid = '" . $UID . "' ORDER BY nummer DESC";
$resultaat = mysql_query($select) or die (mysql_error());
$regel = mysql_fetch_array($resultaat);
echo "<html><div align='left' class='mv'> </div></html>";
echo "<html><br><h2>Random music video</h2><div align='left'>Here you can find a random music video. Everytime you reload the page a different music video will appear. The following music video, is the music video of the moment:</div></html>";
echo $regel['inhoud'],"<br />\n";
echo "";
}
include_once('fGet_Mvotm.php');
$UID = fGet_Mvotm();
$select = "SELECT * FROM ffm_mv WHERE uid = '" . $UID . "' ORDER BY nummer DESC";
$resultaat = mysql_query($select) or die (mysql_error());
$regel = mysql_fetch_array($resultaat);
echo "<html><div align='left' class='mv'> </div></html>";
echo "<html><br><h2>Random music video</h2><div align='left'>Here you can find a random music video. Everytime you reload the page a different music video will appear. The following music video, is the music video of the moment:</div></html>";
echo $regel['inhoud'],"<br />\n";
echo "";
}
Gewijzigd op 04/08/2016 16:30:48 door Sebastiaan van Mierlo
gebruikelijk is het om 1 <html> en 1 <html> tag te hebben op een pagina. Hooguit in een frame/iframe zou er nog een kunnen, maar dit lijkt met niet de bedoeling.
Bedankt ik heb het gefixed.
Ik loop eigenlijk nog wel tegen een ander probleem aan.
Ik heb nu de code goed, heb ook de code omgezet naar de nieuwe PHP 5 standaard. Op mijn website gaat dit goed, maar voor mijn paginatie gaat dit niet goed. Hiervoor heb ik een apart script gebruikt met de volgende code. Zouden jullie kunnen helpen om deze aan te passen.
Website draait op de volgende versies:
PHP 5.6.17
MySQL 5.5.38
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
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
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
<?php
/**
* PHPSense Pagination Class
*
* PHP tutorials and scripts
*
* @package PHPSense
* @author Jatinder Singh Thind
* @copyright Copyright (c) 2006, Jatinder Singh Thind
* @link http://www.phpsense.com
*/
// ------------------------------------------------------------------------
class PS_Pagination {
var $php_self;
var $rows_per_page = 5; //Number of records to display per page
var $total_rows = 0; //Total number of rows returned by the query
var $links_per_page = 10; //Number of links to display per page
var $append = ""; //Paremeters to append to pagination links
var $query = "";
var $debug = false;
var $conn = false;
var $page = 1;
var $max_pages = 0;
var $offset = 0;
/**
* Constructor
*
* @param resource $connection Mysql connection link
* @param string $query SQL query to paginate. Example : SELECT * FROM users
* @param integer $rows_per_page Number of records to display per page. Defaults to 10
* @param integer $links_per_page Number of links to display per page. Defaults to 5
* @param string $append Parameters to be appended to pagination links
*/
function PS_Pagination($connection, $query, $rows_per_page = 5, $links_per_page = 10, $append = "") {
$this->conn = $connection;
$this->sql = $query;
$this->rows_per_page = (int)$rows_per_page;
if (intval($links_per_page ) > 0) {
$this->links_per_page = (int)$links_per_page;
} else {
$this->links_per_page = 5;
}
$this->append = $append;
$this->php_self = htmlspecialchars($_SERVER['PHP_SELF'] );
if (isset($_GET['page'] )) {
$this->page = intval($_GET['page'] );
}
}
/**
* Executes the SQL query and initializes internal variables
*
* @access public
* @return resource
*/
function paginate() {
//Check for valid mysql connection
if (! $this->conn || ! is_resource($this->conn )) {
if ($this->debug)
echo "MySQL connection missing<br />";
return false;
}
//Find total number of rows
$all_rs = @mysql_query($this->sql );
if (! $all_rs) {
if ($this->debug)
echo "SQL query failed. Check your query.<br /><br />Error Returned: " . mysql_error();
return false;
}
$this->total_rows = mysql_num_rows($all_rs );
@mysql_close($all_rs );
//Return FALSE if no rows found
if ($this->total_rows == 0) {
if ($this->debug)
echo "Query returned zero rows.";
return FALSE;
}
//Max number of pages
$this->max_pages = ceil($this->total_rows / $this->rows_per_page );
if ($this->links_per_page > $this->max_pages) {
$this->links_per_page = $this->max_pages;
}
//Check the page value just in case someone is trying to input an aribitrary value
if ($this->page > $this->max_pages || $this->page <= 0) {
$this->page = 1;
}
//Calculate Offset
$this->offset = $this->rows_per_page * ($this->page - 1);
//Fetch the required result set
$rs = @mysql_query($this->sql . " LIMIT {$this->offset}, {$this->rows_per_page}" );
if (! $rs) {
if ($this->debug)
echo "Pagination query failed. Check your query.<br /><br />Error Returned: " . mysql_error();
return false;
}
return $rs;
}
/**
* Display the link to the first page
*
* @access public
* @param string $tag Text string to be displayed as the link. Defaults to 'First'
* @return string
*/
function renderFirst($tag = 'First') {
if ($this->total_rows == 0)
return FALSE;
if ($this->page == 1) {
return "$tag ";
} else {
return '<a href="' . $this->php_self . '?page=1&' . $this->append . '">' . $tag . '</a> ';
}
}
/**
* Display the link to the last page
*
* @access public
* @param string $tag Text string to be displayed as the link. Defaults to 'Last'
* @return string
*/
function renderLast($tag = 'Last') {
if ($this->total_rows == 0)
return FALSE;
if ($this->page == $this->max_pages) {
return $tag;
} else {
return ' <a href="' . $this->php_self . '?page=' . $this->max_pages . '&' . $this->append . '">' . $tag . '</a>';
}
}
/**
* Display the next link
*
* @access public
* @param string $tag Text string to be displayed as the link. Defaults to '>>'
* @return string
*/
function renderNext($tag = '>>') {
if ($this->total_rows == 0)
return FALSE;
if ($this->page < $this->max_pages) {
return '<a href="' . $this->php_self . '?page=' . ($this->page + 1) . '&' . $this->append . '">' . $tag . '</a>';
} else {
return $tag;
}
}
/**
* Display the previous link
*
* @access public
* @param string $tag Text string to be displayed as the link. Defaults to '<<'
* @return string
*/
function renderPrev($tag = '<<') {
if ($this->total_rows == 0)
return FALSE;
if ($this->page > 1) {
return ' <a href="' . $this->php_self . '?page=' . ($this->page - 1) . '&' . $this->append . '">' . $tag . '</a>';
} else {
return " $tag";
}
}
/**
* Display the page links
*
* @access public
* @return string
*/
function renderNav($prefix = '<span class="page_link">', $suffix = '</span>') {
if ($this->total_rows == 0)
return FALSE;
$batch = ceil($this->page / $this->links_per_page );
$end = $batch * $this->links_per_page;
if ($end == $this->page) {
//$end = $end + $this->links_per_page - 1;
//$end = $end + ceil($this->links_per_page/2);
}
if ($end > $this->max_pages) {
$end = $this->max_pages;
}
$start = $end - $this->links_per_page + 1;
$links = '';
for($i = $start; $i <= $end; $i ++) {
if ($i == $this->page) {
$links .= $prefix . " $i " . $suffix;
} else {
$links .= ' ' . $prefix . '<a href="' . $this->php_self . '?page=' . $i . '&' . $this->append . '">' . $i . '</a>' . $suffix . ' ';
}
}
return $links;
}
/**
* Display full pagination navigation
*
* @access public
* @return string
*/
function renderFullNav() {
if ($this->total_rows <= 5){
return FALSE;
} else {
return $this->renderFirst() . ' ' . $this->renderPrev() . ' ' . $this->renderNav() . ' ' . $this->renderNext() . ' ' . $this->renderLast();
}
}
/**
* Set debug mode
*
* @access public
* @param bool $debug Set to TRUE to enable debug messages
* @return void
*/
function setDebug($debug) {
$this->debug = $debug;
}
}
?>
/**
* PHPSense Pagination Class
*
* PHP tutorials and scripts
*
* @package PHPSense
* @author Jatinder Singh Thind
* @copyright Copyright (c) 2006, Jatinder Singh Thind
* @link http://www.phpsense.com
*/
// ------------------------------------------------------------------------
class PS_Pagination {
var $php_self;
var $rows_per_page = 5; //Number of records to display per page
var $total_rows = 0; //Total number of rows returned by the query
var $links_per_page = 10; //Number of links to display per page
var $append = ""; //Paremeters to append to pagination links
var $query = "";
var $debug = false;
var $conn = false;
var $page = 1;
var $max_pages = 0;
var $offset = 0;
/**
* Constructor
*
* @param resource $connection Mysql connection link
* @param string $query SQL query to paginate. Example : SELECT * FROM users
* @param integer $rows_per_page Number of records to display per page. Defaults to 10
* @param integer $links_per_page Number of links to display per page. Defaults to 5
* @param string $append Parameters to be appended to pagination links
*/
function PS_Pagination($connection, $query, $rows_per_page = 5, $links_per_page = 10, $append = "") {
$this->conn = $connection;
$this->sql = $query;
$this->rows_per_page = (int)$rows_per_page;
if (intval($links_per_page ) > 0) {
$this->links_per_page = (int)$links_per_page;
} else {
$this->links_per_page = 5;
}
$this->append = $append;
$this->php_self = htmlspecialchars($_SERVER['PHP_SELF'] );
if (isset($_GET['page'] )) {
$this->page = intval($_GET['page'] );
}
}
/**
* Executes the SQL query and initializes internal variables
*
* @access public
* @return resource
*/
function paginate() {
//Check for valid mysql connection
if (! $this->conn || ! is_resource($this->conn )) {
if ($this->debug)
echo "MySQL connection missing<br />";
return false;
}
//Find total number of rows
$all_rs = @mysql_query($this->sql );
if (! $all_rs) {
if ($this->debug)
echo "SQL query failed. Check your query.<br /><br />Error Returned: " . mysql_error();
return false;
}
$this->total_rows = mysql_num_rows($all_rs );
@mysql_close($all_rs );
//Return FALSE if no rows found
if ($this->total_rows == 0) {
if ($this->debug)
echo "Query returned zero rows.";
return FALSE;
}
//Max number of pages
$this->max_pages = ceil($this->total_rows / $this->rows_per_page );
if ($this->links_per_page > $this->max_pages) {
$this->links_per_page = $this->max_pages;
}
//Check the page value just in case someone is trying to input an aribitrary value
if ($this->page > $this->max_pages || $this->page <= 0) {
$this->page = 1;
}
//Calculate Offset
$this->offset = $this->rows_per_page * ($this->page - 1);
//Fetch the required result set
$rs = @mysql_query($this->sql . " LIMIT {$this->offset}, {$this->rows_per_page}" );
if (! $rs) {
if ($this->debug)
echo "Pagination query failed. Check your query.<br /><br />Error Returned: " . mysql_error();
return false;
}
return $rs;
}
/**
* Display the link to the first page
*
* @access public
* @param string $tag Text string to be displayed as the link. Defaults to 'First'
* @return string
*/
function renderFirst($tag = 'First') {
if ($this->total_rows == 0)
return FALSE;
if ($this->page == 1) {
return "$tag ";
} else {
return '<a href="' . $this->php_self . '?page=1&' . $this->append . '">' . $tag . '</a> ';
}
}
/**
* Display the link to the last page
*
* @access public
* @param string $tag Text string to be displayed as the link. Defaults to 'Last'
* @return string
*/
function renderLast($tag = 'Last') {
if ($this->total_rows == 0)
return FALSE;
if ($this->page == $this->max_pages) {
return $tag;
} else {
return ' <a href="' . $this->php_self . '?page=' . $this->max_pages . '&' . $this->append . '">' . $tag . '</a>';
}
}
/**
* Display the next link
*
* @access public
* @param string $tag Text string to be displayed as the link. Defaults to '>>'
* @return string
*/
function renderNext($tag = '>>') {
if ($this->total_rows == 0)
return FALSE;
if ($this->page < $this->max_pages) {
return '<a href="' . $this->php_self . '?page=' . ($this->page + 1) . '&' . $this->append . '">' . $tag . '</a>';
} else {
return $tag;
}
}
/**
* Display the previous link
*
* @access public
* @param string $tag Text string to be displayed as the link. Defaults to '<<'
* @return string
*/
function renderPrev($tag = '<<') {
if ($this->total_rows == 0)
return FALSE;
if ($this->page > 1) {
return ' <a href="' . $this->php_self . '?page=' . ($this->page - 1) . '&' . $this->append . '">' . $tag . '</a>';
} else {
return " $tag";
}
}
/**
* Display the page links
*
* @access public
* @return string
*/
function renderNav($prefix = '<span class="page_link">', $suffix = '</span>') {
if ($this->total_rows == 0)
return FALSE;
$batch = ceil($this->page / $this->links_per_page );
$end = $batch * $this->links_per_page;
if ($end == $this->page) {
//$end = $end + $this->links_per_page - 1;
//$end = $end + ceil($this->links_per_page/2);
}
if ($end > $this->max_pages) {
$end = $this->max_pages;
}
$start = $end - $this->links_per_page + 1;
$links = '';
for($i = $start; $i <= $end; $i ++) {
if ($i == $this->page) {
$links .= $prefix . " $i " . $suffix;
} else {
$links .= ' ' . $prefix . '<a href="' . $this->php_self . '?page=' . $i . '&' . $this->append . '">' . $i . '</a>' . $suffix . ' ';
}
}
return $links;
}
/**
* Display full pagination navigation
*
* @access public
* @return string
*/
function renderFullNav() {
if ($this->total_rows <= 5){
return FALSE;
} else {
return $this->renderFirst() . ' ' . $this->renderPrev() . ' ' . $this->renderNav() . ' ' . $this->renderNext() . ' ' . $this->renderLast();
}
}
/**
* Set debug mode
*
* @access public
* @param bool $debug Set to TRUE to enable debug messages
* @return void
*/
function setDebug($debug) {
$this->debug = $debug;
}
}
?>
de code in mijn index.php is als volgt, (die is al wel aangepast, en lijkt me ook goed):
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
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
<?php
while($row = mysqli_fetch_array($uitslag))
{
echo $row['inhoud'];
}
if ($pagina > 999 && $pagina < 10000 || $pagina == 'story' || $pagina == 'feeling' || $pagina == 'sound' || $pagina == 'rhythm' || $pagina == 'trailer' || $pagina == 'b721' || $pagina == 'bel' || $pagina == 'cyndi' || $pagina == 'dread' || $pagina == 'ffm' || $pagina == 'jill' || $pagina == 'cas' || $pagina == 'dw' || $pagina == 'lin' || $pagina == 'msde' || $pagina == 'msd' || $pagina == 'msl' || $pagina == 'misty' || $pagina == 'nod' || $pagina == 'np59' || $pagina == 'other' || $pagina == 'par' || $pagina == 'pg15' || $pagina == 'sab' || $pagina == 'scifi' || $pagina == 'sjg' || $pagina == 'spec' || $pagina == 'stp' || $pagina == 'stm' || $pagina == 'stf' || $pagina == 'tgin' || $pagina == 'tgl' || $pagina == 'wf2008' || $pagina == 'stbbq' || $pagina == 'stutrecht' || $pagina == 'stspecial' || $pagina == 'history' || $pagina == 'tos' || $pagina == 'tng' || $pagina == 'ds9' || $pagina == 'voy' || $pagina == 'ent' || $pagina == 'stx' || $pagina == 'sev' || $pagina == 'all' || $pagina == 'mvotm') {
$pager = new PS_Pagination($conn, $query, 5, 10, "pagina=$pagina");
$rs = $pager->paginate();
if(!$rs) die(mysqli_error($conn));
?>
<div class="mv" align="center"><p><br> <br>
<?php
echo $pager->renderFullNav(); echo "<br />\n";
?>
</div>
<?php
while($row = mysqli_fetch_array($rs)) {
echo $row['inhoud'],"<br />\n";
}
?>
<div align="center"><p><br> <br>
<?php
echo $pager->renderFullNav(); echo "<br />\n";
?>
</div>
<?php
} else if ($pagina == 'news') {
$pager = new PS_Pagination($conn, $query, 6, 5, "pagina=$pagina");
$rs = $pager->paginate();
if(!$rs) die(mysqli_error($conn));
?>
<div class="mv" align="center"><p><br> <br>
<?php
echo $pager->renderFullNav(); echo "<br />\n";
?>
</div>
<?php
while($row = mysqli_fetch_array($rs)) {
echo $row['inhoud'],"<br />\n";
}
?>
<div align="center"><p><br> <br>
<?php
echo $pager->renderFullNav(); echo "<br />\n";
?>
</div>
<?php
} else {
while($row = mysqli_fetch_array($result))
{
echo $row['inhoud'];
}
}
?>
while($row = mysqli_fetch_array($uitslag))
{
echo $row['inhoud'];
}
if ($pagina > 999 && $pagina < 10000 || $pagina == 'story' || $pagina == 'feeling' || $pagina == 'sound' || $pagina == 'rhythm' || $pagina == 'trailer' || $pagina == 'b721' || $pagina == 'bel' || $pagina == 'cyndi' || $pagina == 'dread' || $pagina == 'ffm' || $pagina == 'jill' || $pagina == 'cas' || $pagina == 'dw' || $pagina == 'lin' || $pagina == 'msde' || $pagina == 'msd' || $pagina == 'msl' || $pagina == 'misty' || $pagina == 'nod' || $pagina == 'np59' || $pagina == 'other' || $pagina == 'par' || $pagina == 'pg15' || $pagina == 'sab' || $pagina == 'scifi' || $pagina == 'sjg' || $pagina == 'spec' || $pagina == 'stp' || $pagina == 'stm' || $pagina == 'stf' || $pagina == 'tgin' || $pagina == 'tgl' || $pagina == 'wf2008' || $pagina == 'stbbq' || $pagina == 'stutrecht' || $pagina == 'stspecial' || $pagina == 'history' || $pagina == 'tos' || $pagina == 'tng' || $pagina == 'ds9' || $pagina == 'voy' || $pagina == 'ent' || $pagina == 'stx' || $pagina == 'sev' || $pagina == 'all' || $pagina == 'mvotm') {
$pager = new PS_Pagination($conn, $query, 5, 10, "pagina=$pagina");
$rs = $pager->paginate();
if(!$rs) die(mysqli_error($conn));
?>
<div class="mv" align="center"><p><br> <br>
<?php
echo $pager->renderFullNav(); echo "<br />\n";
?>
</div>
<?php
while($row = mysqli_fetch_array($rs)) {
echo $row['inhoud'],"<br />\n";
}
?>
<div align="center"><p><br> <br>
<?php
echo $pager->renderFullNav(); echo "<br />\n";
?>
</div>
<?php
} else if ($pagina == 'news') {
$pager = new PS_Pagination($conn, $query, 6, 5, "pagina=$pagina");
$rs = $pager->paginate();
if(!$rs) die(mysqli_error($conn));
?>
<div class="mv" align="center"><p><br> <br>
<?php
echo $pager->renderFullNav(); echo "<br />\n";
?>
</div>
<?php
while($row = mysqli_fetch_array($rs)) {
echo $row['inhoud'],"<br />\n";
}
?>
<div align="center"><p><br> <br>
<?php
echo $pager->renderFullNav(); echo "<br />\n";
?>
</div>
<?php
} else {
while($row = mysqli_fetch_array($result))
{
echo $row['inhoud'];
}
}
?>