Avatar billede sjh Nybegynder
22. oktober 2004 - 09:41 Der er 9 kommentarer og
1 løsning

Begræns Side: 4, 5, 9, 10

Hvordan laver jeg mit script så den ikke skriver mere end fx. 10 links ud..

På samme måde som ekspertens..
fx.
Her kommer der max 11 ud.. -> Side: 4 5 6 7 8 9 10 11 12 13 14


<?php
  $strLike        = "Domain";          # Felt som der skal søges i.
  $strOrder      = "ORDER BY Domain"; # Order string ..DESC
  $strTable      = "b_dk";            # Tabel navn a_dk, b_dk, ...
  $strSearch      = "search";          # Navn i url for søge.
  $intPageSize    = 25;                # Antal per. side.
  $strRequestName = "start";          # Navn i url for sider. (count)

  $strSearch = $_REQUEST[$strSearch];
  $intStart = $_REQUEST[$strRequestName];

  # Antal felter som vil blive udskrevet. ($intCount)
  if (isset($strSearch) && $strSearch) {
    $sqlResult = mysql_query("SELECT COUNT(*) FROM ".$strTable." WHERE ".$strLike." LIKE '%".$strSearch."%';");
      } else {
    $sqlResult = mysql_query("SELECT COUNT(*) FROM ".$strTable.";");
  }
  if ($sqlResult) {
    $intCount = mysql_result($sqlResult, 0);
  }

  # Tjekker start fra felt..
  if (($intStart > $intCount) || ($intStart < 0) |! isset($intStart)) {
    $intStart = 0;
  }

  # Laver en forespørgelse.
  if (isset($strSearch) && $strSearch) {
    $sqlResult = mysql_query("SELECT * FROM ".$strTable." WHERE ".$strLike." LIKE '%".$strSearch."%' ".$strOrder." LIMIT ".$intStart.", ".$intPageSize.";");
    $strSearch = "&search=".$strSearch;
      } else {
    $sqlResult = mysql_query("SELECT * FROM ".$strTable." ".$strOrder." LIMIT ".$intStart.", ".$intPageSize.";");
  }

  # Udskriver resultat.
  if ($sqlResult) {
    while($row = mysql_fetch_array($sqlResult)) {
      echo $row[$strLike]."<br>";
    }
  }

  # Tjekker om det er muligt at gå til næste side.
  $strNext = "&gt;&gt;";
  if ($intPageSize < ($intCount - $intStart)) {
    $strNext = "?".$strRequestName."=".($intStart + $intPageSize).$strSearch;
    $strNext = '<a href="'.$strNext.'">&gt;&gt;</a>';
  }

  # Tjekker om det er muligt at gå en side tilbage.
  $strPrev = "&lt;&lt;";
  if (0 < $intStart) {
    $strPrev = "?".$strRequestName."=".($intStart - $intPageSize).$strSearch;
    $strPrev = '<a href="'.$strPrev.'">&lt;&lt;</a>';
  }

  # Total sider.
  $intTotalPage = ceil($intCount / $intPageSize);

  # Viser side.
  $intCountPage = ceil($intStart / $intPageSize);

  # ---------------------------- HER FRA ---------------------------- #
  $intLinkRange = 10;

  $intStartLink = ($intCountPage - ($intLinkRange / 2));
  $intSlutLink = ($intCountPage + ($intLinkRange / 2));

  if ($intStartLink < 0) {
    $intStartLink = 0;
    $intSlutLink = ($intSlutLink + (($intLinkRange / 2) -$intCountPage));
  }

/*
  if ($intSlutLink > $intTotalPage) {
    $intSlutLink = $intTotalPage;
  }


  echo "intStartLink=".$intStartLink."<br>";
  echo "intSlutLink=".$intSlutLink."<br>";
  echo "intCountPage=".$intCountPage."<br>";
  echo "intTotalPage=".$intTotalPage."<br>";
*/

  for ($i = $intStartLink; $i <= $intSlutLink; $i++) {

    if ($i == $intCountPage) {
      $strLink .= '<b>'.($i + 1).'</b> | ';
        } else {
      $strTemp = "?".$strRequestName."=".($i * $intPageSize).$strSearch;
      $strLink .= '<a href="'.$strTemp.'">'.($i + 1).'</a> | ';
    }

  }
  # ---------------------------- HER FRA ---------------------------- #
?>
Avatar billede bojo Nybegynder
22. oktober 2004 - 10:42 #1
med en LIMIT 11 i din SELECT

http://dev.mysql.com/doc/mysql/en/SELECT.html
Avatar billede sjh Nybegynder
22. oktober 2004 - 13:07 #2
øhh.. nu var dit ikke sådan jeg mente..

det var at lave en rege.. links eller sider.. fx.
Hvis man står på side 10 så viser den IKKE side 1,2,3
men side: 4 5 6 7 8 9 10 11 12 13 14

på den måde.. Jeg har prøvet lidt selv.. men kan ikke få det til at virke..

  # ---------------------------- HER FRA ---------------------------- #
  $intLinkRange = 10;

  $intStartLink = ($intCountPage - ($intLinkRange / 2));
  $intSlutLink = ($intCountPage + ($intLinkRange / 2));

  if ($intStartLink < 0) {
    $intStartLink = 0;
    $intSlutLink = ($intSlutLink + (($intLinkRange / 2) -$intCountPage));
  }

/*
  if ($intSlutLink > $intTotalPage) {
    $intSlutLink = $intTotalPage;
  }


  echo "intStartLink=".$intStartLink."<br>";
  echo "intSlutLink=".$intSlutLink."<br>";
  echo "intCountPage=".$intCountPage."<br>";
  echo "intTotalPage=".$intTotalPage."<br>";
*/

  for ($i = $intStartLink; $i <= $intSlutLink; $i++) {

    if ($i == $intCountPage) {
      $strLink .= '<b>'.($i + 1).'</b> | ';
        } else {
      $strTemp = "?".$strRequestName."=".($i * $intPageSize).$strSearch;
      $strLink .= '<a href="'.$strTemp.'">'.($i + 1).'</a> | ';
    }

  }
  # ---------------------------- HER FRA ---------------------------- #
Avatar billede bojo Nybegynder
22. oktober 2004 - 14:27 #3
ahhh

for at kunne teste har jeg indsat  $intCountPage =9; i starten

og så lige en  echo $strLink; i bunden for at se resultatet


<?
  $intLinkRange = 10;
  $intCountPage =9;

  $intStartLink = ($intCountPage - ($intLinkRange / 2));
  $intSlutLink = ($intCountPage + ($intLinkRange / 2));

  if ($intStartLink < 0) {
    $intStartLink = 0;
    $intSlutLink = ($intSlutLink + (($intLinkRange / 2) -$intCountPage));
  }

/*
  if ($intSlutLink > $intTotalPage) {
    $intSlutLink = $intTotalPage;
  }


  echo "intStartLink=".$intStartLink."<br>";
  echo "intSlutLink=".$intSlutLink."<br>";
  echo "intCountPage=".$intCountPage."<br>";
  echo "intTotalPage=".$intTotalPage."<br>";
*/

  for ($i = $intStartLink; $i < $intSlutLink; $i++) {

    if ($i+1 == $intCountPage) {
      $strLink .= '<b>'.($i + 1).'</b> | ';
        } else {
      $strTemp = "?".$strRequestName."=".($i * $intPageSize).$strSearch;
      $strLink .= '<a href="'.$strTemp.'">'.($i + 1).'</a> | ';
    }

  }
  echo $strLink;
?>
Avatar billede sjh Nybegynder
22. oktober 2004 - 20:26 #4
ja.. men det jeg har lavet virker altså IKKE..

det som står mellem.. # --- HER FRA --- # er noget jeg har forsøgt at lave.. ;)

Det som jeg vil ha.. er lige som google.. at den kun viser nogel af siderne..
se her -> http://hjem.get2net.dk/sjh/eksperten/553205/sidexx.jpg

Ved at indtaste vadi i..

  $intLinkRange = 10;
  $intCountPage = 9;
  $intTotalPage = 1000;

må man kunne lave det.. men hvordan!!
Avatar billede bojo Nybegynder
22. oktober 2004 - 21:01 #5
joo, det du har lavet virker da, det er det der er ovenover, der manglede bare  echo $strLink;
Avatar billede sjh Nybegynder
22. oktober 2004 - 21:09 #6
jo.. ja.. men der går ged i det når der kun er fx. 5 sider..
se.. http://wonder.sjhdata.dk/index.php?search=bob
Avatar billede bojo Nybegynder
22. oktober 2004 - 22:50 #7
så ved jeg ikke liiige om dette kan bruges, prøv det uden at putte det ind i dit for at se om det er det du mener


<?
    if( isset( $HTTP_SERVER_VARS['QUERY_STRING'] ) && is_numeric($HTTP_SERVER_VARS['QUERY_STRING']) )
        $intSide = $HTTP_SERVER_VARS['QUERY_STRING']*1;
  else
          $intSide = 1;             // siden vi er på

  $intSiderSes = 5;            // links der skal ses på hver side af "denne side"
  $intSiderIalt = 50;        // Antal links

  $intStartSide = $intSide-$intSiderSes;
  if( $intStartSide + $intSiderSes > $intSiderIalt ) $intStartSide = $intSiderIalt - $intSiderSes;
  if( $intStartSide < 1 ) $intStartSide = 1;

  $intSlutSide = ($intStartSide + $intSiderSes*2+1);
  if( $intSlutSide > $intSiderIalt ) $intSlutSide = $intSiderIalt;

  for ($i = $intStartSide; $i < $intSlutSide; $i++) {

    if ($i == $intSide) {
      $strLink .= '<b>'.($i).'</b> | ';
        } else {
      $strTemp = "?".$strRequestName."".($i).$strSearch;
      $strLink .= '<a href="'.$strTemp.'">'.($i).'</a> | ';
    }

  }
  echo $strLink;
?>
Avatar billede spuncut Nybegynder
23. oktober 2004 - 05:29 #8
Denne her virker :
(kan osse fås i ASP)


<?php
  $strLike        = "Domain";          # Felt som der skal søges i.
  $strOrder      = "ORDER BY Domain"; # Order string ..DESC
  $strTable      = "b_dk";            # Tabel navn a_dk, b_dk, ...
  $strSearch      = "search";          # Navn i url for søge.
  $intPageSize    = 25;                # Antal per. side.
  $strRequestName = "start";          # Navn i url for sider. (count)

  $strSearch = $_REQUEST[$strSearch];
  $intStart = $_REQUEST[$strRequestName];

  # Antal felter som vil blive udskrevet. ($intCount)
  if (isset($strSearch) && $strSearch) {
    $sqlResult = mysql_query("SELECT COUNT(*) FROM ".$strTable." WHERE ".$strLike." LIKE '%".$strSearch."%';");
      } else {
    $sqlResult = mysql_query("SELECT COUNT(*) FROM ".$strTable.";");
  }
  if ($sqlResult) {
    $intCount = mysql_result($sqlResult, 0);
  }

  # Tjekker start fra felt..
  if (($intStart > $intCount) || ($intStart < 0) |! isset($intStart)) {
    $intStart = 0;
  }

  # Laver en forespørgelse.
  if (isset($strSearch) && $strSearch) {
    $sqlResult = mysql_query("SELECT * FROM ".$strTable." WHERE ".$strLike." LIKE '%".$strSearch."%' ".$strOrder." LIMIT ".$intStart.", ".$intPageSize.";");
    $strSearch = "&search=".$strSearch;
      } else {
    $sqlResult = mysql_query("SELECT * FROM ".$strTable." ".$strOrder." LIMIT ".$intStart.", ".$intPageSize.";");
  }

  # Udskriver resultat.
  if ($sqlResult) {
    while($row = mysql_fetch_array($sqlResult)) {
      echo $row[$strLike]."<br>";
    }
  }

  # Tjekker om det er muligt at gå til næste side.
  $strNext = "&gt;&gt;";
  if ($intPageSize < ($intCount - $intStart)) {
    $strNext = "?".$strRequestName."=".($intStart + $intPageSize).$strSearch;
    $strNext = '<a href="'.$strNext.'">&gt;&gt;</a>';
  }

  # Tjekker om det er muligt at gå en side tilbage.
  $strPrev = "&lt;&lt;";
  if (0 < $intStart) {
    $strPrev = "?".$strRequestName."=".($intStart - $intPageSize).$strSearch;
    $strPrev = '<a href="'.$strPrev.'">&lt;&lt;</a>';
  }

  # Total sider.
  $intTotalPage = ceil($intCount / $intPageSize);

  # Viser side.
  $intCountPage = ceil($intStart / $intPageSize);

  # ---------------------------- HER FRA ---------------------------- #
  $intLinkRange = 10;

  $intLinkStart = ceil($intLinkRange / 2);
  $intLinkSlut = ceil($intLinkRange / 2);

  if ($intLinkRange < $intTotalPage) {
    if ($intCountPage < ($intLinkRange / 2)) {
      $intLinkStart = $intCountPage;
      $intLinkSlut = ($intLinkRange - $intCountPage);
    } else {
      if (($intTotalPage - $intCountPage) < ($intLinkRange / 2)) {
        $intLinkSlut = ($intTotalPage - $intCountPage);
        $intLinkStart = ($intLinkRange - $intLinkSlut);
      }
    }
  } else {
    $intLinkStart = $intCountPage;
    $intLinkSlut = ($intTotalPage - $intCountPage);
  }

  for ($i = ($intCountPage - $intLinkStart); $i < ($intCountPage + $intLinkSlut); $i++) {
    if ($i == $intCountPage) {
      $strLink .= '<b>'.($i + 1).'</b> | ';
        } else {
      $strTemp = "?".$strRequestName."=".($i * $intPageSize).$strSearch;
      $strLink .= '<a href="'.$strTemp.'">'.($i + 1).'</a> | ';
    }
  }
  # ---------------------------- HER FRA ---------------------------- #
?>
Avatar billede sjh Nybegynder
23. oktober 2004 - 07:09 #9
spuncut > Det ser sq ud som om det virker som det skal..
Jeg siger mange tak.. :-)
Avatar billede bojo Nybegynder
23. oktober 2004 - 09:17 #10
hehe, jeg overså alt uden for 
# ---------------------------- HER FRA ---------------------------- #

Jeg MÅ altså lære at læse nu :-)
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