Multiple Pages (Guestbook)
Ik weer dat me vraag een beetje wazig is, ik heb geen flauw idee hoe ik het fatsoenlijk moet uitleggen :P
Mijn code kun je vinden op: http://www.phphulp.nl/php/scripts/6/1446/
// poNji
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if ($HTTP_POST_VARS['page']) {
$page = $HTTP_POST_VARS['page'];
}
else {
$page = '1'; //default de eerste 10 berichten laten zien.
}
//je code tot aan je mysql command
//oude code:$query = "SELECT * FROM `messages` ORDER BY `Date` DESC";
//dit zou het kunnen worden.
$limit = $page * 10;
$offset = $limit - 9;
$query = "SELECT * FROM `messages` ORDER BY `Date` DESC LIMIT ".$offset.", ".$limit;
//ik weet niet zeker of ik hier een goeie regel schrijf btw;) kun je ff uittesten.
//Et voila, je hebt de eerste 10 berichten in dit geval.
//De mysql command zou worden: SELECT * FROM `messages` ORDER BY `Date` DESC LIMIT 1,10
//voor page=2 krijg je: 2x10 = 20, limit = 20, limit - 9 = 11. LIMIT 11,20; voila, page 2;)
$page = $HTTP_POST_VARS['page'];
}
else {
$page = '1'; //default de eerste 10 berichten laten zien.
}
//je code tot aan je mysql command
//oude code:$query = "SELECT * FROM `messages` ORDER BY `Date` DESC";
//dit zou het kunnen worden.
$limit = $page * 10;
$offset = $limit - 9;
$query = "SELECT * FROM `messages` ORDER BY `Date` DESC LIMIT ".$offset.", ".$limit;
//ik weet niet zeker of ik hier een goeie regel schrijf btw;) kun je ff uittesten.
//Et voila, je hebt de eerste 10 berichten in dit geval.
//De mysql command zou worden: SELECT * FROM `messages` ORDER BY `Date` DESC LIMIT 1,10
//voor page=2 krijg je: 2x10 = 20, limit = 20, limit - 9 = 11. LIMIT 11,20; voila, page 2;)
Ik beloof je niet dat dit werkt, ook zit er een paar haken en ogen aan. geen controlere of er uberhaupt meerdere pagina's zijn. maar hiermee moet je een stap in de goeie richting kunnen zetten.
Thijs
edit: ps. ik zie net een ander topic hierover die het misschien wat... gedetailleerder uitlegt. lees dit: http://phphulp.nl/forum/showtopic.php?cat=1&id=56668&lasttopic=1
Gewijzigd op 01/01/1970 01:00:00 door Thijs Damen
Code (php)
Nu wel getest, en het werkt. Nu moet ik enkel nog de linkjes naar de verschillende pagina's (automatisch) genereren.
Code (php)
1
2
3
4
2
3
4
$nextpage = $pageNum + 1;
$previousPage = $pageNum -1;
echo "<a href='http://mijnlinkje.nl/test.php?page=".$nextpage."'>".$nextpage."</a>";
$previousPage = $pageNum -1;
echo "<a href='http://mijnlinkje.nl/test.php?page=".$nextpage."'>".$nextpage."</a>";
verder controleer wel even het volgende:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
if ($pageNum != 1) {
$previousPage = $pageNum -1;
}
else {
$previouspage = niet laten zien want pagina 0 kan niet;))
}
$previousPage = $pageNum -1;
}
else {
$previouspage = niet laten zien want pagina 0 kan niet;))
}
en natuurlijk:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
$result = mysql_query("SELECT * FROM `messages`");
$num_rows = mysql_num_rows($result);
if ($num_rows <= $pageNum * 10) {
//geen volgende pagina
}
else {
echo "<a href='http://mijnlinkje.nl/test.php?page=".$nextpage."'>".$nextpage."</a>";
$num_rows = mysql_num_rows($result);
if ($num_rows <= $pageNum * 10) {
//geen volgende pagina
}
else {
echo "<a href='http://mijnlinkje.nl/test.php?page=".$nextpage."'>".$nextpage."</a>";
}
ik hoop dat je het nog snapt:)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
if ($pageNum == 1) {
echo "<font> FIRST PREV </font>";
} else {
echo " <a href='{$_SERVER['PHP_SELF']}?page=1'><font>FIRST</font></a> ";
$prevpage = $pageNum - 1;
echo " <a href='{$_SERVER['PHP_SELF']}?page=$prevpage'><font>PREV</font></a> ";
}
echo "<font> ( Page ".$pageNum." of * ) </font>";
if ($pageNum == $lastpage) {
echo "<font> NEXT LAST </font>";
} else {
$nextpage = $pageNum + 1;
echo " <a href='{$_SERVER['PHP_SELF']}?page=$nextpage'><font>NEXT</font></a> ";
echo " <a href='{$_SERVER['PHP_SELF']}?page=$lastpage'><font>LAST</font></a> ";
}
?>
if ($pageNum == 1) {
echo "<font> FIRST PREV </font>";
} else {
echo " <a href='{$_SERVER['PHP_SELF']}?page=1'><font>FIRST</font></a> ";
$prevpage = $pageNum - 1;
echo " <a href='{$_SERVER['PHP_SELF']}?page=$prevpage'><font>PREV</font></a> ";
}
echo "<font> ( Page ".$pageNum." of * ) </font>";
if ($pageNum == $lastpage) {
echo "<font> NEXT LAST </font>";
} else {
$nextpage = $pageNum + 1;
echo " <a href='{$_SERVER['PHP_SELF']}?page=$nextpage'><font>NEXT</font></a> ";
echo " <a href='{$_SERVER['PHP_SELF']}?page=$lastpage'><font>LAST</font></a> ";
}
?>
(Niet letten op de Font opmaak, persoonlijke voorkeur :p)
Alleen heb ik nu voor $lastpage nog geen waarde. Ik heb wel de manier met mysql_fetch_row() gevonden, maar wil graag mysqli blijven gebruiken in me code. Weet je toevallig hoe ik dat met mysqli kan doen? Met mysql_fetch_row() ging het alsvolgt:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$query = "SELECT count(*) FROM table WHERE ...";
$result = mysql_query($query, $db) or trigger_error("SQL", E_USER_ERROR);
$query_data = mysql_fetch_row($result);
$numrows = $query_data[0];
?>
$query = "SELECT count(*) FROM table WHERE ...";
$result = mysql_query($query, $db) or trigger_error("SQL", E_USER_ERROR);
$query_data = mysql_fetch_row($result);
$numrows = $query_data[0];
?>
Gewijzigd op 01/01/1970 01:00:00 door Jasper Geelen
poNji schreef op 09.10.2008 09:51:
(Niet letten op de Font opmaak, persoonlijke voorkeur :p)
moet je zelf weten maar doe je opmaak waar het hoord in je css,
Gewijzigd op 01/01/1970 01:00:00 door RvW Of toch niet
Ik merkte het ook met die link idd, bleek dat er nog een foutje zat in de variabele, stond nog $pageno, terwijl de variabel bij mij $pageNum heet, dus dat werkte niet helemaal. Als het goed is klopt het nu wel.
Edit:
opmaak staat nu in de CSS. Overigens vind ik opmaak momenteel wat minder belangrijk aangezien ik aan het leren scripten ben, niet leren opmaken :p
opmaak staat nu in de CSS. Overigens vind ik opmaak momenteel wat minder belangrijk aangezien ik aan het leren scripten ben, niet leren opmaken :p
Gewijzigd op 01/01/1970 01:00:00 door Jasper Geelen
nou leer het dan goed Opmaak hoort dus Niet in je script.
Staat het nu ook niet meer, nou liever antwoord op mijn vraag ipv het af te kraken ;)
het is overigens geen afzijken. je zelf goed programmeren aan leren van af het begin zal snel zijn vruchten afwerpen.
Gewijzigd op 01/01/1970 01:00:00 door RvW Of toch niet
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
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
<?php
...
$query = "SELECT count(*) FROM messages";
$result = $mysqli->query($query);
$queryData = mysqli_fetch_row($result);
$numRows = $queryData[0];
$rowsPerPage = 10;
$pageNum = 1;
$lastPage = $numRows / $rowsPerPage;
$prevPage = $pageNum - 1;
$nextPage = $pageNum + 1;
if(isset($_GET["page"])) {
$pageNum = $_GET["page"];
}
$offset = ($pageNum - 1) * $rowsPerPage;
...
if ($pageNum == 1) {
echo "<font> FIRST PREV </font>";
} else {
echo " <a href='{$_SERVER['PHP_SELF']}?page=1'><font>FIRST</font></a> ";
echo " <a href='{$_SERVER['PHP_SELF']}?page=".$prevPage."'><font>PREV</font></a> ";
}
echo "<font> ( Page ".$pageNum." of * ) </font>";
if ($pageNum == $lastPage) {
echo "<font> NEXT LAST </font>";
} else {
echo " <a href='{$_SERVER['PHP_SELF']}?page=".$nextPage."'><font>NEXT</font></a> ";
echo " <a href='{$_SERVER['PHP_SELF']}?page=".$lastPage."'><font>LAST</font></a> ";
}
?>
...
$query = "SELECT count(*) FROM messages";
$result = $mysqli->query($query);
$queryData = mysqli_fetch_row($result);
$numRows = $queryData[0];
$rowsPerPage = 10;
$pageNum = 1;
$lastPage = $numRows / $rowsPerPage;
$prevPage = $pageNum - 1;
$nextPage = $pageNum + 1;
if(isset($_GET["page"])) {
$pageNum = $_GET["page"];
}
$offset = ($pageNum - 1) * $rowsPerPage;
...
if ($pageNum == 1) {
echo "<font> FIRST PREV </font>";
} else {
echo " <a href='{$_SERVER['PHP_SELF']}?page=1'><font>FIRST</font></a> ";
echo " <a href='{$_SERVER['PHP_SELF']}?page=".$prevPage."'><font>PREV</font></a> ";
}
echo "<font> ( Page ".$pageNum." of * ) </font>";
if ($pageNum == $lastPage) {
echo "<font> NEXT LAST </font>";
} else {
echo " <a href='{$_SERVER['PHP_SELF']}?page=".$nextPage."'><font>NEXT</font></a> ";
echo " <a href='{$_SERVER['PHP_SELF']}?page=".$lastPage."'><font>LAST</font></a> ";
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Jasper Geelen
klik :)