Avatar billede tweak Nybegynder
16. januar 2006 - 10:12 Der er 14 kommentarer og
2 løsninger

Hjælp til paging

Jeg mangler hjælp til at rette mit sideskift til lige nu vises den sådan: << >> Men jeg ville gerne hvis den kunne vises sådan: << 1 2 3 4 >> jeg har kigget overalt og forsøgt at bygge noget ind uden held :( Hvis jeg poster koden kan jeg så ikke få det lavet :)


#
# Nu åbner vi databasen, hiver informationerne ud og lukker med det samme igen.
# Det er god skik at en forbindelse til database ikke er åben længere end højst nødvendigt.
#
# Abstraktionerne fra mysql-funktioner.php sørger for alt det grove arbejde og fejlhåndtering - dejligt.
#

aabn_forbindelse_og_vaelgdb();
$resultat = sql_spoerg_og_faa_svar($sql);
$optaelling = sql_spoerg_og_faa_svar($taeller_sql);
luk_forbindelse();

#
# Så går vi igang med at bygge navigationen
# Først bruger vi extract til at få $antal ud til behandling.
# Vi looper ikke igennem resultatet, da vi ved der kun er een række,
# så vi tilgår den direkte ved $optaelling[0].
#

extract($optaelling[0]);

#
# Skal der laves et links til flere indlæg?
#

if($antal > ($start_nr + $antal_ad_gangen)) {
   
    $naeste_start_nr = $start_nr + $antal_ad_gangen;
    $naeste_nav = "<a class=\"sidenr\" href=\"$PHP_SELF?start_nr=$naeste_start_nr\"> >></a>";

} else {

    $naeste_nav = "<span class=\"d-link\"> >></span>";

}

#
# Skal der laves link til forrige indlæg?
#

if($start_nr > 0 && ($start_nr - $antal_ad_gangen) < $antal) {

    $forrige_start_nr = $start_nr - $antal_ad_gangen;
    $forrige_nav = "<a class=\"sidenr\" href=\"$PHP_SELF?start_nr=$forrige_start_nr\"><< </a>";

} else {

    $forrige_nav = "<span class=\"d-link\"><< </span>";

}

#
# Her sætter vi det hele sammen i en tabel vi kan bruge til at sætte ind på siden.
#

$nav = "<div><span>$forrige_nav</span>
    <span>$naeste_nav</span>
    </div>";

echo "$nav<br />";

#
# Her begynder det egentlig interesante - vi looper os igennem de enkelte indlæg
# og skriver dem ud til skærmen.
#
# Hvis forespørgslen ikke har returneret nogle resultater, springer vi alt dette over.
#

if(count($resultat) < 1) {

  echo "Der er ingen indl&aelig;g i gBogen";

} else {

  for($i=0;$i<count($resultat);$i++) {

    #
    # Med extract får vi smidt værdierne i variabler
    #
   
    extract($resultat[$i]);
Avatar billede avminarm Juniormester
16. januar 2006 - 10:46 #1
prøv at kigge på den her: http://wagners.users.whitehat.dk/script/ - den pager er ret nem at gå til og kan det du ønsker ;o)
Avatar billede cpfrande Nybegynder
16. januar 2006 - 11:55 #2
I scriptet, som avminarm henviser til, er der dog nogle ting, som nok bør rettes.

F.eks. er der i klassen to x start af php og 2 x slut - altså:
<?php
<?php
?>
?>

Det kan - og bør - undgåes.
Avatar billede tweak Nybegynder
16. januar 2006 - 12:05 #3
Det kan jeg ikke se hvordan jeg skal sætte op, det skal bruges på en gæstebog
Avatar billede avminarm Juniormester
16. januar 2006 - 12:21 #4
cpfrande>> det er fordi der er vist et eksempel i starten af klassen - det er udkommenteret med /* */
tweak> ok - men det script jeg henviser til indeholder funktionaliteten, nå anyway er det vel bare et spørgsmål om matematik.

du har $antal som måske er lig med 38 og hvis der så skal være 10 pr side så kan du med den for() udskrive tallene noget ala der her (ikke testet):

$page = 1; //Definerer hvor sidetal skal starte
$pr_side = 10;
//For-løkke der kører indtil der ikke er nok rows til en side mere
for($start=0; $antal > $start; $start=$start+$pr_side){
    //udskriver link
    echo '<a href="index.php?s='.$start.'">'.$page.'</a>&nbsp;';
    //Lægger en til $page til næste gang løkken køres
    $page++;
}
Avatar billede cpfrande Nybegynder
16. januar 2006 - 12:33 #5
avminarm:
Du gør det da stadigvæk forkert?
Du laver det sådan her:
<?php
<?php
?>
?>

Dvs. du starter en ny <?php inde i en <?php.

Så er det ligegyldigt om du kommenterer det eller ej :-)
Avatar billede tweak Nybegynder
16. januar 2006 - 12:45 #6
16/01-2006 12:21:25, Det kan jeg godt se, men jeg kan ikke få det sat sammen med min gæstebog så den udskriver det i de felter som den skal, men er det en stor opgave at tilføje noget i det jeg har skrevet ovenfor.?
Avatar billede avminarm Juniormester
16. januar 2006 - 12:46 #7
cpfrande>> ikke kommenteret men UDkommenterer - se selv her: http://wagners.users.whitehat.dk/script/kwpager/show_pager.php
så i min "bog" er der ingen fejl ;o)
Avatar billede cpfrande Nybegynder
16. januar 2006 - 12:48 #8
Ahh, sorry... Det havde jeg ikke lige spottet :-)
Avatar billede avminarm Juniormester
16. januar 2006 - 13:11 #9
helt ok - for ellers havde du jo helt ret ;o)
Avatar billede tweak Nybegynder
16. januar 2006 - 20:01 #10
Ja jeg kan stadig ikke få det sat sammen på en måde så det fungere, jeg vil ikke gi dig alle point for den da det ikke er brugbart for mig og jeg tror jeg må affinde mig med << >> :( indtil jeg lære php
Avatar billede cpfrande Nybegynder
17. januar 2006 - 08:29 #11
tweak:
Det var da en utrolig dårlig måde, hvorpå du afslutter nævnte spørgsmål.

Du har fået en korrekt løsningsforslag, så kan du ikke blot lukke besvarelsen, fordi du ikke selv kan finde ud af at opsætte det. Jeg vil gerne notere at i koden som 'avminarm' referer til, er gode eksempler på hvordan du kan bruge det.

At din viden indenfor PHP er så lille, at du ikke kan sammensætte det med din egen kode, ja, det kan jo på sin vis ikke være vores problem. Jeg vil dertil også notere at du faktisk slet ikke desideret har skrevet i dette spørgsmål, at du ikke kunne få det til at virke.

Alt i alt - dårlig skik.
Avatar billede tweak Nybegynder
17. januar 2006 - 08:36 #12
Nå hvad kalder du så: 16/01-2006 12:45:23 og 16/01-2006 12:05:16

Og mit spørgsmål gik på Hjælp til paging og til at tilføje noget til det kodestykke jeg havde, at du så har travlt med at diskutere istedet for at spørge, hvad er det du ikke kan finde ud af, er vist nærmere en fejl fra din side, ik.!
Avatar billede tweak Nybegynder
17. januar 2006 - 08:38 #13
Men er der en som kan sætte det ind for mig, opretter jeg gerne et nyt.!
Avatar billede cpfrande Nybegynder
17. januar 2006 - 08:41 #14
Har du læst filen readme.txt, der fortæller dig præcist hvad du skal gøre for at lave pagingen?

Du stiller ikke noget spørgsmål - du siger bare du ikke kan implementere det. Men hvor går det galt? Hvordan ser din nuværende implementation ud?

Desuden går dit spørgsmål ud på at få ordnet enten din kode til paging eller få en anden kode til paging. Du nævner intet om en implementation eller noget om en gæstebog.

Jeg hjælper hellere end gerne - men der skal være nogle spørgsmål. Jeg gider personligt ikke bruge tid på et "spørgsmål", der lyder "jeg kan ikke implementere det".

Jeg poster readme.txt-filen her - så kan du nævnte overfor mig hvor du har et problem:

<?php

// Database tabellen kunne se sådan her ud:

// CREATE TABLE news (
//  id int(11) NOT NULL auto_increment,
//  title varchar(100) NOT NULL default '',
//  text text NOT NULL,
//  name varchar(100) NOT NULL default '',
//  PRIMARY KEY  (id)
// ) TYPE=MyISAM;

// Selve eksemplet af en fil der bruger KwPager:

// tilslut til databasen
include "config.php";

// Includer klassen KwPager - Du kan godt ændre navnet på filen hvis du har lyst
include "class.kwpager.php";

// kald på klassen KwPager
$p = new KwPager;

// hvor mange skal udskrives pr side
$p -> pr_side(5);

// lav om på forrige og næste knapperne
// OBS: Valgfri - Ikke nødvendig
$p -> buttons("<- Min Forrige Knap" , "Min Næste Knap ->");

// stien i linket til pageren
// OBS: Valgfri - Ikke nødvendig
// Kan være nyttig hvis klassen skal integreres på en eksistrende side
$p -> pagerpath($_SERVER['PHP_SELF'],"?");

// Limit sættes lige i en vareiabel
$limit = $p -> limit();

// Kald tabellen i databasen som du vil page på - Her hedder den "news":

  $result = mysql_query("select * from news limit ".$limit."");
  while($row = mysql_fetch_array($result)){
    print "titel: $row[title]<br>";
    print "Tekst: $row[text]<br>";
    print "Navn: $row[name]<br><hr>";
  }

// Pager oplysninger puttes i en variabel
// BEMÆRK feltet "id" er fra tabellen "news" i dette eksempel
$pager = $p -> Pager("id","news");

// Pageren udskrives til skærmen

echo $pager;

?>
Avatar billede tweak Nybegynder
17. januar 2006 - 09:13 #15
Problemet er at den tæller fint de sider gæstebogen indeholder, men skifter man fra side 1 til 2 forbliver den blot på side 1, du kan selv se siden: www.digitalife.dk/tagwall/tagwall.php gå ned i bunden der kan du bedre se navigationen
Avatar billede cpfrande Nybegynder
17. januar 2006 - 09:17 #16
Har du husket at du skal lave en LIMIT på din egen mysql_query:

$result = mysql_query("select * from news limit ".$limit."");

Han indsætter der et $limit

Det er højst sandsynligt det, som er problemet.
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