|
| næste og forrige knap Fra : Maxi |
Dato : 06-08-03 13:36 |
|
Jeg henter en masse data fra databasen og jeg vil gerne dele det op i flere
dele så det ikke bliver en lang side. Jeg har så lavet denne her side men
det fungere ikke helt endnu. Den bliver ved med at vide de samme to rækker
fra tabelen. Er der nogen der kan overskue denne kode og se hvad der lige er
mangler?
<?php
include "database.php";
$limit=2; // rows to return
$numresults=mysql_query("select * from pet");
$numrows=mysql_num_rows($numresults);
// next determine if offset has been passed to script, if not use 0
if (empty($offset)) {
$offset=1;
}
// get results
$result=mysql_query("select pet_id, name from pet limit $offset,$limit");
$num_rows = mysql_num_rows( $result );
// now you can display the results returned
if ($num_rows > 0)
{
print "<table>";
while ($data=mysql_fetch_array($result))
{
print "<TR>\n";
print "<TD>$data[pet_id]</TD>\n";
print "<TD>$data[name]</TD>\n";
//
print "<TD>$data[owner]</TD>\n";
print "</TR>\n";
}
print "</table>";
}
// next we need to do the links to other results
if ($offset==1) { // bypass PREV link if offset is 0
$prevoffset=$offset-1;
print "<a href='next.php?offset=$prevoffset'>PREV</a> \n";
}
// calculate number of pages needing links
$pages=intval($numrows/$limit);
// $pages now contains int of pages needed unless there is a remainder from
division
if ($numrows%$limit) {
// has remainder so add one page
$pages++;
}
for ($i=1;$i<=$pages;$i++) { // loop thru
$newoffset=$limit*($i-1);
print "<a href='next.php?offset=$newoffset'>$i</a> \n";
}
// check to see if last page
if (!(($offset/$limit)==$pages) && $pages!=1) {
// not last page so give NEXT link
$newoffset=$offset+$limit;
print "<a href='next.php?offset=$newoffset'>NEXT</a><p>\n";
}
?>
| |
Thomas Lindgaard (06-08-2003)
| Kommentar Fra : Thomas Lindgaard |
Dato : 06-08-03 17:59 |
|
Maxi wrote:
> Jeg henter en masse data fra databasen og jeg vil gerne dele det op i flere
> dele så det ikke bliver en lang side. Jeg har så lavet denne her side men
> det fungere ikke helt endnu. Den bliver ved med at vide de samme to rækker
> fra tabelen. Er der nogen der kan overskue denne kode og se hvad der lige er
> mangler?
[snip]
> // next determine if offset has been passed to script, if not use 0
> if (empty($offset)) {
> $offset=1;
> }
Hvis $offset bliver sendt til denne side fra en form på den foregående,
så skal du enten finde den i $_POST eller $_GET - dvs. hvis der i
<form>-tagget står
method="post"
så brug
$_POST['offset']
og hvis der står method="get" eller ingenting så brug
$_GET['offset']
Formvariable bliver ikke automagisk til variable i dit PHP-script
længere (med mindre man slår register_globals til i php.ini eller lignende).
[mere snip]
Mvh.
/Thomas
| |
Jan V.Pedersen (06-08-2003)
| Kommentar Fra : Jan V.Pedersen |
Dato : 06-08-03 18:12 |
|
Thomas Lindgaard:
> <form>-tagget står
>
> method="post"
>
> så brug
>
> $_POST['offset']
>
> og hvis der står method="get" eller ingenting så brug
>
> $_GET['offset']
>
>
Er det meningen at der skal være enkle apostrofer (?) inni
klammeparantesen? Eller er det ikke forskjell på enkle og doble
hermetegn?
--
mvh Jan Vidar
www.janvidar.com
| |
Johan Holst Nielsen (07-08-2003)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 07-08-03 10:06 |
|
Jan V.Pedersen wrote:
> Thomas Lindgaard:
>
>><form>-tagget står
>>
>> method="post"
>>
>>så brug
>>
>> $_POST['offset']
>>
>>og hvis der står method="get" eller ingenting så brug
>>
>> $_GET['offset']
>>
> Er det meningen at der skal være enkle apostrofer (?) inni
> klammeparantesen? Eller er det ikke forskjell på enkle og doble
> hermetegn?
>
Ikke i dette tilfælde... Så kan det være ligemeget
mvh
johan
| |
Thomas Lindgaard (07-08-2003)
| Kommentar Fra : Thomas Lindgaard |
Dato : 07-08-03 11:25 |
|
Johan Holst Nielsen wrote:
>
>
> Jan V.Pedersen wrote:
>
>> Thomas Lindgaard:
>>
>>> <form>-tagget står
>>>
>>> method="post"
>>>
>>> så brug
>>>
>>> $_POST['offset']
>>>
>>> og hvis der står method="get" eller ingenting så brug
>>>
>>> $_GET['offset']
>>>
>> Er det meningen at der skal være enkle apostrofer (?) inni
>> klammeparantesen? Eller er det ikke forskjell på enkle og doble
>> hermetegn?
>>
>
> Ikke i dette tilfælde... Så kan det være ligemeget
Jap - her er det ligegyldigt.
Forskellen på ' og " er at strenge i " bliver parset således at du
f.eks. kan gøre følgende:
<?php
$en_variabel = 'en ost';
print "musen spiste $en_variabel";
?>
Strenge i ' er blot ren tekst og kan ikke bruges til sårn noget huttelihut.
Det betyder så også at det er mere effektivt at bruge ' fordi strengen
ikke bliver parset. Jeg bruger selv kun " når jeg har et specifikt behov
for at der skal indsættes variable i strengen.
Mvh.
/Thomas
| |
Jan V.Pedersen (07-08-2003)
| Kommentar Fra : Jan V.Pedersen |
Dato : 07-08-03 11:56 |
|
Thomas Lindgaard:
> Det betyder så også at det er mere effektivt at bruge ' fordi strengen
> ikke bliver parset. Jeg bruger selv kun " når jeg har et specifikt behov
> for at der skal indsættes variable i strengen.
>
>
Tusen takk til dere begge to :)
--
mvh Jan Vidar
www.janvidar.com
| |
Maxi (07-08-2003)
| Kommentar Fra : Maxi |
Dato : 07-08-03 21:20 |
|
Tak for alle jeres svar. Nu har jeg fået det nogenlunde til at virke på en
mysql database. Men jeg har fundet ud af at i en MS sql server har man ikke
en limit funktion
så følgende linje kode kan jeg ikke bruge :
$result=mysql_query("select pet_id, name from pet limit $offset,$limit");
Så jeg skal lave det anderledes. Er der nogen der har ideer til hvordan man
kan lave det tilsvarende "limit" i en ms sql ? jeg forestiller mig noget i
retning TOP 10 men det er vist ikke helt det samme.
"Maxi" <dilorjaan50@hotmail.com> wrote in message
news:3f30f638$0$13166$edfadb0f@dread15.news.tele.dk...
> Jeg henter en masse data fra databasen og jeg vil gerne dele det op i
flere
> dele så det ikke bliver en lang side. Jeg har så lavet denne her side men
> det fungere ikke helt endnu. Den bliver ved med at vide de samme to rækker
> fra tabelen. Er der nogen der kan overskue denne kode og se hvad der lige
er
> mangler?
>
> <?php
> include "database.php";
>
> $limit=2; // rows to return
> $numresults=mysql_query("select * from pet");
> $numrows=mysql_num_rows($numresults);
>
> // next determine if offset has been passed to script, if not use 0
> if (empty($offset)) {
> $offset=1;
> }
>
> // get results
> $result=mysql_query("select pet_id, name from pet limit $offset,$limit");
> $num_rows = mysql_num_rows( $result );
>
> // now you can display the results returned
> if ($num_rows > 0)
> {
> print "<table>";
> while ($data=mysql_fetch_array($result))
> {
> print "<TR>\n";
> print "<TD>$data[pet_id]</TD>\n";
> print "<TD>$data[name]</TD>\n";
> //
> print "<TD>$data[owner]</TD>\n";
> print "</TR>\n";
> }
> print "</table>";
> }
>
> // next we need to do the links to other results
>
> if ($offset==1) { // bypass PREV link if offset is 0
> $prevoffset=$offset-1;
> print "<a href='next.php?offset=$prevoffset'>PREV</a> \n";
> }
>
> // calculate number of pages needing links
> $pages=intval($numrows/$limit);
>
> // $pages now contains int of pages needed unless there is a remainder
from
> division
> if ($numrows%$limit) {
> // has remainder so add one page
> $pages++;
> }
>
> for ($i=1;$i<=$pages;$i++) { // loop thru
> $newoffset=$limit*($i-1);
> print "<a href='next.php?offset=$newoffset'>$i</a> \n";
> }
>
> // check to see if last page
> if (!(($offset/$limit)==$pages) && $pages!=1) {
> // not last page so give NEXT link
> $newoffset=$offset+$limit;
> print "<a href='next.php?offset=$newoffset'>NEXT</a><p>\n";
> }
>
> ?>
>
>
>
| |
|
|