Paginanummers

Door Nemesis , 24 jaar geleden, 146.894x bekeken

Omdat ik er met het scriptje van Bas niet helemaal uitkwam om paginanummers toe te voegen op mn eigen site ben ik zelf aan het coden geslagen.
Ik heb geprobeerd om het zo algemeen te houden, en voor zover ik kan zien ben ik daar aardig in geslaagd.

EDIT:
Ik heb er wat code aan toegevoegd zodat het script werkt, wel moeten natuurlijk de velden in de SQL queries worden aangepast.

Gesponsorde koppelingen

PHP script bestanden

  1. paginanummers

 

Er zijn 26 reacties op 'Paginanummers'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Mitch X
Mitch X
24 jaar geleden
 
0 +1 -0 -1
Kheb ff de kleurcoding toegevoegd, mss kan je het script nog wat opschonen?
Vars buiten aanhalingstekens enzo ...
Bram Z
Bram Z
24 jaar geleden
 
0 +1 -0 -1
Als je een query hebt met count alleen moet je niet order by id doen:D voor de rest sjiek script.
Marien xD
Marien xD
24 jaar geleden
 
0 +1 -0 -1
werkt deze ook?
Marien xD
Marien xD
24 jaar geleden
 
0 +1 -0 -1
ik ben er mee bezig en ik heb al aardig wat aangepast.... en hij werkt nu eindelijk
Marien xD
Marien xD
24 jaar geleden
 
0 +1 -0 -1
ik heb een volledig werkende versie ;) maar daar hoef je alleen wat kleine begrijpelijke dingetjes te veranderen en het is gepiept :P

Zal ik em ook hier posten. Wel met dan alle lof naar Bas en Nemesis?
Mitch X
Mitch X
24 jaar geleden
 
0 +1 -0 -1
Als dit script niet werkt moet ie of
1. Werkend gemaakt worden
2. Verwijdert worden

Als nog 2 mensen kunnen bevestigen dattie niet werkt,
zal Nemesis um moeten fixen anders haal ik hem weg,
en kan jij jouw versie plaatsen :)
The Beeding Clown
The Beeding Clown
24 jaar geleden
 
0 +1 -0 -1
Hier zit de fout volgens mij.
"SELECT COUNT(id) FROM $table WHERE nid = '$_GET[id]' ORDER BY id";

moet dit zijn lijkt me
"SELECT COUNT(*) FROM $table";
Marien xD
Marien xD
24 jaar geleden
 
0 +1 -0 -1
nee er zijn meerdere kleine dingetjes die niet (goed) werken en je moet zelf het een en ander toevoegen aan het script. Een leek snapt zoiets niet ;)
Nemesis
Nemesis
24 jaar geleden
 
0 +1 -0 -1
Vreemd dat mensen er moeite mee hebben, bij mij werkt het prima.
Je moet natuurlijk wel de gegevens gebruiken van je eigen tabel, en de link aanpassen op je eigen site.
Het zou dan gewoon moeten werken.
Marien xD
Marien xD
24 jaar geleden
 
0 +1 -0 -1
Ow ;) er is opeens wat bij gekomen. Bij mij was die where query er nog niet voor de resultaten
Nemesis
Nemesis
24 jaar geleden
 
0 +1 -0 -1
Eeehh... Ik heb geen queries toegevoegd hoor, alleen het gedelte waarin ze ook daadwerkelijk worden aangeroepen en getoond is toegevoegd.
En dat ook alleen omdat anders het script niet "volledig" is ;)

@nano:
Die query klopt wel hoor, aangezien alleen de reacties worden geteld die bij een bepaalde newspost horen moet het WHERE gedeelte er ook bij.
Het sorteren is inderdaan niet nodig, en heb ik dus ook verwijderd :)
The Beeding Clown
The Beeding Clown
24 jaar geleden
 
0 +1 -0 -1
Dit kan je ook wat makkelijker schrijven.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
if (!$_GET['posts']) {
    $posts = "0";
}

else {
    $posts = $_GET['posts'];
}

?>


zoiets als dit... scheeld weer een aantal lijnen code ;)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$posts
= isset($_GET['posts']) ? $_GET['posts'] : 0;
?>


Mischien is het ook wel grappig om zelf je berichten per pagina te kunnen bepalen.. (heb ik in mijn gasten boek ook gedaan)

http://www.niele.nl/guestbook/ - voorbeeld
Johan
Johan
24 jaar geleden
 
0 +1 -0 -1
sorry, maar wat doet dit script nouw precies...????
Nemesis
Nemesis
24 jaar geleden
 
0 +1 -0 -1
Het splitst een pagina met bijvoorbeeld reacties op in meerdere paginas.

@nano
Tnx, dat scheelt idd weer wat regels code...
Ben pas anderhalf maand ofzo bezig met PHP, dus veel functies ken ik niet eens :)
En het laten kiezen van de reacties is idd wel leuk, hoe heb je dat gedaan?
Ik ben er behoorlijk benieuwd naar :D
The Beeding Clown
The Beeding Clown
24 jaar geleden
 
0 +1 -0 -1
ow joh.. dan leer je verdraait snel :)

om die berichten per pagina te doen doe je het volgende..

zet dit in de head van je pag :
<SCRIPT type="text/javascript" language="JavaScript">
<!--
function openURI() {
var control = document.form.documentkeuze;
if (control.options[control.selectedIndex].value != ' ') {
location.href = control.options[control.selectedIndex].value;
}
}
//-->
</SCRIPT>


van :
$per_page = 5;
maak je...
$per_page = isset($_GET['per_page']) ? $_GET['per_page'] : 5;


En natuurlijk het form :
<form name="form">
Berichten per pagina :
<select name="documentkeuze" onchange="openURI()">
<option value="index.php?page=1&amp;per_page=
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $per_page; ?>
" >&nbsp;
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $per_page; ?>
</option>
<option value="index.php?page=1&amp;per_page=
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $per_page; ?>
" >- - -</option>
<option value="index.php?page=1&amp;per_page=5" >&nbsp; 5</option>
<option value="index.php?page=1&amp;per_page=10">&nbsp;10</option>
<option value="index.php?page=1&amp;per_page=15">&nbsp;15</option>
<option value="index.php?page=1&amp;per_page=20">&nbsp;20</option>
<option value="index.php?page=1&amp;per_page=25">&nbsp;25</option>
<option value="index.php?page=1&amp;per_page=30">&nbsp;30</option>
<option value="index.php?per_page=
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $total_posts; ?>
" >&nbsp;all</option>
</select>
</form>


Waar je ook even op moet letten zijn de links van je page nummers.
Deze moeten natuurlijk ook de 'per_page' meegeven.

verander :
$links = "<a href=\"$_SERVER[PHP_SELF]?page=$_GET[page]&id=$_GET[id]&posts=$posts\">".$pages." </a>";
in :
$links = "<a href=\"$_SERVER[PHP_SELF]?page=$_GET[page]&amp;id=$_GET[id]&amp;posts=$posts&amp;per_page=$per_page\">".$pages." </a>";

Succes
Jorik
Jorik
24 jaar geleden
 
0 +1 -0 -1
Zitten wat fouten in de gewone code..
naar wat gekloot te hebben werkte het..
de WHERE pid ofzo heb ik eruit gegooid, weet ik veel waarvoor het was, en bij het weergeven zat een fout..

en als er nog geen index.php?page=&id=&posts=5 is opgegeven dan springen de errors ook:


sdafdasfdasf

sdf

dsfsdf

sdfsdf

dsafsaf

Notice: Undefined index: posts in d:\webserver\www\index.php on line 35
1 :
Notice: Undefined index: posts in d:\webserver\www\index.php on line 35

Notice: Undefined index: page in d:\webserver\www\index.php on line 39

Notice: Undefined index: id in d:\webserver\www\index.php on line 39
2 :
Notice: Undefined index: posts in d:\webserver\www\index.php on line 35

Notice: Undefined index: page in d:\webserver\www\index.php on line 39

Notice: Undefined index: id in d:\webserver\www\index.php on line 39
3 :
Notice: Undefined index: posts in d:\webserver\www\index.php on line 35

Notice: Undefined index: page in d:\webserver\www\index.php on line 39

Notice: Undefined index: id in d:\webserver\www\index.php on line 39
4
(2,3,4 zijn links)

naar een aantal wijzigingen bleven bovenstaande errors over.

$posts == $_GET['posts']
valt weinig samen te stellen, als er helemaal geen ?posts=bla is opgegeven..

verder mooi script, als het foutje eruit gehaald zou wordne...
The Beeding Clown
The Beeding Clown
24 jaar geleden
 
0 +1 -0 -1
zal ik anders vandaag een kijken of ik een nieuwe versie kan posten. Opzich zijn dit soort dingen altijd wel handig om op de site te hebben.
PrisonerOfPain
PrisonerOfPain
24 jaar geleden
 
0 +1 -0 -1
Ik heb momenteel geen PHP draaien hier; maar dit zou moeten werken.

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
<?php
$Query
= "
SELECT
    COUNT(pagina_id) as PagCount
FROM
    pagina
WHERE
    verhaal="
. mysql_real_escape_string ($_GET['id']) . "
GROUP BY verhaal"
;

$Res = mysql_query ($Query);
$Pages = mysql_fetch_assoc ($Res);
$Pages = $Pages['PagCount'];

if ($_GET['page'] <= $Pages)
{

    $Query = "SELECT verhaal.title, pagina.kopje, pagina.tekst FROM verhaal INNER JOIN pagina ON pagina.verhaal_id = verhaal.id";
    $Res = mysql_query ($Query);

    $_TPL['tekst'] = mysql_fetch_assoc ($Res);

    print_r ($_TPL['tekst']);
}

else
{
    trigger_error ('Deze pagina bestaat niet, probeer een ander pagina nummer', E_USER_ERROR);
}


/*
Tabel pagina:
Pagina_id | verhaal_id | tekst | kopje
Tabel verhaal:
Id | title
*/

?>


En voor alleen volgende en vorige:

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
<?
$MaxPerPage
= 25;
$Start = ((int)$_GET['pagina'] - 1) * $MaxPerPage;

if ($Start == 0)
{

    trigger_error ('Er is iets mis gegaan met het berekenen van de pagina nummering, deze begint bij 1', E_USER_ERROR);
}


$Query = "
SELECT
    reacties.title,
    reacties.post,
FROM
    reacties
RIGHT JOIN
    onderwerp
ON
    reacties.onderwerp_id = onderwerp.id
LIMIT
    {$Start}, {$MaxPerPage} + 1"
;

$Res = mysql_query ($Query);

if (mysql_num_rows ($Res) == ($MaxPerPage + 1))
{

    echo 'volgende op ' . $_SERVER['PHP_SELF'] . '?pagina=' . htmlEntities ($_GET['pagina']) + 1;
}


if ($_GET['pagina'] != 1) //Niet de eerste pagina
{
    echo 'vorige op ' . $SERVER['PHP_SELF'] . '?pagina=' . htmlEntities ($_GET['pagina']) - 1;
}


while (false !== ($_TPL['reacties'][] = mysql_fetch_assoc ($Res))) {};
/*
Tabel reacties:
title | post | reactie_id | onderwerp_id
Tabel onderwerp:
id
*/

?>
Jorik
Jorik
24 jaar geleden
 
0 +1 -0 -1
Edit:
Zit ook vol met fouten, heb (geloof ik) de 2 dbs aangemaakt, maar gaat niet goed..
In db reacties 3, in db onderwerpen 3

Errors:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /usr/export/www/vhosts/funnetwork/hosting/berknet/test.php on line 13

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /usr/export/www/vhosts/funnetwork/hosting/berknet/test.php on line 21
En voor alleen volgende en vorige:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /usr/export/www/vhosts/funnetwork/hosting/berknet/test.php on line 54
-1
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /usr/export/www/vhosts/funnetwork/hosting/berknet/test.php on line 64

laatste word een paar honder keer herlaald geloofk


24 jaar geleden
 
0 +1 -0 -1
Is het ook niet veel netter om de var's buiten quotes te halen?
Marien xD
Marien xD
24 jaar geleden
 
0 +1 -0 -1
dat is zeker ;)
Velixr
velixr
24 jaar geleden
 
0 +1 -0 -1
weet iemand in hoeverre dit script precies werkt? Zijn de errors verholpen in deze weergegeven code?
The Beeding Clown
The Beeding Clown
24 jaar geleden
 
0 +1 -0 -1
Check dit script
Die werkt iig
Ward Vissers
Ward Vissers
24 jaar geleden
 
0 +1 -0 -1
<CENTER>

<body link="#000000" vlink="#000000" alink="#000000">
<TABLE WIDTH="580 PX" HEIGHT="480 PX" BORDER="0" BORDERPROPERTIES="0" CELLPADDING="0" CELLSPACING="0">
<TR>
<TD BGCOLOR="#000000" WIDTH="600 PX" HEIGHT="30 PX">
<P ALIGN="CENTER">
<FONT COLOR="#FFFFFF" SIZE="2" FACE="VERDANA">
<B>Voor het Gastenboek tekenen,
<A HREF="gastenboekinvoer.php">
<FONT COLOR="#FF0000">klik hier
</FONT>
</A>
</B>
</FONT>
</P>
</TD>
</TR>
<TR>
<TD BACKGROUND="image/bg01.jpg" WIDTH="600 PX" HEIGHT="480 PX" VALIGN="TOP">
<P ALIGN="CENTER">


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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
include("connect.php");

$PAGE_LIMIT = 15; // aantal berichten per pagina

if (empty($page)) {
    $page=1;
}


$numresults=mysql_query("SELECT * FROM gastenboek ORDER BY gastenboekid desc");
$numrows=mysql_num_rows($numresults);

// maximum of aantal benodigde paginas
$totalPages=intval($numrows/$PAGE_LIMIT);

$result=mysql_query("SELECT * FROM gastenboek ORDER BY gastenboekid desc limit $page,$PAGE_LIMIT");

WHILE ($data = mysql_fetch_array($result))
  {

//berichten weergeven
$datum= explode("-",$data[datum]);

    echo"
    <TABLE BACKGROUND=image/bg01.jpg WIDTH=580 BORDER=0 BORDERPROPERTIES=0 CELLSPACING=0 CELLPADDING=0 VALIGN=TOP>
    <TR>
        <TD WIDTH=380>
        <HR>
        </TD>
    </TR>
    <TR>
        <TD WIDTH=380>
        <P ALIGN=LEFT>
        <FONT COLOR=#000000 SIZE=1 FACE=VERDANA>
        <B>Door:</B> $data[naam]
        <BR><B>op:</B> $datum[2]-$datum[1]-$datum[0]
        <BR><BR>
        </FONT>
        </P>
        </TD>
    </TR>
    <TR>
        <TD WIDTH=380>
        <P ALIGN=LEFT>
        <FONT COLOR=#000000 SIZE=1 FACE=VERDANA>
        $data[bericht]
        </FONT>
        </P>
        </TD>
    </TR>
    </TABLE>
    "
;
}


$page = isset($_GET['page']) ? $_GET['page'] : 1;

function
show_pagenumbers($start, $end, $page, $totalPages, $PAGE_LIMIT) {
    $str = '';
    for ($i = $start; $i <= $end; $i++) {
        if ($page == $i) {
            $str .= '<font size=2 face=Verdana, Arial, Helvetica, sans-serif>&nbsp;<b>[ '.$i.' ]</b>&nbsp;</font>';
        }

        else{
            $str .= '&nbsp;<font size=2 face=Verdana, Arial, Helvetica, sans-serif><a href="'.$_SERVER['PHP_SELF'].'?page='.$i.'&amp;perpage='.$PAGE_LIMIT.'">'.$i.'</a></FONT>&nbsp;';
        }
    }

    return $str;
}


if ($totalPages >= 1) {
    if($totalPages > 7) {
        $start = $page - 3;
        $end = $page + 3;

        while($start < 1) {
            $start++;
            $end++;
        }

        while($end > $totalPages) {
            $start--;
            $end--;
        }

        echo ( $page == 1 ) ? '<font size=2 face=Verdana, Arial, Helvetica, sans-serif>&laquo; Eerste &nbsp;&nbsp;' : '<a href="'.$_SERVER['PHP_SELF'].'?page=1">&laquo; Eerste&nbsp;&nbsp;</a></font>';
        echo ( $page > 4 ) ? ' ...' : '  ';

        echo show_pagenumbers($start, $end, $page, $totalPages, $PAGE_LIMIT);

        echo ( $page < $totalPages - 3 ) ? '...&nbsp;&nbsp;' : '&nbsp;&nbsp;';
        echo ( $page == $totalPages ) ? '<font size=2 face=Verdana, Arial, Helvetica, sans-serif>Laatste &raquo; &nbsp;&nbsp;' : '&nbsp;&nbsp;<a href="'.$_SERVER['PHP_SELF'].'?page='.$totalPages.'" >Laatste &raquo; </a></FONT>';
    }

    else {
        echo show_pagenumbers(1, $totalPages, $page, $totalPages, $PAGE_LIMIT);
    }
}


?>



</P>
</TD>
</TR>

</TABLE>
</CENTER>

Dit is mijn gastenboek.php dit vorige en volgende systeem werkt erg prettig.


23 jaar geleden
 
0 +1 -0 -1
ik zal wel overkomen als een zeur maar ik zeg het toch maar effe.. het hele script dat je hier heb gepost is :
1. veel te groot voor wat het doet
2. 1 giga bug

1. waarom? ik heb er een veel korter scriptje voor gevonden van een paar REGELS!!!
if ($teller = 0; $teller &lt; 10; $teller++)[linebreak]{[linebreak]echo $pagenr;[linebreak]}[linebreak][linebreak]echo &quot; ... &quot;;[linebreak][linebreak]if ($teller2 = 0; $teller &lt; $(hier komt var max min tien);[linebreak]$teller2++)[linebreak]{[linebreak]echo $pagenr;[linebreak]}
bron: http://macfreak.org/cgi-bin/forums/topic.cgi?forum=8&topic=933

.2 Waarom is jou script zo onveilig.. ik zal het even toelichten. Jij gebruikt IN JE QUERY`S inputs van de gebruikers ZONDER eerst te controleren of de input wel mag.. misschien voeren ze wel een sql query uit via die $_GET['id'] Dus effe een grote tip.. controleer ALTIJD de input van de begruiker maar verder wel toppie dat je dat script hier heb gepost :)
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Lissy Pixel
Lissy Pixel
23 jaar geleden
 
0 +1 -0 -1
@ Mark : Welk script bedoel je precies? Er zijn namelijk meerdere scripten in dit topic gepost...

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

Inhoudsopgave

  1. paginanummers

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

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.