foutmelding in Pagination script
Sorry als ik hier teveel vragen stel!
Zoals de titel zegt, heb ik helaas een probleem met pagination.
Via de website: http://www.phpeasystep.com/phptu/29.html heb ik een kant en klare pagination script gevonden. Vervolgens ben ik aan de slag gegaan om deze script te integreren in mijn test crud applicatie.
Alle 7 stappen die op die website worden gevraagd, heb ik uitgevoerd en toch krijg ik volgens mij een niet-logische foutmelding nl;
Notice: Undefined variable: pagination in C:\xampp\htdocs\employees_CRUD\index.php on line 24
Notice: Undefined variable: pagination in C:\xampp\htdocs\employees_CRUD\index.php on line 29
PHP regel van 20 t/m 30 ziet als volgt uit:
/* Setup vars for query. */
$targetpage = "pagination.php"; //your file name (the name of this file)
$limit = 2; //how many items to show per page
$page = $_GET['page'];
if($page)
$start = ($page - 1) * $limit; //first item to display on this page
else
$start = 0; //if no page var is given, set start to 0
Mijn tweede vraag is welk kolom uit de DB moet aangegeven worden in de regel:
/* Get data. */
$sql = "SELECT column_name FROM $tbl_name LIMIT $start, $limit";
$result = mysql_query($sql);
Bij column_name geef ik de eerste kolom uit de DB op, nl die van EmpID.
Omdat verder geen uitleg erbij staat van welke kolom hier opgegeven moet worden, heb ik de eerste kolom opgegeven.
Alvast bedankt voor jullie reacties.
Gewijzigd op 16/06/2016 23:42:51 door Mohamed nvt
Bij het ophalen van de data zou ik gewoon alle relevante data ophalen die je nodig hebt. Zolang je maar zorgt dat de query die berekent hoeveel resultaten er zijn op een vergelijkbare manier wordt opgebouwd. MySQL heeft hier trouwens een speciale voorziening voor zodat je een query met een LIMIT opnieuw kunt uitvoeren alsof deze zonder LIMIT was opgesteld.
Ik zou trouwens het gebruik van mysql_-functies afraden omdat de oorspronkelijke MySQL-driver niet langer bestaat (vanaf PHP versie 7).
Ik zie zo gauw ook niet wanneer dit artikel geschreven is. Ik heb daar altijd een hekel aan, mogelijk zijn artikelen dan compleet ouwe meuk.
Thomas van den Heuvel op 17/06/2016 00:33:17:
Ik zie zo gauw ook niet wanneer dit artikel geschreven is. Ik heb daar altijd een hekel aan, mogelijk zijn artikelen dan compleet ouwe meuk.
In de footer van de site staat: © 2005 - 2012 PHPeasystep
Ik denk dat je zonder twijfel kunt zeggen dat het meuk is. Kijk alleen maar naar dit:
$total_pages = mysql_fetch_array(mysql_query($query));
Morgen zal ik de script hier plaatsen.
Handig, want als ik een telling doe van regels die je geplaatst hebt is er geen enkele reden dat je überhaupt een undefined variable melding zou krijgen, zeker niet op pagination, want $pagination wordt hier nergens genoemd. Je andere script was ongetwijfeld te corrigeren geweest als je de juiste regels had geplaatst.
Voor de volgende keer zal ik het volledige code hier plaatsen :)
Zoals beloofd, zou ik vandaag een kant en klare pagination script hier plaatsen:
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
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
<?php
require_once"inc/db-config.php"; /* connectie met de database*/
$per_page = 5;
$pages_query = mysql_query("select count('EmpID') from employees"); /* Hier moet een kolom uit de database aangegeven worden*/
$pages = ceil (mysql_result($pages_query, 0) / $per_page);
$page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;
$start = ($page - 1) * $per_page;
$query = mysql_query("select FirstName from employees limit $start, $per_page"); /* Hier heb ik nog een andere kolom uit de database aangegeven */
while ($query_row = mysql_fetch_assoc($query)) {
echo $query_row['FirstName'] . "<br />";
}
$prev = $page - 1;
$next = $page + 1;
if (!($page <=1)) {
echo "<a href='pagination.php?page=$prev'>Previous Page</a>"; /* in deze link geef je de naam van dit pagina op */
}
if($pages >= 1) {
for ($x=1; $x<=$pages; $x++) {
echo ($x == $page) ? '<b><a href="?page='.$x.'">'.$x.'</a></b> ' : '<a href="?page='.$x.'">'.$x.'</a> ';
}
}
if(!($page >=$pages)) {
echo "<a href='pagination.php?page=$next'>Next Page</a>";
}
?>
require_once"inc/db-config.php"; /* connectie met de database*/
$per_page = 5;
$pages_query = mysql_query("select count('EmpID') from employees"); /* Hier moet een kolom uit de database aangegeven worden*/
$pages = ceil (mysql_result($pages_query, 0) / $per_page);
$page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;
$start = ($page - 1) * $per_page;
$query = mysql_query("select FirstName from employees limit $start, $per_page"); /* Hier heb ik nog een andere kolom uit de database aangegeven */
while ($query_row = mysql_fetch_assoc($query)) {
echo $query_row['FirstName'] . "<br />";
}
$prev = $page - 1;
$next = $page + 1;
if (!($page <=1)) {
echo "<a href='pagination.php?page=$prev'>Previous Page</a>"; /* in deze link geef je de naam van dit pagina op */
}
if($pages >= 1) {
for ($x=1; $x<=$pages; $x++) {
echo ($x == $page) ? '<b><a href="?page='.$x.'">'.$x.'</a></b> ' : '<a href="?page='.$x.'">'.$x.'</a> ';
}
}
if(!($page >=$pages)) {
echo "<a href='pagination.php?page=$next'>Next Page</a>";
}
?>
Mocht er nog interesse zijn in hoe ik de pagination script heb geïntegreerd in de CRUD applicatie, dan hoor ik dat graag en ik zal die code hier ook plaatsen.
Je gebruikt nog de mysql_ functies welke onder PHP versie 7 niet meer aanwezig zijn. Zodra je webhost overstapt op PHP versie 7 dan zit je dus in de prijzen. Advies is om alle mysql_ functies om te zetten in mysqli_ functies.
Frank Nietbelangrijk op 18/06/2016 14:19:51:
Beste Mohamed,
Je gebruikt nog de mysql_ functies welke onder PHP versie 7 niet meer aanwezig zijn. Zodra je webhost overstapt op PHP versie 7 dan zit je dus in de prijzen. Advies is om alle mysql_ functies om te zetten in mysqli_ functies.
Je gebruikt nog de mysql_ functies welke onder PHP versie 7 niet meer aanwezig zijn. Zodra je webhost overstapt op PHP versie 7 dan zit je dus in de prijzen. Advies is om alle mysql_ functies om te zetten in mysqli_ functies.
Hoi Frank,
Volgens mij kan ik mysqli het beste gebruiken op het moment dat ik over overstap op OOP of is het nu al beter om mysqli in gebruik te nemen?
Ik heb het nog niet opgezocht, maar is er wezenlijk verschil tussen mysql en mysqli?
Heeft mysqli meer handige functies dan mysql om de overstap te versnellen, vraag ik me af?
Tussen mysql en mysqli zit enig verschil in de functienamen. Er moet een 'i' achter (mysql_query -> mysqli_query) Vaak moet je nu ook een variabele van je connectie gebruiken, en zijn de parameters in enkele gevallen veranderd. Een kwestie van de manuals op php.net lezen.