Avatar billede tweak Nybegynder
15. januar 2006 - 13:02 Der er 13 kommentarer og
1 løsning

Problemer med pagging

Hej,

Jeg er ved at se om jeg kan laver et paging som ser sådan ud:

<< 1 2 3 4 >>

Men jeg bliver ved med at få fejlen:

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /usr/home/dan12027/public_html/tagwall/gb.php on line 73

Linje 73 er:

    $total = mysql_result($result, 0, 0);
Avatar billede hmortensen Nybegynder
15. januar 2006 - 13:23 #1
Kan du poste linie hvor du sætte $result ?
Avatar billede tweak Nybegynder
15. januar 2006 - 13:35 #2
Ja, her:

$result = mysql_query("select count(*) as antal from gaestebog");
Avatar billede tweak Nybegynder
15. januar 2006 - 13:40 #3
okay, det var så fordi det var sat en luk_forbindelse(); længere oppe. Men nu er min gæstebog tom.?
Avatar billede hmortensen Nybegynder
15. januar 2006 - 13:48 #4
Kan ikke rigtig gøre noget uden at se koden.
Avatar billede tweak Nybegynder
15. januar 2006 - 13:50 #5
:~) Her:

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

  class Pager
  {
      function getPagerData($numHits, $limit, $page)
      {
          $numHits  = (int) $numHits;
          $limit    = max((int) $limit, 1);
          $page    = (int) $page;
          $numPages = ceil($numHits / $limit);

          $page = max($page, 1);
          $page = min($page, $numPages);

          $offset = ($page - 1) * $limit;

          $ret = new stdClass;

          $ret->offset  = $offset;
          $ret->limit    = $limit;
          $ret->numPages = $numPages;
          $ret->page    = $page;

          return $ret;
      }
  }

    // get the pager input values
    $page = $_GET['page'];
    $limit = 20;
    $result = mysql_query("select count(*) as antal from gaestebog");
    $total = mysql_result($result, 0, 0);

    // work out the pager values
    $pager  = Pager::getPagerData($total, $limit, $page);
    $offset = $pager->offset;
    $limit  = $pager->limit;
    $page  = $pager->page;

    // use pager values to fetch data
    $query = "select * from gaestebog order by tid limit $offset, $limit";
    $result = mysql_query($query);

    // use $result here to output page content

    // output paging system (could also do it before we output the page content)
    if ($page == 1) // this is the first page - there is no previous page
        echo "<<";
    else            // not the first page, link to the previous page
        echo "<a href=\"tagwall.php?page=" . ($page - 1) . "\"><<</a>";

    for ($i = 1; $i <= $pager->numPages; $i++) {
        echo " | ";
        if ($i == $pager->page)
            echo "$i";
        else
            echo "<a href=\"tagwall.php?page=$i\">$i</a>";
    }

    if ($page == $pager->numPages) // this is the last page - there is no next page
        echo ">>";
    else            // not the last page, link to the next page
        echo "<a href=\"tagwall.php?page=" . ($page + 1) . "\">>></a>";
Avatar billede tweak Nybegynder
15. januar 2006 - 14:00 #6
Det er noget jeg har taget her fra: http://www.phpnoise.com/tutorials/9/1
Avatar billede tweak Nybegynder
15. januar 2006 - 15:22 #7
og hvis det kan hjælpe, så er det som erstatning til det der er på webcafe's gæstebog: http://www.webcafe.dk/artikler/php/phpmysqlgaestebog/ Ikke at i skal erstatte det men hjælpe mig til at forstå :)
Avatar billede wetdog Nybegynder
15. januar 2006 - 15:46 #8
prøv dette:

$total = mysql_result($result) or die(mysql_error());
Avatar billede tweak Nybegynder
15. januar 2006 - 17:24 #9
wetdog, så får jeg:

Warning: Wrong parameter count for mysql_result() in /usr/home/dan12027/public_html/tagwall/gb.php on line 99
Avatar billede tweak Nybegynder
15. januar 2006 - 17:32 #10
Det er helt sikkert mig som roder rundt i det den tæller vel også op længere oppe, i får lige det hele som det ser ud:

require("./ind/mysql-funktioner.php");
require("./ind/indstillinger.php");

#
# Vi skal have fat i vores variabler, uanset hvilken version af PHP der bruges
#

if(is_array($HTTP_GET_VARS)) {
  $start_nr = $HTTP_GET_VARS['start_nr'];
} elseif (is_array($_GET)) {
  $start_nr = $_GET['start_nr'];
}

#
# Når folk kigger på gBogen første gang har de ikke noget $start_nr, så vi giver dem et nul,
# så de starter med det nyeste indlæg.
# Hvis en skuummel gæst selv prøver at sætte $start_nr kan den ende med at blive under nul,
# når man bruger navigationen. Hvis den er under nul laver vi den også om til nul, så
# mysql ikke begynder at brokke sig over ugyldigt input
#

if(!$start_nr || $start_nr < 0) {
  $start_nr = 0;
}


#
# Vi henter to ting ud af MySQL - først og fremmest alle de indlæg vi skal kigge på
# men også en hurtig optælling af, hvor mange indlæg der er ialt. Det sidste skal vi
# bruge når vi bygger "frem"- og "tilbage"-links.
#
# Der er ingen grund til at åbne databasen endnu - vi skal først lige have bygget
# de to forespørgsler.
#

$sql = "select id, navn, epost, overskrift, date_format(tid, '%e/%c %Y kl. %H:%i') as tiden, besked from gaestebog order by tid desc limit $start_nr,

$antal_ad_gangen";
$taeller_sql = "select count(*) as antal from gaestebog";

#
# 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);


#
# 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].
#

  class Pager
  {
      function getPagerData($numHits, $limit, $page)
      {
          $numHits  = (int) $numHits;
          $limit    = max((int) $limit, 1);
          $page    = (int) $page;
          $numPages = ceil($numHits / $limit);

          $page = max($page, 1);
          $page = min($page, $numPages);

          $offset = ($page - 1) * $limit;

          $ret = new stdClass;

          $ret->offset  = $offset;
          $ret->limit    = $limit;
          $ret->numPages = $numPages;
          $ret->page    = $page;

          return $ret;
      }
  }

    // get the pager input values
    $page = $_GET['page'];
    $limit = 20;
    $result = mysql_query("select count(*) as antal from gaestebog");
    $total = mysql_result($result, 0, 0);

    // work out the pager values
    $pager  = Pager::getPagerData($total, $limit, $page);
    $offset = $pager->offset;
    $limit  = $pager->limit;
    $page  = $pager->page;

    // use pager values to fetch data
    $query = "select * from gaestebog order by tid limit $offset, $limit";
    $result = mysql_query($query);

    // use $result here to output page content

    // output paging system (could also do it before we output the page content)
    if ($page == 1) // this is the first page - there is no previous page
        echo "Previous";
    else            // not the first page, link to the previous page
        echo "<a href=\"tagwall.php?page=" . ($page - 1) . "\">Previous</a>";

    for ($i = 1; $i <= $pager->numPages; $i++) {
        echo " | ";
        if ($i == $pager->page)
            echo "Page $i";
        else
            echo "<a href=\"tagwall.php?page=$i\">Page $i</a>";
    }

    if ($page == $pager->numPages) // this is the last page - there is no next page
        echo "Next";
    else            // not the last page, link to the next page
        echo "<a href=\"tagwall.php?page=" . ($page + 1) . "\">Next</a>";



    #
    # Vi brugte addslashes() da vi lagde tingene i databasen så for at få det til
    # at se læseligt ud, fjerne vi dem igen med stripslashes()
    #

    $besked = stripslashes($besked);
    $navn = stripslashes($navn);
    $epost = stripslashes($epost);
    $overskrift = stripslashes($overskrift);

    #
    # Hvis der ikke må bruges HTML fjerner vi lige alle tags med htmlentities()
    #

    if($html_p != "t") {
        $navn = htmlentities($navn);
        $epost = htmlentities($epost);
        $besked = htmlentities($besked);
        $overskrift = htmlentities($overskrift);
    }

    #
    # For at vi får linjeskift i HTML også, bruger vi nl2br til at skifte alle \n
    # ud med <br>

    $besked = nl2br($besked);

    #
    # Vi laver et simpelt check: Hvis eposten indeholder et snabel-a, så laver
    # vi det til en mailto:
    #
    # Dette er dog ingen garanti for, at eposten er gyldig.
    #

    if(ereg("@", $epost)) {
        $navn = "<a class=\"tlink\" href=\"mailto:$epost\">$navn</a>";
Avatar billede tweak Nybegynder
15. januar 2006 - 17:35 #11
Har lige noget mere - efter:
$optaelling = sql_spoerg_og_faa_svar($taeller_sql);

har jeg fjernet:
luk_forbindelse();

Det skal vel sætte ind igen.?
Avatar billede tweak Nybegynder
15. januar 2006 - 18:10 #12
I kan se min gæstebog her: http://www.digitalife.dk/tagwall/tagwall.php latterligt at man skal til at bladre alle sider gennem for at komme tilbage til et indlæg.!!
Avatar billede tweak Nybegynder
15. januar 2006 - 21:18 #13
Er der slet ikke nogen som kan hjælpe.?
Avatar billede tweak Nybegynder
16. januar 2006 - 10:07 #14
jeg prøver på en anden måde
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