[PHP] Aantal tabel rijen en pagina verder

Pagina: 1
Acties:
  • 276 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Godjira
  • Registratie: Februari 2003
  • Laatst online: 10-08 02:06

Godjira

To infinity and beyond!

Topicstarter
Aangezien ik een eigen database heb met daarin mijn games en dvd's ben ik een php script gaan schrijven om dit allemaal netjes in een tabel te sorteren via een php site. Nu heb ik bijvoorbeeld bij mijn pc games een aardige waslijst met games staan. Dit maakt de pagina erg lang. Hiervoor zou ik graag een php script aan mijn huidige script toevoegen dat kan zorgen voor een max aantal rijen en dat wanneer dat maximale is behaald hij een link onderaan de pagina geeft zodat de volgende pagina getoond wordt, met het volgende aantal rijen dus. Dan moet op die pagina weer een link komen naar de vorige pagina. Ik heb op php.net gezocht, maar kan niet vinden welke functies ik hiervoor moet gebruiken.

Het onderstaande heb ik al aan php code:

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
<html>
<head>
<title>PC Games</title>
<link rel='stylesheet' type='text/css' href='main.css'>
</head>
<body>
<center><table width='100%'>
 <tr>
   <td class='head'><a class='top' href='pc_games.php?order=Titel'><b>Titel</b></a></a></td>
   <td class='head'><a class='top' href='pc_games.php?order=Uitgever'><b>Uitgever</b></a></td>
   <td class='head'><a class='top' href='pc_games.php?order=Ontwikkelaar'><b>Ontwikkelaar</b></a></td>
   <td class='head'><a class='top' href='pc_games.php?order=Jaar'><b>Jaar</b></a></td>
   <td class='head'><a class='top' href='pc_games.php?order=Discs'><b>Discs</b></a></td>
   <td class='head'><b>Afb.</b></td>
 </tr>
 <tr>
 <td>&nbsp;</td>
 </tr>
 
<?php
include ("sqlconnect.php");

$db = mysql_connect($db_hostname,$db_user,$db_password);
mysql_select_db($db_database);

if (isset($_GET["order"])){
  $order = $_GET["order"];
} else {
  $order = "Titel";
}
 
$sqlread = mysql_query("SELECT * FROM `pc_games` ORDER BY `" . $order . "`");

while ($data = mysql_fetch_assoc($sqlread)) {
  $titel = $data["Titel"];
  $uitgever = $data["Uitgever"];
  $ontwikkelaar = $data["Ontwikkelaar"];
  $jaar = $data["Jaar"];
  $discs = $data["Discs"];
 
  $afb = ereg_replace("'", "%27", $titel);

  echo "<tr><td>" . $titel . "</td><td>" . $uitgever . "</td><td>" . $ontwikkelaar . "</td><td>" . $jaar . "</td><td>" . $discs . "</td><td><a href='images/pc/" . $afb . ".jpg' target='plaatje'>Afb.</a>";
}
 
 mysql_close($db);
?>

</table></center>
</body>
</html>


Is het met de bovenstaande code uberhaupt nog mogelijk om het te doen? De pagina zoals hij nu is kan bekeken worden op http://www.godjira.net/collection/pc_games.php (ik gebruik de pc games, omdat die het grootste aantal rijen heeft.

Mijn excuses voor de grote code, maar ik kan hem helaas niet kleiner maken :| .

[ Voor 71% gewijzigd door Godjira op 21-02-2004 17:08 ]

Profile


Acties:
  • 0 Henk 'm!

  • r0bert
  • Registratie: September 2001
  • Laatst online: 30-07 02:32
met MySQL LIMIT werken gewoon toch :?
code:
1
2
3
 ... LIMIT beginrecord, aantalrecords ...
dus LIMIT 10,10 selecteerd vanaf de 11e tot de 20e 
 of stopt eerder als er niet meer record zijn (bijv 16)

edit:

psuedo:
als GET variabele 'intStart' -> is intStart 0;
anders is intStart de waarde uit GET

Om naar de volgende pagina te gaan
pagina.php?intStart=(intStart+intLimit)
waarin intLimit aantal items per pagina is..

edit:

Btw, wat ik op je site zie staan past toch prima in een lijst op 1 pagina :?

[ Voor 117% gewijzigd door r0bert op 20-02-2004 20:45 ]


Acties:
  • 0 Henk 'm!

  • WPN
  • Registratie: Augustus 2003
  • Laatst online: 24-07 21:14

WPN

dit is wat ik heb voor mijn webshop dat ik gemaakt heb voor school
ja ik weet het de code is een troep maar volgens mij wel te volgen :)
kan je helaas ook niet de online versie showen :S

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
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
<?php
    session_start();

    $link = mysql_connect( "ja die", "krijg", "je niet" );
    mysql_select_db("webshop", $link) or die;

    if (!isset($_GET['viewset']))
      $viewset = 0;
    else
      $viewset = $_GET['viewset'];      
      
    if (!isset($_GET['categorie']))
      $categorie = "games";
    else
      $categorie = $_GET['categorie'];      
  
    if ($categorie == "games")
    {#open games
     if (!isset($_GET['platform']))
       $platform = "AND artikelen.platform BETWEEN 1 AND 4";
     else
       $platform = "AND artikelen.platform=$_GET[platform]";        
    
     $rijen=6; #aantal te showen games
     $result='';
     $numrows=0;
     $navaantal = 0;

     #bepalen hoeveel games er zijn met de geven criteria
     $rows = "SELECT artcode 
              FROM artikelen, leeftijdsgrens
              WHERE leeftijdsgrens.id=artikelen.leeftijdsgrens $platform AND tonen='TRUE'"; 
    
     $total = mysql_query($rows, $link) or die(include('404.htm'));
     $numrows = mysql_num_rows($total);
     mysql_free_result($total);

     if ($numrows > 0) #is er uberhaupt iets aanwezig in de database?
     {
       $query = "SELECT artikelen.artcode, artikelen.artnaam, artikelen.releasedatum, leeftijdsgrens.grens, 
                       artikelen.inkprijs, artikelen.artomschr, artikelen.pic_naam
                 FROM   artikelen, leeftijdsgrens
                 WHERE  leeftijdsgrens.id=artikelen.leeftijdsgrens $platform AND tonen='TRUE'
                 ORDER BY artikelen.artcode ASC
                 LIMIT  $viewset, $rijen";
       $result = mysql_query($query, $link) or die(include('404.htm'));
       if ($numrows > 0)
        $show = 1;
       else 
        $show = 0;
       if ($numrows<7)
        $navaantal=1; 
       else 
       {
         $totaal = $numrows % $rijen;
         $navaantal = ($numrows - $totaal)/6+1;
       }
       #navigatie menu in elkaar bouwen begin
      $navmenu0 = '<div align="center"><table width="500" border="0" cellspacing="2" cellpadding="2"><tr>';
      $navmenu3 = "";
      $navmenu4 = "";
      $navmenu2 = '<td width="480" align="center"><a href="view.php?viewset=0">1</a>&nbsp;';
      for($i=2;$i<($navaantal+1);$i++)  #aantal pagina's navigatie vullen
      {
        $addview = $i*6-6;
        $navmenu3 .= "<a href=\"view.php?viewset=$addview\">$i</a>&nbsp;";
      }
      if ($viewset==0)  #vorige navigatie checken, als er niet minder pagina's zijn, dan geen link afbeelden
        $navmenu1 = "<td width=\"10\" align=\"left\"><image src=\"concept/back.png\" border=\"0\" style=\"filter:alpha(style=4,opacity=50)\"></td>";
      else
       $navmenu1 = "<td width=\"10\" align=\"left\"><a href=\"view.php?viewset=".($viewset-6)."\"><image src=\"concept/back.png\" border=\"0\"></a></td>";
  
      if ($viewset == ($navaantal*6-6)) #volgende navigatie checken, als er niet meer pagina's zijn, dan geen link afbeelden
        $navmenu4 = "<td width=\"10\" align=\"right\"><image src=\"concept/next.png\" border=\"0\" style=\"filter:alpha(style=4,opacity=50)\"></td>";
      else
       $navmenu4 = "<td width=\"10\" align=\"left\"><a href=\"view.php?viewset=".($viewset+6)."\"><image src=\"concept/next.png\" border=\"0\"></a></td>";
 
      $navmenu5 = '</tr></table></div>';
      $navmenu = $navmenu0.$navmenu1.$navmenu2.$navmenu3."</td>".$navmenu4.$navmenu5; #compleet navigatie menu  
      #navigatie menu in elkaar bouwen einde
     }
     else
     {
       $show = 0;
       $navaantal = 0;
     }  
  }#sluiten games
  else
    {#open hardware
     if (!isset($_GET['platform']))
       $platform = "AND platform BETWEEN 1 AND 4";
     else
       $platform = "AND platform=$_GET[platform]";      
    
     $rijen=6; 
     $result='';
     $numrows=0;
     $navaantal = 0;

     #bepalen hoeveel games er zijn met de geven criteria
     $rows = "SELECT hardcode 
              FROM hardware
              WHERE tonen='TRUE' AND $platform"; 
    
     $total = mysql_query($rows, $link) or die(include('404.htm'));
     $numrows = mysql_num_rows($total);
     mysql_free_result($total);

     if ($numrows > 0) #is er uberhaupt iets aanwezig in de database?
     {
       $query = "SELECT artikelen.artcode, artikelen.artnaam, artikelen.releasedatum, leeftijdsgrens.grens, 
                        artikelen.inkprijs, artikelen.artomschr, artikelen.pic_naam
                 FROM   artikelen, leeftijdsgrens
                 WHERE  leeftijdsgrens.id=artikelen.leeftijdsgrens $platform AND tonen='TRUE'
                 ORDER BY artikelen.artcode ASC
                 LIMIT  $viewset, $rijen";
       $result = mysql_query($query, $link) or die(include('404.htm'));
       if ($numrows > 0)
        $show = 1;
       else 
        $show = 0;
       if ($numrows<7)
        $navaantal=1; 
       else 
       {
         $totaal = $numrows % $rijen;
         $navaantal = ($numrows - $totaal)/6+1;
       }
       #navigatie menu in elkaar bouwen begin
      $navmenu0 = '<div align="center"><table width="500" border="0" cellspacing="2" cellpadding="2"><tr>';
      $navmenu3 = "";
      $navmenu4 = "";
      $navmenu2 = '<td width="480" align="center"><a href="view.php?viewset=0">1</a>&nbsp;';
      for($i=2;$i<($navaantal+1);$i++)  #aantal pagina's navigatie vullen
      {
        $addview = $i*6-6;
        $navmenu3 .= "<a href=\"view.php?viewset=$addview\">$i</a>&nbsp;";
      }
      if ($viewset==0)  #vorige navigatie checken, als er niet minder pagina's zijn, dan geen link afbeelden
        $navmenu1 = "<td width=\"10\" align=\"left\"><image src=\"concept/back.png\" border=\"0\" style=\"filter:alpha(style=4,opacity=50)\"></td>";
      else
       $navmenu1 = "<td width=\"10\" align=\"left\"><a href=\"view.php?viewset=".($viewset-6)."\"><image src=\"concept/back.png\" border=\"0\"></a></td>";
  
      if ($viewset == ($navaantal*6-6)) #volgende navigatie checken, als er niet meer pagina's zijn, dan geen link afbeelden
        $navmenu4 = "<td width=\"10\" align=\"right\"><image src=\"concept/next.png\" border=\"0\" style=\"filter:alpha(style=4,opacity=50)\"></td>";
      else
       $navmenu4 = "<td width=\"10\" align=\"left\"><a href=\"view.php?viewset=".($viewset+6)."\"><image src=\"concept/next.png\" border=\"0\"></a></td>";
 
      $navmenu5 = '</tr></table></div>';
      $navmenu = $navmenu0.$navmenu1.$navmenu2.$navmenu3."</td>".$navmenu4.$navmenu5; #compleet navigatie menu  
      #navigatie menu in elkaar bouwen einde
     }
     else
     {
       $show = 0;
       $navaantal = 0;
     }  
  }#sluiten hardware

?>
<HTML>
<HEAD>
<TITLE>Gamezone Webshop</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="pragma" content="no-cache">
<script>
function openup(artikelnr)
{
 var Theurl = "cartadd.php?artikelnummer="+artikelnr;
 myopenedwindow = window.open(Theurl, 'Addcart','scrollbars=no,width=410,height=100, status=no');
}

function details(artikelnr2)
{
 var Detailsurl = "details.php?artikelnummer="+artikelnr2;
 myopenedwindow2 = window.open(Detailsurl, 'Details','scrollbars=no,width=490,height=418, status=no');
}


function refreshen()
{
 top.basket.refreshen('');
}
</script>
<style type="text/css">
<!--
body 
{
    margin-left: 0px;
    margin-top: 0px;
    margin-right: 0px;
    margin-bottom: 0px;
    background-color: #B9B9B9;
}
-->
</style>
</head>
<body>

<div align="center"> 
<?php
  if ($show == 1)
  {   
    echo $navmenu;  #toon navigatie menuutje
    for($i=0; $i<$rijen; $i++)
    {
     $row = mysql_fetch_array($result);
     $artikelnummer = $row[0];                                          #data een naam geven start
     $artikelnaam = $row[1];                    
     $datum = $row[2];
     $leeftijdsgrens = $row[3]; 
     $inkprijs = $row[4]; 
     $omschrijving=str_replace("\n", "<br>", $row[5]);
     $pic_naam = $row[6]; 
     $image = "images/".$leeftijdsgrens."/".$pic_naam;
     $verkprijs = round((($inkprijs+10)*1.19), 2);
     if (isset($artikelnummer))
     {
       $datum2 = explode("-", $datum);                                  #datum uit elkaar halen
       $releasedatum = $datum2[2]."-".$datum2[1]."-".$datum2[0];        #datum in goede notatie zetten
       echo '<table width="500" height="230" border="1" cellpadding="2" cellspacing="1" bordercolor="#000000">
              <tr> 
               <td width="162" rowspan="6" align="center" valign="middle"><a href="#">[img]"'.$image.'"[/img]</a></td>
               <td width="105" height="15"><b>Artikelnummer</b></td>
               <td align="left"><b>'.$artikelnummer.'</b></td>
              </tr>
              <tr> 
               <td width="105" height="15"><b>Artikelnaam</b></td>
               <td align="left">'.$artikelnaam.'</td>
              </tr>
              <tr> 
               <td width="105" height="15"><b>Releasedatum</b></td>
               <td align="left">'.$releasedatum.'</td>
              </tr>
              <tr> 
               <td width="105" height="15"><b>Leeftijd</b></td>
               <td align="left">'.$leeftijdsgrens.'</td>
              </tr>
              <tr> 
               <td width="105" height="15"><b>Prijs</b></td>
               <td align="left">&euro;'.$verkprijs.'</td>
              </tr>
              <tr> 
               <td  width="105" height="15" valign="top"><b>Omschrijving</b></td>
               <td align="left" height="100" valign="top"><div style="width:232px; height=100px; overflow:auto;
               scrollbar-face-color: #FFFFFF; scrollbar-shadow-color: #00000; scrollbar-highlight-color: #000000; 
               scrollbar-3dlight-color: #FFFFFF; scrollbar-darkshadow-color: #000000; scrollbar-track-color: #FFFFFF; 
               scrollbar-arrow-color: #000000; scrollbar-base-color: #FFFFFF">'.$omschrijving.'</div></td>
              </tr>
              <tr> 
               <td colspan="3" align="center" ><a href="#" onClick="openup('.$artikelnummer.');" >Toevoegen aan bestelling</a></td>
              </tr>
             </table><BR>';
#      $artikelnummer = '';
     }
    }
     echo $navmenu;  #toon navigatie menuutje  
  }
  else
    include('404.htm');
?>
</div>
</body>
</html>
<?php
 if ($show == 1)
   mysql_free_result($result);
# mysql_close($link); 
?>


ik wou stukjes code geven, maar dit vond ik makkelijker ;)

Als ik denk zoals ik dacht, dan doe ik zoals ik deed, als ik doe zoals ik deed, dan denk ik zoals ik dacht! Cogito Ergo Sum


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

W&G -> P&W

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Godjira
  • Registratie: Februari 2003
  • Laatst online: 10-08 02:06

Godjira

To infinity and beyond!

Topicstarter
r0bert schreef op 20 februari 2004 @ 20:35:
met MySQL LIMIT werken gewoon toch :?
code:
1
2
3
 ... LIMIT beginrecord, aantalrecords ...
dus LIMIT 10,10 selecteerd vanaf de 11e tot de 20e 
 of stopt eerder als er niet meer record zijn (bijv 16)

edit:

psuedo:
als GET variabele 'intStart' -> is intStart 0;
anders is intStart de waarde uit GET

Om naar de volgende pagina te gaan
pagina.php?intStart=(intStart+intLimit)
waarin intLimit aantal items per pagina is..

edit:

Btw, wat ik op je site zie staan past toch prima in een lijst op 1 pagina :?
Thanks. Zal het proberen. Ja, klopt, maar er komen nog meer lijsten bij en games die wel de hele mikmak langer maakt, daarom wil ik graag dat volgende/vorige in de lijst verwerken, snap je? Zal het testen in ieder geval.
Peluso schreef op 20 februari 2004 @ 21:16:
dit is wat ik heb voor mijn webshop dat ik gemaakt heb voor school
ja ik weet het de code is een troep maar volgens mij wel te volgen :)
kan je helaas ook niet de online versie showen :S

PHP:
1
Lap met code.


ik wou stukjes code geven, maar dit vond ik makkelijker ;)
Ok, ik zal de code een doorlezen als ik weer thuis ben. Op zich werkt het goed zoals ik het nu al heb, alleen 113 rijen wordt onoverzichtelijk. Thanks in ieder geval. Ik laat wel weten hoe het lukt.

[ Voor 86% gewijzigd door Godjira op 21-02-2004 17:07 ]

Profile


Acties:
  • 0 Henk 'm!

  • mr_obb
  • Registratie: Juni 2001
  • Laatst online: 01-09 14:15

mr_obb

Lakse Perfectionist

Dit artikel op Devshed moet je helpen. Het gaat namelijk precies over wat jij vraagt.

Succes!
Pagina: 1