[php] automatisch aanmaken nieuwe pagina(zoals oa bij forum)

Pagina: 1
Acties:

Onderwerpen


  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
Hallo,

MOmenteel ben ik n site aan t maken waarop nieuwtjes komen te staan die je dan via een simpele cms erop kunt zetten.

Nu wil ik het zo hebben dat je maar 3 items op 1 pagina krijgt en dat er dan automatisch een nieuwe pagina wordt gemaakt als er een 4e nieuwtje komt. zeg maar zoals bij een forum of een gastenboek.

Aangezien ik nog niet zo heel erg ervaren ben met php zou ik niet weten waar te beginnen. Kan iemand mij misschien wat op weg helpen?

Alvast bedankt.

Greetz!

  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 21-09 08:47

Eelke Spaak

- Vlad -

In de pagina die de nieuwtjes uit de database trekt moet je gewoon na 3 records ophouden... Gebruik een querystring (/?page=2) om aan te geven dat de pagina niet de eerste 3, maar de tweede 3 records moet laten zien.

TheStreme - Share anything with anyone


  • Snow_King
  • Registratie: April 2001
  • Laatst online: 17:19

Snow_King

Konijn is stoer!

Dit lijkt mij erg op een script-request.

Kijk eens op hotscripts.com, daar zijn een hele hoop CMS systemen te vinden.
Lees anders de P&W FAQ eens.

  • Ganja-Cape
  • Registratie: Maart 2001
  • Laatst online: 20-09 09:41
De basis ff snel en simpel uitgelegd: Zorg dat je weet hoeveel items (in mysql) er in totaal zijn deel dit door het limiet voor het aantal items per pagina. En aan de hand daarvan kan je onderaan het juiste aantal linkjes bijvoorbeeld 1 2 3, of dropdowntje maken.

Er komt nog wel wat meer bij kijken maar hoop dat je dit wat in de goede weg wijst :P

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Hey,

Ik denk dat het beste is om gewoon eens te beginnen met het bekijken van bestaande scripts. Hier op GOT zijn er redelijk wat te vinden, en anders kun je terecht bij o.a. www.hotscripts.com.

Maar om er iets dieper op in te gaan; maar een pagina in php die dmv een LIMIT 0,3 alleen de laatste 3 berichten uit een database haalt, en maak een link naar pagina.php?pagina=2. Je kunt dan aan de var pagina mee geven hoeveelste bladzijde je bent, en door dit te vermenigvuldigen met het aantal per pagina kun je via je SQL weer met LIMIT (2*3),3 of (3*3),3 aangeven welke berichten opgehaald moeten.

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09 14:42
Nog een hint: offset :P

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05 09:40

GX

Nee.

nog een hint: http://www.mysql.com -> developer -> documentation

  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
alvast bedankt voor jullie tips dan ga ik nu maar eens knutselen :)

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

NMe

Quia Ego Sic Dico.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$perpage = 3;
$page = isset($_GET['page']) ? intval($_GET['page']) - 1 : 0;

query = mysql_query('SELECT * FROM nieuws LIMIT '.($page * $perpage).','.$perpage);
while ($rij = mysql_fetch_array($query)) {
  // afdrukken nieuwsitems
}

query = mysql_query('SELECT COUNT(*) FROM nieuws');
$aantal = mysql_result($query, 0);

echo '<form name="formpje" action="'.$_ENV['PHP_SELF'].'" method="get">';
echo '<select name="page" onchange="formpje.submit();">';
for ($i = 1; $i * $perpage < $aantal; $i++)
  echo '<option value="'.$i.'">Pagina '.$i.'</option>';
echo '</select></form>';


Zoiets? Globaal dan?

[ Voor 23% gewijzigd door NMe op 22-09-2004 21:11 ]

'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.


  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

Wel even vermelden (voordat de TS dit zomaar overneemt) dat er iets van 'n htmlspecialchars/strip_tags/addslashes .... zoiets in ieder geval op $_GET['page'] moet :)
Hint: SQL Injection.

[ Voor 7% gewijzigd door blizt op 22-09-2004 22:24 ]

United we stand, and divided we fall


  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
nog even een heel simpel vraagje : 8)7

heb het nu zover dat ik een next knop heb gemaakt en vanaf pagina 2 ook een back knop....

Hoe weet ik nu alleen dat ik op de laatste pagina ben en ik geen next knop meer hoef te maken?

dit is mn code tot nu toe, hoop dat ie n beetje goed is B)

code:
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
<? 
    $pagina = $_REQUEST["pagina"];
    $pagnr = $pagina*3;
    $pagnext = $pagina + 1;
    $pagback = $pagina - 1;
    
    $query = mysql_query('SELECT COUNT(*) FROM nieuws'); 
    $aantal = mysql_result($query, 0); 
 

    $qry = "SELECT titel, content, id, artShow FROM nieuws WHERE artShow = 1 ORDER BY ID LIMIT $pagnr,3 ";
        $result4 = mysql_query($qry) or die("Verbinding2 mislukt.");
        


      while ($row4 = mysql_fetch_array($result4)) {

      $pagID = $row4["id"];
      $pagName4 = stripslashes($row4["titel"]);
      $pagContent4 = stripslashes($row4["content"]);
      
      
      

      ?>
         <p class="name_page"><B><?  echo ($pagName4);?></B></p>
        <p class="tekst"><?  echo ($pagContent4);?></P>
        
        
        <?
        
        if ( $pagina > 0) {
        echo "<a href=index_nieuws.php?pagina=" . $pagback . ">terug</a> - ";
        }
        
        if ( $aantal/3 > 1) {
        echo "<a href=index_nieuws.php?pagina=" . $pagnext . ">next</a>";
        }


        
        
        ?>
        <hr>
        <?
        

        }

?>



Greetzzz

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

NMe

Quia Ego Sic Dico.

blizt schreef op 22 september 2004 @ 22:24:
Wel even vermelden (voordat de TS dit zomaar overneemt) dat er iets van 'n htmlspecialchars/strip_tags/addslashes .... zoiets in ieder geval op $_GET['page'] moet :)
Hint: SQL Injection.
Jij hebt de intval functie op regel 2 niet gezien zeker? ;)
twisted2000 schreef op 22 september 2004 @ 23:00:
nog even een heel simpel vraagje : 8)7

heb het nu zover dat ik een next knop heb gemaakt en vanaf pagina 2 ook een back knop....

Hoe weet ik nu alleen dat ik op de laatste pagina ben en ik geen next knop meer hoef te maken?
Als je een beetje naar mijn code kijkt, dan kun je dat zonder probleem omzetten op zo'n manier dat dat soort linkjes werkt. Verder is het meestal niet erg verstandig om de $_REQUEST superglobal te gebruiken.

'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.


  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
wat bedoel je met super global

en ik snap niet echt hoe die for functie werkt...heb t al opgezocht maar kom niet echt wijs deruit......

|:(

[ Voor 62% gewijzigd door twisted2000 op 22-09-2004 23:22 ]


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

NMe

Quia Ego Sic Dico.

twisted2000 schreef op 22 september 2004 @ 23:18:
wat bedoel je met super global

en ik snap niet echt hoe die for functie werkt...heb t al opgezocht maar kom niet echt wijs deruit......

|:(
Dan zou je er goed aan doen om wat tutorials door te nemen in plaats van zomaar in het wilde weg te programmeren. Het gebruik van for iteraties behoort toch echt tot de basiskennis. Evenals bekend zijn met termen als superglobals en dergelijke.
[google=php tutorial for while loop].

'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.


  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
he mensen

het is me gelukt!!
:D

code:
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
<? 
    $pagina = $_REQUEST["pagina"];
    $pagnr = $pagina*3;
    $pagnext = $pagina + 1;
    $pagback = $pagina - 1;
    
    $query = mysql_query('SELECT COUNT(*) FROM nieuws'); 
    $aantal = mysql_result($query, 0); 
 

    $qry = "SELECT titel, content, id, artShow FROM nieuws WHERE artShow = 1 ORDER BY ID LIMIT $pagnr,3 ";
    $result4 = mysql_query($qry) or die("Verbinding2 mislukt.");
        


      while ($row4 = mysql_fetch_array($result4)) {

      $pagID = $row4["id"];
      $pagName4 = stripslashes($row4["titel"]);
      $pagContent4 = stripslashes($row4["content"]);
      
      
      

      ?>
         <p class="name_page"><B><?  echo ($pagName4);?></B></p>
        <p class="tekst"><?  echo ($pagContent4);?></P>
        
        
    <hr>
        <?
         
        }

        if ( $pagina > 0) {
        echo "<a href=index_nieuws.php?pagina=" . $pagback . ">terug</a> - ";
        }
        
        if ( $aantal/3 > 1 && $aantal/$pagnext >= 3) {
        echo "<a href=index_nieuws.php?pagina=" . $pagnext . ">next</a>";
        }
?>



maar ik moet toegeven dat ik idd wel eens wat tutorials kan gebruiken ;)

bedankt voor jullie hulp _/-\o_

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

NMe

Quia Ego Sic Dico.

En wat doe je nu als er geen pagina wordt meegegeven in de URL? Of als ik SQL injecteer via de query string? Het paginanummer kun je veel beter ophalen zoals ik voordeed in mijn code, en anders sta je open voor hackers, inclusief het welkomstmatje voor de deur. ;)
PHP:
1
$pagina = $_REQUEST["pagina"];

wordt dus
PHP:
1
$page = isset($_GET['pagina']) ? intval($_GET['pagina']) - 1 : 0;

[ Voor 7% gewijzigd door NMe op 23-09-2004 00:30 ]

'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.


  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
heb het veranderd maar dan krijg ik deze foutmelding

Warning: Division by zero in c:\program files\easyphp1-7\www\sillen\index_nieuws.php on line 52

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

NMe

Quia Ego Sic Dico.

Dan kijk je op regel 52, zoekt op waar de deling staat, kijkt wat er achter de deelstreep staat, en je zoekt uit hoe dat 0 kan zijn? :?

'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.


  • twisted2000
  • Registratie: Januari 2004
  • Laatst online: 05-03-2021
dit is t geworden:
code:
1
2
$pagina2 = isset($_GET['pagina']) ? intval($_GET['pagina']) - 1 : 0;
    $pagina = $pagina2 + 1;


hij gaf dan namelijk voor $pagina2 aan dat die min 1 werd en dan werd er ergens anders door 0 gedeelt en dat kan niet he


heel erg bedankt voor je hulp!

ga nu maar mn bedje opzoeken

mzzls!
Pagina: 1