Avatar billede tlunde Nybegynder
13. marts 2004 - 21:52 Der er 18 kommentarer og
1 løsning

5 pr. side

Hejsa,
Jeg er ved at lave dette script, der hiver en masse film ud af min database, men jeg vil gerne have sådan, at der kun vises 5 pr. side. Hvordan lavet dette?

Og i bunden vil jeg gerne have lavet det sådan, at der står:

<< | 1 2 3 4 5 | >>

Og den side man er på, skal være fed...

Nogen der gider hjælpe?

Hilsen
Thomas Lunde
Avatar billede tlunde Nybegynder
13. marts 2004 - 21:53 #1
Sådan her hiver jeg mit data ud nu, hvis det skulle være til nogen hjælp:

<?
db_con();

$query = mysql_query("SELECT * FROM www_filmliste WHERE kategori LIKE '%$_GET[kat]%' ORDER BY titel");
while ($row = mysql_fetch_array($query)) {

echo "<table width='100%' border='0' cellpadding='3' cellspacing='0' class='tekstafsnit'>";
echo "  <tr>";
echo "    <td rowspan='6' valign='top'><img src=$row[pic_url] width='72' height='102'></td>";
echo "    <td rowspan='6'>&nbsp;</td>";
echo "    <td colspan='2' class='film_overskrift'><strong><div align='left'>$row[titel]</div></strong></td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td colspan='2' valign='top'>".substr($row['beskrivelse'], 0, 200)."... [<a href='filmliste_detaljer.php?id=$row[id]'>Læs mere</a>]</td>";
echo "  </tr>";           
echo "  <tr>";
echo "    <td valign='top'><strong>Skuespillere:</strong></td>";
echo "    <td valign='top'><strong>$row[skuespillere]</strong></td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td valign='top'><strong>Instruktør:</strong></td>";
echo "    <td valign='top'><strong>$row[instruktoer]</strong></td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td valign='top'><strong>Kategori:</strong></td>";
echo "    <td valign='top'><strong>$row[kategori]</strong></td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td><strong>&#8250;&#8250;</strong> <font color='#FF0000'><strong>Lej filmen...</strong></font></td>";
echo "    <td>&nbsp;</td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td colspan='4'><hr></td>";
echo "  </tr>";
echo "</table>";
}
?>
Avatar billede stenbryggen Nybegynder
13. marts 2004 - 21:58 #2
Hvilken database benytter du ?
Avatar billede tlunde Nybegynder
13. marts 2004 - 21:58 #3
mysql
Avatar billede detox Nybegynder
13. marts 2004 - 22:38 #4
<?
db_con();
$side = isset($_GET['start']) ? $_GET['start'] : 0;
$pr_side = 5;
$start = $side*$pr_side;
$query = mysql_query("SELECT * FROM www_filmliste WHERE kategori LIKE '%$_GET[kat]%' ORDER BY titel LIMIT $start, $pr_side");

while ($row = mysql_fetch_array($query)) {
echo "<table width='100%' border='0' cellpadding='3' cellspacing='0' class='tekstafsnit'>";
echo "  <tr>";
echo "    <td rowspan='6' valign='top'><img src=$row[pic_url] width='72' height='102'></td>";
echo "    <td rowspan='6'>&nbsp;</td>";
echo "    <td colspan='2' class='film_overskrift'><strong><div align='left'>$row[titel]</div></strong></td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td colspan='2' valign='top'>".substr($row['beskrivelse'], 0, 200)."... [<a href='filmliste_detaljer.php?id=$row[id]'>Læs mere</a>]</td>";
echo "  </tr>";         
echo "  <tr>";
echo "    <td valign='top'><strong>Skuespillere:</strong></td>";
echo "    <td valign='top'><strong>$row[skuespillere]</strong></td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td valign='top'><strong>Instruktør:</strong></td>";
echo "    <td valign='top'><strong>$row[instruktoer]</strong></td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td valign='top'><strong>Kategori:</strong></td>";
echo "    <td valign='top'><strong>$row[kategori]</strong></td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td><strong>&#8250;&#8250;</strong> <font color='#FF0000'><strong>Lej filmen...</strong></font></td>";
echo "    <td>&nbsp;</td>";
echo "  </tr>";
echo "  <tr>";
echo "    <td colspan='4'><hr></td>";
echo "  </tr>";
echo "</table>";
}
Avatar billede detox Nybegynder
13. marts 2004 - 22:40 #5
Hov lidt hurtig med "Send" knappen. Her er resten:

$antal = mysql_result(mysql_query("select count(*) from www_filmliste WHERE kategori LIKE '%$_GET[kat]%'"),0);
$antal_sider = ceil($antal/$pr_side);
echo $side>0 ? "<a href='".$_SERVER['PHP_SELF']."?kat=".$_GET['kat']."&start=".($side-1)."'><<</a>" : '<<';
echo " | ";
for ($i=0;$i<$antal_sider;$i++) {
    echo "<a href='".$_SERVER['PHP_SELF']."?kat=".$_GET['kat']."&start=".($i)."'>";
    echo $i == $side ? "<b>".($i+1)."</b>" : ($i+1);
    echo "</a> ";
}
echo " | ";
echo $side<($antal_sider-1) ? "<a href='".$_SERVER['PHP_SELF']."?kat=".$_GET['kat']."&start=".($side+1)."'>>></a>" : '>>';
?>
Avatar billede tlunde Nybegynder
13. marts 2004 - 22:40 #6
detox >> Det virker nu, med at den kun tager de 5 første film, men hvordan får jeg så lavet dette:

<< | 1 2 3 4 5 | >>

Ved du det?
Avatar billede tlunde Nybegynder
13. marts 2004 - 22:41 #7
Krydsede vist lige hinanden der :)
Avatar billede tlunde Nybegynder
13. marts 2004 - 22:44 #8
detox > Det virker sgu perfekt :) Dog lige et par rettelser, hvis du vil?

1. Hvis man er på side 1, så skal << helt til venstre ikke være der, det samme gælder hvis man er på sidste side, så skal >> ikke være der...

2. Den side man er på, skal godt nok være fed, men ikke et aktivt link, bare fed typografi...
Avatar billede detox Nybegynder
13. marts 2004 - 22:54 #9
Ok, den nederste del er rettet til:

$antal = mysql_result(mysql_query("select count(*) from www_filmliste WHERE kategori LIKE '%$_GET[kat]%'"),0);
$antal_sider = ceil($antal/$pr_side);
echo $side>0 ? "<a href='".$_SERVER['PHP_SELF']."?kat=".$_GET['kat']."&start=".($side-1)."'><<</a>" : '';
echo " | ";
for ($i=0;$i<$antal_sider;$i++) {
    if ($i != $side) {
        echo "<a href='".$_SERVER['PHP_SELF']."?kat=".$_GET['kat']."&start=".($i)."'>".($i+1)."</a> ";
    } else {
        echo "<b>".($i+1)."</b> ";
    }
}
echo " | ";
echo $side<($antal_sider-1) ? "<a href='".$_SERVER['PHP_SELF']."?kat=".$_GET['kat']."&start=".($side+1)."'>>></a>" : '';
?>

--------------------
Hvis du vil undgå understregning af dine links, kan du tilføje til din css:

<style type="text/css">
a {
    text-decoration: none;
}
</style>
Avatar billede tlunde Nybegynder
13. marts 2004 - 22:59 #10
Det fungere super, helt som det skal være...smid et svar og du har 100 points :)
Avatar billede detox Nybegynder
13. marts 2004 - 23:00 #11
c",)
Avatar billede Slettet bruger
14. marts 2004 - 02:59 #12
Mere struktureret og lettere at have med at gøre hvis du bestemmer dig for at bruge sidelistning flere steder - og vil ændre udseendet på allesammen!
http://www.reginscorner.dk/index.php/Scripts?Paging
Brug så:
$sql1 = "SELECT count(id) from xxx where xxx";
$sql2 = "SELECT * from xxx where xxx";
$list = new dblister($sql1,$sql2,'page',5);
while($row = mysql_fetch_array($list->result2))
{
    // echo whatever;
}
echo $list->show();
Avatar billede tlunde Nybegynder
15. marts 2004 - 19:12 #13
detox > Har lige et enkelt spørgsmål mere hvis du har tid??
Avatar billede detox Nybegynder
15. marts 2004 - 20:46 #14
Ja, hvad vil du spørge om?
Avatar billede tlunde Nybegynder
15. marts 2004 - 23:39 #15
hejsa, glad for du lige havde tid:)

Det kode du lavede for mig, bruger jeg her:
http://www.rent-a-movie.dk/filmlisten/filmliste_kategorier.php?kat=Action

Og som du nok kan se, så er der pt. 27 sider og der kommer mindst dobbelt så mange, og så kommer det på to linier, og det er ikke så pænt...

Mit spørgsmål er så:
Er det svært at lave koden sådan her f.eks: << |1 2 3 4 5...26 27| >> ??

Åltså, lige så snart der er 10 sider eller derover, så skifter den til denne metode i stedet for, kan du se hvad jeg mener? Trykker man på side 2, så skifter den så til
<< |2 3 4 5 6...26 27| >>

Jeg vil gerne oprette det i et nyt spørgsmål, så du kan få nogle points for det?
Avatar billede detox Nybegynder
16. marts 2004 - 05:28 #16
Ja, jeg ser hvad du mener. Jeg får først tid senere i aften eller i morgen :o)
Avatar billede detox Nybegynder
17. marts 2004 - 09:35 #17
Her er et eksempel. Jeg synes det blev lidt omfattende så jeg lavede det som en function, så den er lettere at include, hvis du skulle få brug for den på andre sider.
Jeg lavede det en smule anderledes end du foreslog, fordi jeg syntes ikke det var optimalt, hvis man fx var på side 19:
<< |19 20 21 22 23...26 27| >>
så kunne man kun gå en baglæns ad gengen ved at trykke <<


echo paginate($side, $pr_side);

function paginate($side, $pr_side) {
    $link_start ="<a href='".$_SERVER['PHP_SELF']."?kat=".$_GET['kat']."&start=";
    $antal = mysql_result(mysql_query("select count(*) from www_filmliste WHERE kategori LIKE '%$_GET[kat]%'"),0);
    $antal_sider = ceil($antal/$pr_side);
    $out_page = $side>0 ? $link_start.($side-1)."'><<</a>" : '';
    $out_page .= " | ";
    if ($antal_sider<=10) {
        for ($i=0;$i<$antal_sider;$i++) {
            if ($i != $side) {
                $out_page .= $link_start.($i)."'>".($i+1)."</a> ";
            } else {
                $out_page .= "<b>".($i+1)."</b> ";
            }
        }
    } else {
        $istart = floor($side/5)*5;
        for ($i=$istart;$i<$istart+5 && $i<$antal_sider;$i++) {
            if ($i != $side) {
                $out_page .= $link_start.($i)."'>".($i+1)."</a> ";
            } else {
                $out_page .= "<b>".($i+1)."</b> ";
            }
        }
        $out_page .= '...';
        for ($i=$antal_sider-2;$i<$antal_sider;$i++) {
            if ($i != $side) {
                $out_page .= $link_start.($i)."'>".($i+1)."</a> ";
            } else {
                $out_page .= "<b>".($i+1)."</b> ";
            }
        }
    }
    $out_page .= " | ";
    $out_page .= $side<($antal_sider-1) ? $link_start.($side+1)."'>>></a>" : '';
    return $out_page;
}
Avatar billede tlunde Nybegynder
17. marts 2004 - 09:47 #18
Det ser ud til at virke ok, men måske det lige stadigvæk skal justeres en smule, se her f.eks.:
http://www.rent-a-movie.dk/filmlisten/filmliste_kategorier.php?kat=Action&start=25

Trykker man på side 26, så vises det to gange??
Ligesom trykker man på side fem fra starten, så skulle de næste sider gerne komme måske?
Avatar billede detox Nybegynder
17. marts 2004 - 10:12 #19
Ok. Du kan måske osse selv rette det lidt til, nu du har skelettet ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester