Eindelijk heb ik alles klaar in mijn script om records te deleten, alleen nu wil ik er graag nog een functie in dat hij per pagina 10 records weer geeft.
De eerste 10 echter is geen probleem, dat heb ik met limit 10 gedaan.
Alleen hoe krijg ik die navigatie voor elkaar ?
Hierbij de code van de pagina :
<?php
include("../../incs/connect.php");
?>
<?php
$sqlout = "SELECT * FROM vangaart_nieuws ORDER BY id DESC Limit 10"; //nieuwste record bovenaan
$query_naam = mysql_query($sqlout) or die(mysql_error());
if (isset($_GET['id']) && ctype_digit($_GET['id'])){
$query= "DELETE FROM vangaart_nieuws WHERE id = '".$_GET['id']."'";
mysql_query($query) or die(mysql_error());
}
echo "<b>Overzicht Berichten</b>";
echo "<table width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\">\n";
echo "\n<tr bgcolor=\"#666666\">
\n<td>id</td>
\n<td>datum</td>
\n<td>titel</td>
\n<td>record verwijderen?</td>
\n</tr>";
while($rij=mysql_fetch_array($query_naam)) {
if ($kleur == "#666666"){
$kleur = "#999999";
}else{
$kleur = "#999999";
}
echo "<tr bgcolor=\"" . $kleur . "\">
\n<td>" . $rij['id'] . "</td>
\n<td>" . $rij['datum'] . "</td>
\n<td>" . $rij['titel'] . "</td>
\n<td>" . "<a href=\"index.php?page=verwijderen&id=" . $rij['id'] . "\">Verwijderen?</a>" . "</td>
";
}
echo "</table>\n";
echo "<br><br><b>Bericht verwijderd ?</b><br>Klik <a href=\"index.php?page=verwijderen\">hier</a> om pagina te updaten.<br><Br>";
?>
je kunt de navigatie op 2 manieren doen.
Je zet in de URL op welke pagina je bent.
Of je zet dit in een sessie.
Maakt niet uit welke van de twee je kiest, maar het komt er op neer dat je die waarde op moet halen. en dan aan de hand daarvan moet berekenen welke 10 records opgehaald moeten worden.
Dus bijv.
pagina = 2 dan is LIMIT 10,10
pagina = 6 dan is LMIT 50,10
oftewel kun je bijv dit maken.
<?php
$begin = ($_GET['p'] - 1) * 10;
$eind = 10;
LIMIT $begin,$eind;
?>
uiteraard nog wel even controleren op input wanneer je met een URL gaat werken.
Deze regel:
<?php
$sqlout = "SELECT * FROM vangaart_nieuws ORDER BY id DESC Limit 10"; //nieuwste record bovenaan
?>
zou zoiets moeten worden:
<?php
$sqlout = "
SELECT *
FROM vangaart_nieuws
ORDER BY id DESC
LIMIT " . $begin . ", 10";
?>
De variabele $begin haal je op met GET, zoals Stefan al zei. Je moet dus een link boven je tabel hebben die er bijv zo uitziet:
<?php
<a href="?begin=30">30</a>
?>
Zoals ook al eerder gezegd, als je met GET variabelen werkt moet je aan beveiliging doen. Dus kijken met isset ($_GET['begin']) of hij wel gezet is en met is_numeric () of het wel een getal is.
De LIMIT moet in $sqlout zitten, omdat dat met de mysql te maken heeft.
<?
$sqlout = "
SELECT *
FROM vangaart_nieuws
ORDER BY id DESC
LIMIT " . $begin . ", 10";
$query_naam = mysql_query($sqlout) or die(mysql_error());
$begin = ($_GET['p'] - 1) * 10;
?>
De link geeft een fout vanwege je ":
[code]
<?
$p = $_GET['p']; // haal je hier p vandaan?
echo "('<a href=\"index.php?page=verwijderen&p='.$p+1.'</a>')";
?>
?
Onbekende gebruiker
14-12-2006 18:06
Óf je doet het zo:
[edit]Naar jouw code aangepast, dus copy paste :)[/edit]
<?php
include("../../incs/connect.php");
// how many rows to show per page
$rowsPerPage = 23;
// by default we show first page
$pageNum = 1;
// if $_GET['page'] defined, use it as page number
if(isset($_GET['page']))
{
$pageNum = $_GET['page'];
}
// counting the offset
$offset = ($pageNum - 1) * $rowsPerPage;
$sql = "$sqlout = "SELECT * FROM vangaart_nieuws ORDER BY id DESC Limit 10";
$query = mysql_query($sql) or die(mysql_error());
if (isset($_GET['id']) && ctype_digit($_GET['id'])){
$query= "DELETE FROM vangaart_nieuws WHERE id = '".$_GET['id']."'";
mysql_query($query) or die(mysql_error());
}
// print the output
echo "<b>Overzicht Berichten</b>";
// how many rows we have in database
$query = "SELECT COUNT(name) AS numrows FROM pcm";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];
// how many pages we have when using paging?
$maxPage = ceil($numrows/$rowsPerPage);
// print the link to access each page
$self = $_SERVER['PHP_SELF'];
// creating previous and next link
// plus the link to go straight to
// the first and last page
if ($pageNum > 1)
{
$page = $pageNum - 1;
$prev = " <a href=\"$self?page=$page\">«Prev</a> ";
$first = " <a href=\"$self?page=1\">««First Page</a> ";
}
else
{
$prev = ' '; // we're on page one, don't print previous link
$first = ' '; // nor the first page link
}
$last = " <a href=\"$self?page=$maxPage\">Last Page»»</a> ";
}
else
{
$next = ' '; // we're on the last page, don't print next link
$last = ' '; // nor the last page link
}
// print the navigation link
echo $first . $prev . " Showing page $pageNum of $maxPage pages " . $next . $last;
// and close the database connection
?>
@ Flip : Je code kwam zeker van pas, alleen moesten er nog wel wat foutjes veranderd worden, maar wel enorm bedankt voor je bijdrage! :-)
Alleen nu heb ik dan in totaal deze code, maar probleem is nu dat hij niet meer de resultaten weer geeft die in de tabel staan :-D
Pagina navigatie vorige en volgende werkt weer wel...
<?php
include("../../incs/connect.php");
// how many rows to show per page
$rowsPerPage = 10;
// by default we show first page
$pageNum = 1;
// if $_GET['page'] defined, use it as page number
if(isset($_GET['id2']))
{
$pageNum = $_GET['id2'];
}
// counting the offset
$offset = ($pageNum - 1) * $rowsPerPage;
$sql = "SELECT * FROM vangaart_nieuws ORDER BY id DESC Limit 10";
$query = mysql_query($sql) or die(mysql_error());
if (isset($_GET['id']) && ctype_digit($_GET['id'])){
$query= "DELETE FROM vangaart_nieuws WHERE id = '".$_GET['id']."'";
mysql_query($query) or die(mysql_error());
}
// print the output
echo "<b>Overzicht Berichten</b>";
echo "<table width=\"100%\" border=\"0\" cellspacing=\"2\" cellpadding=\"2\">\n";
echo "\n<tr bgcolor=\"#666666\">
\n<td>id</td>
\n<td>datum</td>
\n<td>titel</td>
\n<td>record verwijderen?</td>
\n</tr>";
while($row = mysql_fetch_object($query)) {
if ($kleur == "#666666"){
$kleur = "#999999";
}else{
$kleur = "#999999";
}
echo "<tr bgcolor=\"" . $kleur . "\">
\n<td>" . $rij['id'] . "</td>
\n<td>" . $rij['datum'] . "</td>
\n<td>" . $rij['titel'] . "</td>
\n<td>" . "<a href=\"index.php?page=verwijderen&id=" . $rij['id'] . "\">Verwijderen?</a>" . "</td>
";
}
echo "</table>\n";
echo "<br><br><b>Bericht verwijderd ?</b><br>Klik <a href=\"index.php?page=verwijderen\">hier</a> om pagina te updaten.<br><Br>";
// how many rows we have in database
$query = "SELECT COUNT(id) AS numrows FROM vangaart_nieuws";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];
// how many pages we have when using paging?
$maxPage = ceil($numrows/$rowsPerPage);
// print the link to access each page
$self = $_SERVER['PHP_SELF'];
// creating previous and next link
// plus the link to go straight to
// the first and last page
if ($pageNum > 1)
{
$page = $pageNum - 1;
$prev = " <a href=\"index.php?page=verwijderen2&id2=$page\">« Vorige</a> ";
$first = " <a href=\"index.php?page=verwijderen2&id2=1\">«« Eerste pagina</a> ";
}
else
{
$prev = ' '; // we're on page one, don't print previous link
$first = ' '; // nor the first page link
}
if ($pageNum < $maxPage)
{
$page = $pageNum + 1;
$next = " <a href=\"index.php?page=verwijderen2&id2=$page\">» Volgende</a> ";
$last = " <a href=\"index.php?page=verwijderen2&id2=$maxPage\">»» Laatste pagina</a> ";
}
else
{
$next = ' '; // we're on the last page, don't print next link
$last = ' '; // nor the last page link
}
// print the navigation link
echo "Toont pagina $pageNum van $maxPage pagina's <br>". $first . $prev . $next . $last;
// and close the database connection
?>