PDA

Bekijk Volledige Versie : probleem met pagina navigatie



Hans Warnar
16/11/03, 21:45
Beste NIWOers,

Als newbie ben ik inmiddels al uren bezig met een navigatiescript. Het
probleem is als volgt:

Afhankelijk van het aantal weer te geven records per pagina worden de
navigatielinks (in de vorm van cijfers) correct weergegeven.

Echter als ik via zo'n links naar de volgende pagina wil krijg ik wederom
dezelfde records te zien i.p.v. de volgende 5 of 10.

Wie helpt mij uit deze impasse?

Zie onderstaand script:

<html>

<body>

<script language=JavaScript src="../frames_body_array.js"
type=text/javascript></script>

<script language=JavaScript src="../mmenu.js" type=text/javascript></script>

<?php

include ("$pad../globals.php");

include ("$pad../inc/kop.php");

?>

<DIV ALIGN="center">

<SPAN CLASS="paginatitel">C D 's</SPAN>

</DIV>

<P>

TEKST

</P>

<HR size=1 noshade>

<P>

<?php

// De eerste regel maakt verbinding met de database, de tweede regel
selecteert een database

@mysql_connect($host, $user, $password) or die("FOUT--KAN GEEN VERBINDING
MAKEN MET DE DATABASE-SERVER");

@mysql_select_db($database) or die("FOUT--KAN GEEN VERBINDING KRIJGEN MET DE
DATABASE");

$maximum_aantal = 4; // Geef hier aan hoeveel records u maximaal per pagina
wilt weergeven.

$aantal_tellen = "SELECT * FROM $table6"; // Geeft aan wat we uit de
database willen halen.

$resultaat_tellen = mysql_query($aantal_tellen); // Geeft het aantal getelde
records in de database weer

$totaal_rijen = mysql_num_rows($resultaat_tellen); // Dit telt het aantal
rijen in de database

echo "$totaal_rijen<BR>";

echo "$resultaat_tellen<BR><BR>";

if(empty($pagina)){ // Controleert of de $pagina variabele leeg is

$pagina = 1; // Hier het nummer van de startpagina aangeven (bijv. pagina 3)

}

$maximumwaarde = $pagina * $maximum_aantal - ($maximum_aantal); //
Bijvoorbeeld: (1 * 5 - 5= 5) <- data begint bij record 0

$query = "SELECT * FROM $table6 ORDER BY Nummer LIMIT $maximumwaarde,
$maximum_aantal"; // Selecteert alle data uit de tabel.

$resultaat = mysql_db_query($database, $query, $connect) or die ("Fout: " .
mysql_error());// Eventueel weergave Foutmelding.

if(mysql_num_rows($resultaat) == 0){

echo("Geen records om te laten zien!");

}

print ("<TABLE>");

while($row = mysql_fetch_array($resultaat)){ // Voeg de resultaten in de
tabel.

print("<TABLE border=0>");

print("<TR>");

print("<TD>");

print("Nummer:");

print("</TD>");

print("<TD>");

print("<B>$row[Nummer]</B>");

print("</TD>");



print("<TR>");

print("<TD>");

print("Titel:");

print("</TD>");

print("<TD>");

print("<B>$row[Titel]</B>");

print("</TD>");



print("<TR>");

print("<TD>");

print("Tijdvak:");

print("</TD>");

print("<TD>");

print("<B>$row[Tijdvak]</B>");

print("</TD>");





print("<TR>");

print("<TD>");

print("Aantal:");

print("</TD>");

print("<TD>");

print("<B>$row[Aantal] x</B>");

print("</TD>");


print("</TR>");

print("</TABLE>");

print("<HR size=1 noshade>");

}

// Hieronder worden de navigatie nummers van de pagina's weergegeven.

$aantal_paginas = $totaal_rijen / $maximum_aantal;


for($i = 1; $i <= $aantal_paginas; $i++){

if($i == $pagina){

echo("$i &nbsp;");

}else{

echo("<a href=\"$PHP_SELF?pagina=$i\">$i</a>&nbsp;");

}

}

if(($totaal_rijen % $maximum_aantal) != 0){

if($i == $pagina){

echo($i."&nbsp;");

}else{

echo("<a href=\"$PHP_SELF?pagina=$i\">$i</a>&nbsp;");

}

}

echo("<br><br>Op dit moment bevat de database: $totaal_rijen cd's.");


mysql_free_result($resultaat);

?>

</P>

<P ALIGN="left">

<A HREF="#top"><IMG SRC="../pics/up.gif" WIDTH="18" HEIGHT="16" ALT="Naar
Boven" BORDER="0"></A>

</P>

<SMALL>

Paginatitel: http://<?php print $_SERVER["HTTP_HOST"]; print
$_SERVER["PHP_SELF"]; ?><br>

Originele pagina: <?php $aanmaakdatum = "01-11-2003."; print $aanmaakdatum;
?>

<?php $bestandsnaam = $_SERVER["SCRIPT_FILENAME"];

echo " Meest recente wijziging: ". date ("d-m-Y", filemtime($bestandsnaam));

?>

</SMALL>

<?php

include ("$pad../inc/voet.php");

?>

</body>

</html>


--
Met vriendelijke groet,
Hans Warnar


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.541 / Virus Database: 335 - Release Date: 14-11-2003

Arnoud Galactus Engelfriet
17/11/03, 09:00
In article <KdRtb.3476$%W3.19943@amstwist00>,
Hans Warnar <j.warnar@chello.nl> wrote:
>Afhankelijk van het aantal weer te geven records per pagina worden de
>navigatielinks (in de vorm van cijfers) correct weergegeven.
>
>Echter als ik via zo'n links naar de volgende pagina wil krijg ik wederom
>dezelfde records te zien i.p.v. de volgende 5 of 10.

De pagina die je wilt zien, wordt als parameter ($pagina) meegegeven
aan het script. In het script heet die geen $pagina maar
$_GET["pagina"]

Het is overigens zeer gevaarlijk om parameters van je script
direct aan je database te geven. Daarom zit die _GET er ook
omheen; dat dwingt je om even na te denken en hopelijk enig
filterwerk te doen. Ga maar eens na wat er gebeurt als ik
je script aanroep met "pagina=1,1;DROP DATABASE //".

Dus maak er iets van als
if (!ereg("^[0-9]+$", $_GET["pagina"])) {
die("Da's geen paginanummer!");
} else {
$pagina = $_GET["pagina"];
}

Arnoud

--
Arnoud Engelfriet, Dutch patent attorney - Speaking only for myself
Patents, copyright and IPR explained for techies: http://www.iusmentis.com/

Maarten Wierda
17/11/03, 13:30
Arnoud Galactus Engelfriet wrote:

> Het is overigens zeer gevaarlijk om parameters van je script
> direct aan je database te geven.

<snip>

> Dus maak er iets van als
> if (!ereg("^[0-9]+$", $_GET["pagina"])) {
> die("Da's geen paginanummer!");
> } else {
> $pagina = $_GET["pagina"];
> }

Is het loslaten van de functie is_numeric() niet net zo effectief?

--
Cheers, Maarten Wierda

"Music is first, lyrics are secondary."

Ronald Paul
17/11/03, 14:30
Maarten Wierda <moart3n@norecessDOT.com> schreef:

>> if (!ereg("^[0-9]+$", $_GET["pagina"])) {
>
>Is het loslaten van de functie is_numeric() niet net zo effectief?

Vrijwel, maar niet helemaal, want ik neem aan dat is_numeric ook
bevestigend zal antwoorden op negatieve nummers. En je wilt ook geen
dingen als 14e5 of 0x1F42A.

--
Groet, Ronald

Maarten Wierda
17/11/03, 15:15
Ronald Paul wrote:

> >> if (!ereg("^[0-9]+$", $_GET["pagina"])) {
> >
> >Is het loslaten van de functie is_numeric() niet net zo effectief?
>
> Vrijwel, maar niet helemaal, want ik neem aan dat is_numeric ook
> bevestigend zal antwoorden op negatieve nummers.

Ik controleer inderdaad ook of de betreffende variabele groter is dan 0.

> En je wilt ook geen dingen als 14e5 of 0x1F42A.

Mooi. Ik ben overtuigd ;)

--
Cheers, Maarten Wierda

"Music is first, lyrics are secondary."

Arnoud Galactus Engelfriet
17/11/03, 15:45
In article <3FB8BE86.65F650DE@norecessDOT.com>,
Maarten Wierda <moart3n@norecessDOT.com> wrote:
>Arnoud Galactus Engelfriet wrote:
>> Dus maak er iets van als
>> if (!ereg("^[0-9]+$", $_GET["pagina"])) {
>> die("Da's geen paginanummer!");
>> } else {
>> $pagina = $_GET["pagina"];
>> }
>
>Is het loslaten van de functie is_numeric() niet net zo effectief?

Iets minder, want "4e6" wordt door is_numeric() gezien als
een nummer, terwijl dat denk ik geen geldig paginanummer is.
Of heb jij 4 miljoen pagina's? :)

Arnoud

--
Arnoud Engelfriet, Dutch patent attorney - Speaking only for myself
Patents, copyright and IPR explained for techies: http://www.iusmentis.com/