PHP MYSQL paging in een tabel

Door Leon , 16 jaar geleden, 7.003x bekeken

Een makkelijke methode om paging aan je site toe te voegen zonder paginanummering!

Gesponsorde koppelingen

Inhoudsopgave

  1. Inleiding
  2. Javascript/HTML
  3. Paginanummer verwerken met php

 

Er zijn 23 reacties op 'Php mysql paging in een tabel'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Leon
leon
16 jaar geleden
 
0 +1 -0 -1
Oke ik begrijp dat er mensen zijn zonder javascript.
Als ik het zo doe, is het dan beter?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<a href="http://www.adres.nl/index.php?pagina=<?php print($paginadown); ?>"><img align="left" src="links.bmp"></a>
<a href="http://www.adres.nl/index.php?pagina=<?php print($paginaup); ?>"><img align="right" src="rechts.bmp"></a>
Noxxos
Noxxos
16 jaar geleden
 
0 +1 -0 -1
Waarom gebruik je javascript om iemand naar een andere pagina te sturen?
Als je niet met ajax bezig bent kan je nog beter van javascript afblijven, als een bezoeker geen javascript heeft aanstaan kan hij niet eens naar een andere pagina gaan.
Je kan hiervoor beter <a> tags gebruiken.

Was er niet al zo'n script / tutorial hier ergens?
Leon
leon
16 jaar geleden
 
0 +1 -0 -1
Ik weet niet of zo'n tutorial er al was, maar ik kon er geen vinden. En ik ben pas een amateur, maar het werkt prima
btw zijn er mensen zonder javascript?
Niek s
niek s
16 jaar geleden
 
0 +1 -0 -1
ja, maar ik niet. Ik heb gewoon JS
Vincent
Vincent
16 jaar geleden
 
0 +1 -0 -1
@Niek: Iks dee.
Jelmer -
Jelmer -
16 jaar geleden
 
0 +1 -0 -1
Mensen zonder Javascript?
-- Jelmer meldt zich: PSP (gedeeltelijk), PDA (hopeloos)
-- Google meldt zich: Sorry, nu kan ik je andere pagina's niet indexeren. Geen zoekresultaten voor jouw >:)
-- andere zoekmachines volgen...

Je zegt dat dit de altenatieve methode is. Wat is dan het andere alternatief? Want dit lijkt aardig op wat al die andere pagina-scripts ook al doen. Als je nu kwam met de eeuwig lange pagina of een aparte manier van pagina's met elkaar in verband brengen...
Rudie dirkx
rudie dirkx
16 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$query1
= "SELECT COUNT(*) FROM tabel";
$resultaat1 = mysql_query($query1);
if($row1 = mysql_fetch_row($resultaat1))
{

  if($row1[0] > ($pagina + 10))
....[
/code]
Dat kan wel makkelijker. Omdat je een COUNT selecteert, weet je zeker dat je 1 rij terug krijgt, met 1 veld, dus die kan je mteen ophalen, zonder checks:
[
code][code]<?php

$iRows
= mysql_result(mysql_query("SELECT COUNT(1) FROM tabel;"),0);

?>
Hipska BE
Hipska BE
16 jaar geleden
 
0 +1 -0 -1
En WAAR staat nu de alternatieve paginanummering? Of ben je dat stuk gladweg vergeten? (kan altijd natuurlijk :D )
Iltar van der berg
iltar van der berg
16 jaar geleden
 
0 +1 -0 -1
Ik vind het niet zo netjes, gewoon + en - 10.

Maak er dan 1 waarbij je nog tussen 3 of 4 paginas ervoor en ernaa kan kiezen, Naar de eerste en de laatste kan gaan EN dat als je een waarde lager dan pagina =0 of hoger dan pagina = (max aantal paginas) gaat, dat je naar de eerste of laatste pagina verwijzen word (net welke je doet)

Ik vind dit het niet waard om in de database te zetten als ik eerijk mag zijn.
Leon
leon
16 jaar geleden
 
0 +1 -0 -1
Ok, ik trek me terug als jullie deze tutorial waardeloos vinden dan kunnen jullie stemmen dat deze tutorial niets toevoegd, maar het is een tutorial. Een stuk om iets van te leren, deze is niet bedoeld voor geavanceerde programmeurs zoals jullie.
Iltar van der berg
iltar van der berg
16 jaar geleden
 
0 +1 -0 -1
"maar het is een tutorial. Een stuk om iets van te leren, deze is niet bedoeld voor geavanceerde programmeurs zoals jullie."

Zorg dan op zn minst dat "N00bs" er ook wat aan hebben. Gebruik de juiste manier van printen (dus niet print, maar echo), check alles, maak het uitgebreider. Als ik elk beginners scriptje zou plaatsen dat ik maakt, zou het zo vol zijn...
Leon
leon
16 jaar geleden
 
0 +1 -0 -1
wat is er mis met print();
btw ik ben zelf ook een newbie
PHP erik
PHP erik
16 jaar geleden
 
0 +1 -0 -1
Ik ben het met Leon eens. Van deze tutorial kun je wel e.e.a. leren. En je kunt niet zeggen dat je men het zo fout leert, want dan kan je 80% van de scripts en tutorials van gerespecteerde members van PHPhulp ook verwijderen.

Print is een normale functie. Echo is iets sneller maar dat is eigenlijk verwaarloosbaar.

@iltar
Ik vind je reacties niet erg sportief. Ik had jou bijvoorbeeld ook kunnen afzeiken bij jouw script, http://www.phphulp.nl/php/scripts/7/1031/, maar dat heb ik niet gedaan, ik heb een nuttige toevoeging gedaan. Dat is toch waar we naar streven als community.

Met zeer vriendelijke groet,

PHPerik de kwaadaardige moderator
Leon
leon
16 jaar geleden
 
0 +1 -0 -1
dankje PHPerik
Iltar van der berg
iltar van der berg
16 jaar geleden
 
0 +1 -0 -1
Ik ben niet aan het afzeiken. Ik zie het alleen als een te simpel script, hij zou er nog wat extra dingen aan moeten maken.

Bijvoorbeeld
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
if(isset($_GET['pagina']) and is_numeric($_GET['pagina']) and $_GET['pagina'] != '' and $_GET['pagina'] > 0)
{

    // goed
}
else
{
    header('location: ?pagina=1');
    // ook goed
}
?>


En kijken of er resultaat is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
if($result)
{

    // hier de while
}
else
{
    // foutmelding geven, eventueel
    // echo mysql_error();

}
?>
Frank
Frank
16 jaar geleden
 
0 +1 -0 -1
Heb het getest, en ik krijg een foutmelding op deze regel:

while ( $row2 = mysql_fetch_row($resultaat2) )

Heeft iemand meer dit probleem? Tabellen en verbinding met de database zijn juist. Ligt het misschien aan de LIMIT ?
Leon
leon
16 jaar geleden
 
0 +1 -0 -1
Ik kan geen fout ontdekken, ik zal het script zelf even testen
Iltar van der berg
iltar van der berg
16 jaar geleden
 
0 +1 -0 -1
en als je ipv
while ( $row2 = mysql_fetch_row($resultaat2) )

doet:
while ( $row2 = mysql_fetch_assoc($resultaat2) )
Leon
leon
16 jaar geleden
 
0 +1 -0 -1
deze fout krijg ik niet, ik kreeg wel een fout in rgl. 4
verander het in:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$query1 = "SELECT COUNT(*) FROM tabel";
$resultaat1 = mysql_query($query1);
$row1 = mysql_fetch_row($resultaat1);


in totaal ziet mijn code er nu zo uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<html>
<?php
include("verbinding.php");
$query1 = "SELECT COUNT(*) FROM tabel";
$resultaat1 = mysql_query($query1);
$row1 = mysql_fetch_row($resultaat1);
if($row1[0] > ($pagina + 10))
{

  $paginaup = $pagina + 10;
}

else
{
  $paginaup = $pagina;
}

if($pagina >= 10)
{

  $paginadown = $pagina - 10;
}

else
{
  $paginadown = 0;
}

?>

<body bgcolor="black">
<table width="100%" bgcolor="dimgray" border="1">
<tr>
<td bgcolor="darkslategray"><font color="aqua">ID-nummer</td>
<td bgcolor="darkslategray"><font color="aqua">eigenschap1</td>
<td bgcolor="darkslategray"><font color="aqua">eigenschap2</td>
<td bgcolor="darkslategray"><font color="aqua">eigenschap3</td>
<td bgcolor="darkslategray"><font color="aqua">eigenschap4</td>
</tr>
<?php
if($pagina=="")
{

  $query2 = "SELECT * FROM tabel LIMIT 0, 10";
}

else
{
  $query2 = "SELECT * FROM tabel LIMIT $pagina, 10";
}

$resultaat2 = mysql_query($query2);
while($row2 = mysql_fetch_row($resultaat2))
{

  ?>

  <tr>
  <td><font color="aqua"><?php print($row2[0]); ?></td>
  <td><font color="aqua"><?php print($row2[1]); ?></td>
  <td><font color="aqua"><?php print($row2[2]); ?></td>
  <td><font color="aqua"><?php print($row2[3]); ?></td>
  <td><font color="aqua"><?php print($row2[4]); ?></td>
  </tr>
  <?php
}
?>

</table>
<table bgcolor="black" width="100%" border="1">
<tr bgcolor="black">
<td colspan = 5>
<a href="http://www.adres.nl/index.php?pagina=<?php print($paginadown); ?>"><img border="0" align="left" src="links.bmp"></a>
<a href="http://www.adres.nl/index.php?pagina=<?php print($paginaup); ?>"><img border="0" align="right" src="rechts.bmp"></a>
</td>
</tr>
</table>
</body>
</html>

het werkt op deze manier
Mike van Dongen
Mike van Dongen
16 jaar geleden
 
0 +1 -0 -1
Als het voor N00B's bedoeld is, moet het ook volledig foutloos zijn.
Als je PHP ook alle notice's laat zien krijg je namelijk elke keer als er geen $_GET['pagina'] is meegegeven, een error.
Dat is precies zoals je zelf ook zegt:

Quote:
Als je voor de eerste keer op de site komt is $pagina zeer waarschijnlijk 'undefined' dus begin je bij de eerste record.


Verder doe je dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if($pagina=="")
{

  $query2 = "SELECT * FROM nieuws LIMIT 0, 10";
}

else
{
  $query2 = "SELECT * FROM nieuws LIMIT $pagina, 10";
}

?>


Hij check of $pagina LEEG is, niet of hij bestaat.
Net zoiets:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$resultaat1
= mysql_query($query1);
$row1 = mysql_fetch_row($resultaat1);
if($row1[0] > ($pagina + 10))
{

  $paginaup = $pagina + 10;
}
...

?>


$pagina zal echter ook nooit bestaan, $pagina is in werkelijkheid namelijk iets anders dan $_GET['pagina'].
Meer daarover hier: http://nl2.php.net/manual/nl/security.globals.php

http://www.phphulp.nl/php/faq/#10 zegt het zelfde:
Quote:
Notice: Undefined variable
Deze error geeft aan dat een variable niet gedefineerd is of bekend is bij de server. Je kan het eenvoudig oplossen door boven elke script de volgende code neer te zetten.

error_reporting(E_ALL ^ E_NOTICE);
?>

De echte oplossing is alle variable eerst te controleren met de functie isset of empty


Deze reactie zou misschien vervelend aan kunnen komen, maar je kunt niet van je fouten leren, als je niet weet wat de fout(en) is/zijn!
Verder vind ik het goed / duidelijk / netjes gescript.

Laterrr!
Leon
leon
16 jaar geleden
 
0 +1 -0 -1
later :)
 
0 +1 -0 -1
Waarom een onclick handler op een img element als je gewoon een img element kunt plaatsen in een a element? (Waarom doe je moeilijk als het ook makkelijk en zonder javascript kan).

Ik bezoek een pagina (met dank aan NoScript) altijd met Javascript uitgeschakeld, en pas als ik het nodig vind schakel ik het in, nu zou je kunnen overwegen om mij, Google, en Jelmer te pesten. Maar ongeveer 10% van de bezoekers surft met Javascript uitgeschakeld / een browser die Javascript niet ondersteund.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Iltar van der berg
iltar van der berg
16 jaar geleden
 
0 +1 -0 -1
Waarom heb je het dan uitstaan?

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. Inleiding
  2. Javascript/HTML
  3. Paginanummer verwerken met php

Labels

  • Geen tags toegevoegd.

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.