[PHP] Bij 5 items nieuwe pagina

Pagina: 1
Acties:
  • 264 views

Acties:
  • 0 Henk 'm!

  • JefSnare
  • Registratie: Augustus 2007
  • Laatst online: 09-11-2020
Gezocht voor mijn leven maar niet gevonden...

Ik ben op zoek naar een script om met onderstaande code bij 5 gastenboek entries een nieuwe pagina te krijgen. Dat je dus kunt browsen door de pagina's.

Dit is de code zoals ik hem nu heb

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
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
<?php

$file = "php/gb.dat";

print '<h1 class="title">Guestbook</h1>';
echo '<p><a href="?page=php/safe">Write Guestbook</a></p>';
print '<table border="0" width="100%">';

if(file_exists($file)){
    $fp = fopen($file, "r");

    $inhoud = fread($fp, filesize($file));

    $inhoud = explode("\n", $inhoud);

    foreach($inhoud as $gegevens){
        if($gegevens == ''){
            echo '';
            }
            else{
        $gegevens = explode("___", $gegevens);

?>
            <tr>
                <td valign="top" width="20%">
                    <b>Name</b>:
                </td>
                <td valign="top">
<?php
                    echo $gegevens['0'];
?>
                </td>
            </tr>
            <tr>
                <td valign="top" width="20%">
                    <b>Message</b>:
                </td>
                <td valign="top">
<?php
                    echo $gegevens['1'];
?>
                </td>
            </tr>
            <tr>
                <td valign="top" width="20%">
                    <b>Date & Time</b>:
                </td>
                <td valign="top">
<?php
                    echo $gegevens['2'];
?>
                </td>
            </tr>
            <tr>
                <td colspan="2">---</td>
            </tr>
<?php
    }
}
        print '</table>';
        
    fclose($fp);
}
else{
    echo '<tr><td><p class="gewonetekst">No messages yet...</p></td></tr>';
     echo '<tr><td><p class="gewonetekst"><a href="?page=php/safe">Write Guestbook</a></p></td></tr>';
     print '</table>';
}
?> 


Hoe kan ik het voor elkaar krijgen om bij 5 items een "nieuwe pagina" als het ware te maken?

alvast bedankt _/-\o_

Twitter Flickr


Acties:
  • 0 Henk 'm!

  • dev10
  • Registratie: April 2005
  • Laatst online: 18-09 19:18
Ten eerste zou ik gastenboek entries niet in een textfile opslaan.
Ten tweede zou ik geen fopen en fread gebruiken voor het openen van text-files, maar file_get_contents();
Ten derde zou ik een SQL database gaan gebruiken.
Ten vierde zou ik me gaan inlezen in SQL, LIMIT, OFFSET en PHP.

Alles natuurlijk NOFI. :+

Acties:
  • 0 Henk 'm!

  • JefSnare
  • Registratie: Augustus 2007
  • Laatst online: 09-11-2020
Ehm, SQL niet beschikbaar...

Hoe moet ik het anders oplossen in plaats van SQL, LIMIT dat gaat wel, maar SQL is niet beschikbaar voor de situatie...

Twitter Flickr


Acties:
  • 0 Henk 'm!

  • dev10
  • Registratie: April 2005
  • Laatst online: 18-09 19:18
Op zich is de manier van werken niet zo heel erg verschillend van een SQL database. Je kijkt aan de hand van het paginanummer wat het eerste bericht is wat je wilt zien en dan tel je er vijf bij op. Je haalt alleen de data op een iets andere manier op.

Iets als dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
paginanummer = 1

file_content = open_bestand

file_rows = explode('\n', file_content)

first_mesage = (paginanummer -1) * 5

for (i = first_message; i <= first_message +5; i++) {
  row = explode('___', file_rows[i]);
  echo row['message']
}


Verder zou een goed PHP boek een hoop wonderen doen. ;)

Acties:
  • 0 Henk 'm!

  • daaan
  • Registratie: Maart 2000
  • Laatst online: 04-09 13:13

daaan

Brandweer Zoutkamp

Google op 'paginering php' of 'pagination php'. Verder zegt dev10 het al, koop een boek.

One's never alone with a rubber duck.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Paginering is inderdaad een concept waar je meer dan genoeg over moet kunnen vinden. Meer dan een offset, een amount en het totale aantal "records" heb je niet nodig, net zoals je bij LIMIT in MySQL zou doen.

Pagina 1 met 10 entries per pagina, pseudocode:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
page = 1;
entriesPerPage = 10;

for (i = 0; i < (page - 1) * entriesPerPage; i++)
  verplaatsPointerNaarVolgendeRegel();

for (i = 0; i < entriesPerPage; i++)
{
  uitvoer[] = leesRegel();
  verplaatsPointerNaarVolgendeRegel();
}

drukAf(uitvoer);

Anyway, daarmee moet je er wel uit kunnen komen. Los daarvan zijn topics als deze waarin je even aangeeft wat je wil en vervolgens je code dumpt niet de bedoeling. We zijn op GoT geen quickfix. ;) Dit topic gaat dus op slot. Mocht je tegen concrete problemen aanlopen dan kun je wel een nieuw topic openen, maar dan wel aan de hand van De Quickstart. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.