Avatar billede cyper-master Nybegynder
27. oktober 2010 - 17:46 Der er 24 kommentarer og
1 løsning

vis et bestemt antal af atikler, og skift side til næste antal

Hej

jeg vil gerne høre om nogle har en ide om hvordan jeg skal programmer mere noget på min hjemmeside.

jeg skal ha lavet sådan at når jeg er på en side viser den de første 5 indlæg i en tabel fra min database. så når man trykker på en "next" knap viser den de 5 næste indlæg.

og meget gerne lavet så Next knappen og siderne automatisk bliver generate når det bliver oprettet nye.

M.V.H.
Daniel
Avatar billede majbom Novice
27. oktober 2010 - 18:31 #1
prøv at søg efter paging eller pagination
Avatar billede cyper-master Nybegynder
27. oktober 2010 - 19:03 #2
det vil jeg lige gøre. ihverfald tak for tiden
Avatar billede webweaver Praktikant
27. oktober 2010 - 19:58 #3
Et stk. paging script til dig;

// Et sted i din fil, oppe over dit MySQL udtræk.

$pr_pages = 15; // Antal poster pr. side...
       
$e = isset($_GET['e'])?$_GET['e']:"";
$a = $pr_pages * $e;
$b = $a + $pr_pages - $e * $pr_pages;
$c = $e - 1;
$d = $e + 1;

$db_database = "minDB";
include ("include/mysql_connect.php");
                       
$foresp = mysql_query("SELECT * FROM table") or die(mysql_error());
$total = mysql_num_rows($foresp);
               
$pages = $total / $pr_pages;
           
if($e + 1 < $pages){
$next = " - <a href=\"http://www.miside.dk/guestbook.php?e=$d\">Næste</a>";
                }
               
if($e - 1 < $pages AND $e){
$prev = "<a href=\"http://www.minside.dk/guestbook.php?e=$c\">Forrige</a> - ";
} else {
$prev = "Forrige - ";
}
               
if($d > $pages OR $d=="$pages"){
$next = " - Næste";
}

// Og her, trækker du det ud fra din database, som du ønsker.

$foresp = "SELECT * FROM table order by id DESC LIMIT $a,$b";

// Og her vises resultatet,

echo "<p>\n$prev";
$pages1 = ceil($pages);
$tal = 0;
$tal1 = 1;
while($pages1 >= $tal1) {
if($tal == $e) {
echo "<b>$tal1</b>";
} else {
echo " <a href=\"http://www.minside.dk/guestbook.php?e=$tal \">$tal1</a> ";
}
$tal++;
$tal1++;
}
echo "$next\n</p>";
}
Avatar billede majbom Novice
27. oktober 2010 - 19:53 #4
selv tak :)
Avatar billede cyper-master Nybegynder
27. oktober 2010 - 19:57 #5
jeg har så lige søgt.

første link der kom var dette
http://www.phpuniverset.dk/show_artikels.phtml?ArtikelID=19

og kan vist rolig sige dette løste mit problem :)

tak for hjælpen, og smid et svar så jeg kan gi dig nogle points ^^

det mindste jeg kan gøre.
Avatar billede webweaver Praktikant
27. oktober 2010 - 20:00 #6
Ahh jeg var for langsom denne gang :-)
Avatar billede cyper-master Nybegynder
27. oktober 2010 - 20:39 #7
nu sidder jeg og prøver at få det til at virke.

men hvordan kan jeg så sige.

du skal tag disse 3 felter fra tablen og vise de her 15 gange?
Avatar billede webweaver Praktikant
27. oktober 2010 - 20:48 #8
SELECT felt1, felt2, felt3 FROM table ...

Og 15 gange pr. side eller 15 gange i alt?
Avatar billede webweaver Praktikant
27. oktober 2010 - 21:34 #9
Hvis det er 15 gange i alt, kan du med det eksempel jeg har smidt op, skifte

$foresp = mysql_query("SELECT * FROM table") or die(mysql_error());

ud med

$foresp = mysql_query("SELECT * FROM table LIMIT 0, 15") or die(mysql_error());
Avatar billede cyper-master Nybegynder
28. oktober 2010 - 00:45 #10
når jeg bruger den kode skriver den bare

"No database selected"
Avatar billede cyper-master Nybegynder
28. oktober 2010 - 01:06 #11
okay nu fik jeg det fixet. men når jeg så får oprette en ting i min tabel, og vil ha den vist skriver den kun dette

(bemærk der er kun et opslag i tabelen)

Forrige - 1 - Næste

men viser intet af det jeg gerne vil ha
Avatar billede webweaver Praktikant
28. oktober 2010 - 12:04 #12
Altså viser den, den ene ting som er i databasen?
Husk at ændre table, til dit eget tabel navn. :-)

Det er klart at den skriver det med forrige og næste.
Men en simpel if sætning, fjerner vi det:

if ($total > $pr_pages) {

echo "<p>\n$prev";
$pages1 = ceil($pages);
$tal = 0;
$tal1 = 1;
while($pages1 >= $tal1) {
if($tal == $e) {
echo "<b>$tal1</b>";
} else {
echo " <a href=\"http://www.minside.dk/guestbook.php?e=$tal \">$tal1</a> ";
}
$tal++;
$tal1++;
}
echo "$next\n</p>";
}

}
Avatar billede cyper-master Nybegynder
28. oktober 2010 - 14:41 #13
jeg har oprette 2 ting i min tabel.

men den skriver stadig kun Forrige - 1 - Næste

altså den viser ikke nogle ting fra tabellen af og skriver vi er på side et. vis jeg forstår det rigtig.
Avatar billede webweaver Praktikant
28. oktober 2010 - 15:00 #14
Det her et jo kun scriptet for paging. Ved ikke hvordan dit eget kode er lavet, hvor du trækker ud af databasen?

Men du skal ihvertfald have noget som ser ud, like this;

$foresp = "SELECT felt1, felt2, felt3 FROM table order by id DESC LIMIT $a,$b";

Og så skal du have din sædvanlige while lykke og så videre ..

Det ovenstående virker som det skal, da jeg selv bruger det i flere af min løsninger, så det er gennemtestet. Ellers skal der være en tastefejl et sted.

Jeg vil mene at vi skal kigge på din egen kode, hvor du trækker ud fra DB. Så hvis du poster det :)
Avatar billede cyper-master Nybegynder
28. oktober 2010 - 15:16 #15
Først vil jeg gerne deklære som i nok allrede ved, jeg er totalt ny inden for php

        <?php do { ?>
          <p><?php echo $row_nyheder_side['overskrift']; ?> </p>
          <p>&nbsp;</p>
          <p><?php echo $row_nyheder_side['beskrivelse']; ?></p>
          <p><?php echo $row_nyheder_side['dato']; ?></p>
          <p><?php echo $row_nyheder_side['forfatter']; ?></p>
          <?php } while ($row_nyheder_side = mysql_fetch_assoc($nyheder_side)); ?>
<p>
          <?php
      if ($total > $pr_pages) {
      echo "<p>\n$prev";
$pages1 = ceil($pages);
$tal = 0;
$tal1 = 1;
while($pages1 >= $tal1) {
if($tal == $e) {
echo "<b>$tal1</b>";
} else {
echo " <a href=\"http://127.0.0.1/admin/nyheder.php?e=$tal \">$tal1</a> ";
}
$tal++;
$tal1++;
}
echo "$next\n</p>";
}
      ?>
Avatar billede webweaver Praktikant
28. oktober 2010 - 15:36 #16
Prøv at ændre din kode til følgende;

<?php while ($row_nyheder_side = mysql_fetch_assoc($nyheder_side)) { ?>
         
<p><?php echo $row_nyheder_side['overskrift']; ?> </p>
<p> </p>
<p><?php echo $row_nyheder_side['beskrivelse']; ?></p>
<p><?php echo $row_nyheder_side['dato']; ?></p>
<p><?php echo $row_nyheder_side['forfatter']; ?></p>

<?php } ?>

Og så videre, men det som udskriver tallene for paging scriptet her...
Avatar billede cyper-master Nybegynder
28. oktober 2010 - 18:18 #17
det virkede ikke. men tror jeg har en ide.

kan jeg ikke hente et bestemt indlæg i en tabel?

f.eks
<?php echo $row_nyheder['overskrift']; ?>
hente alle.
men kan jeg ikke gå ind og sige den kun skal hente den med f.eks. id = 1?
Avatar billede webweaver Praktikant
28. oktober 2010 - 18:27 #18
Hvis det stadig ikke virker, bliver du nødt til at poste det hele du har stående. Både med SQL udtræk og så videre, så jeg kan se det ordentligt.

Og jo, hvis du kun ønsker at hente et indlæg, ser det sådan ud;

$foresp = "SELECT felt1, felt2, felt3 FROM table WHERE id = 1 order by id DESC LIMIT $a,$b";

Men så forsvinder ideen rimelig meget med et paging system?

og så synes jeg at du skal smide or die på, for at vi kan få en fejl en gang for alle.

Så:

$foresp = "SELECT felt1, felt2, felt3 FROM table WHERE id = 1 order by id DESC LIMIT $a,$b" or die (mysql_error());

Hvis der er meget kode, så smid det ind her evt, og post linket
http://www.pastebin.com/
Avatar billede cyper-master Nybegynder
28. oktober 2010 - 18:40 #19
Avatar billede cyper-master Nybegynder
28. oktober 2010 - 19:16 #20
vis jeg bare kunne skrive.

at den skal vise indlæg e*2+1
og indlæg e*2+2

så ville det vel være fixet?

men syns ikke jeg kan få det til at virke.
Avatar billede webweaver Praktikant
28. oktober 2010 - 20:16 #21
Jeg ved ikke helt hvad du mener der.

Har kigget på din kode, og der er noget rod flere steder.
Lad os lige tage 1 skridt af gangen, og tage det kode som er vist her i tråden.

http://pastebin.com/zNuTizZD

Dette skulle meget gerne virke hos dig.
Det er det jeg har postet, sat rigtigt op i din fil.
Og så har jeg fjernet alt det andet i første omgang.
Avatar billede cyper-master Nybegynder
28. oktober 2010 - 20:39 #22
altså det der med skift side virker.

men kan stadig ikke få den til at skrive indlæg ud på siden
Avatar billede webweaver Praktikant
28. oktober 2010 - 22:00 #23
What.. Har du og ryddet hele din fil. Alt dit PHP kode i den, og så bare smidt det ind jeg postede?

Husk lige at tage backup af dem gamle, før du sletter alt din kode. Ellers lav det i en test fil. Fatter ikke meget af det.

Du får ingen fejl? Bare blank side?
Men den henter det godt nok ind og tæller det op, så du kan skifte side?

Har du et link?

Prøv at rykke alt dit PHP kode ned mellem <body> og </body> så.
Avatar billede cyper-master Nybegynder
28. oktober 2010 - 22:07 #24
det var bare mig der havede lavet en fejl. fik det nemtop til at virke da du skrev :)

tak for hjælp. nu virker det hele som det skal :) lig gerne svar for points
Avatar billede webweaver Praktikant
29. oktober 2010 - 14:22 #25
Det var godt at høre :)
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