Avatar billede silmarillion Juniormester
30. august 2009 - 17:32 Der er 4 kommentarer og
1 løsning

Vælg hvormange resultater der vises

Hej Eksperter,

Jeg har lavet en side, hvor det er muligt, at vælge hvor mange resultater der skal vises, når der laves en forespørgsel til en MySQL database, og den del virker fint. problemet opstår, når man klikker videre til næste side.

Jeg har valgt at der som standard skal vises 80 linier, hvis der ikke er valgt andet.

Hvis man så vælger, at der kun skal vises 20 linier og der efter klikker på næste viser den linie 81-101, og ikke linie 21-41, som det er meningen.

hvad skal jeg rette i koden, eller skal det laves på en helt anden måde?

Siden kan ses her http://easywebdesigns.dk/easywebgalleri/Test6.php

Kode som følger:

$maxRows_rsgd = $_POST['antal'];
$pageNum_rsgd = 0;
if (isset($_GET['pageNum_rsgd'])) {
  $pageNum_rsgd = $_GET['pageNum_rsgd'];
}
if (isset($_POST['antal'])) {
  $maxRows_rsgd = $_POST['antal'];
}
else {
        $maxRows_rsgd = 80;
}

$startRow_rsgd = $pageNum_rsgd * $maxRows_rsgd;

mysql_select_db($database_EasyCMS_Light, $EasyCMS_Light);
$query_rsgd = "SELECT * FROM billeder ORDER BY galleri ASC";
$query_limit_rsgd = sprintf("%s LIMIT %d, %d", $query_rsgd, $startRow_rsgd, $maxRows_rsgd);
$rsgd = mysql_query($query_limit_rsgd, $EasyCMS_Light) or die(mysql_error());
$row_rsgd = mysql_fetch_assoc($rsgd);

if (isset($_GET['totalRows_rsgd'])) {
  $totalRows_rsgd = $_GET['totalRows_rsgd'];
} else {
  $all_rsgd = mysql_query($query_rsgd);
  $totalRows_rsgd = mysql_num_rows($all_rsgd);
}
$totalPages_rsgd = ceil($totalRows_rsgd/$maxRows_rsgd)-1;

mysql_select_db($database_EasyCMS_Light, $EasyCMS_Light);
$query_rsantal = "SELECT * FROM antal";
$rsantal = mysql_query($query_rsantal, $EasyCMS_Light) or die(mysql_error());
$row_rsantal = mysql_fetch_assoc($rsantal);
$totalRows_rsantal = mysql_num_rows($rsantal);

$queryString_rsgd = "";
if (!empty($_SERVER['QUERY_STRING'])) {
  $params = explode("&", $_SERVER['QUERY_STRING']);
  $newParams = array();
  foreach ($params as $param) {
    if (stristr($param, "pageNum_rsgd") == false &&
        stristr($param, "totalRows_rsgd") == false) {
      array_push($newParams, $param);
    }
  }
  if (count($newParams) != 0) {
    $queryString_rsgd = "&" . htmlentities(implode("&", $newParams));
  }
}
$queryString_rsgd = sprintf("&totalRows_rsgd=%d%s", $totalRows_rsgd, $queryString_rsgd);
?>

<table width="750" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><form id="antal" name="antal" method="post" action="">
      <label>
        <select name="antal" id="antal">
          <?php
do { 
?>
          <option value="<?php echo $row_rsantal['antal']?>"><?php echo $row_rsantal['antal']?></option>
          <?php
} while ($row_rsantal = mysql_fetch_assoc($rsantal));
  $rows = mysql_num_rows($rsantal);
  if($rows > 0) {
      mysql_data_seek($rsantal, 0);
      $row_rsantal = mysql_fetch_assoc($rsantal);
  }
?>
        </select>
      </label>
      <label>
        <input type="submit" name="button" id="button" value="Submit" />
      </label>
    </form></td>
  </tr>
</table>

<?php do { ?>
  <table width="750" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td width="50"><?php echo $row_rsgd['billedeid']; ?></td>
      <td width="350"><?php echo $row_rsgd['billednavn']; ?></td>
      <td width="350"><?php echo $row_rsgd['galleri']; ?></td>
    </tr>
  </table>
  <?php } while ($row_rsgd = mysql_fetch_assoc($rsgd)); ?>
<table width="750" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td> 
      <table width="100%" border="0">
        <tr>
          <td width="25%" align="left"><?php if ($pageNum_rsgd > 0) { // Show if not first page ?>
              <a href="<?php printf("%s?pageNum_rsgd=%d%s", $currentPage, 0, $queryString_rsgd); ?>">Første</a>
              <?php } // Show if not first page ?></td>
          <td width="25%" align="center"><?php if ($pageNum_rsgd > 0) { // Show if not first page ?>
              <a href="<?php printf("%s?pageNum_rsgd=%d%s", $currentPage, max(0, $pageNum_rsgd - 1), $queryString_rsgd); ?>">Forrige</a>
              <?php } // Show if not first page ?></td>
          <td width="25%" align="center"><?php if ($pageNum_rsgd < $totalPages_rsgd) { // Show if not last page ?>
              <a href="<?php printf("%s?pageNum_rsgd=%d%s", $currentPage, min($totalPages_rsgd, $pageNum_rsgd + 1), $queryString_rsgd); ?>">Næste</a>
              <?php } // Show if not last page ?></td>
          <td width="25%" align="right"><?php if ($pageNum_rsgd < $totalPages_rsgd) { // Show if not last page ?>
              <a href="<?php printf("%s?pageNum_rsgd=%d%s", $currentPage, $totalPages_rsgd, $queryString_rsgd); ?>">Sidste</a>
              <?php } // Show if not last page ?></td>
       
På forhånd tak for hjælpen.
Avatar billede eXcluzive Nybegynder
30. august 2009 - 20:28 #1
brug sessions?
Avatar billede tobias_louv Nybegynder
30. august 2009 - 21:43 #2
Hvis du laver det om, så du bruger GET, kan du lave denne linje om:

if (isset($_POST['antal'])) {
  $maxRows_rsgd = $_POST['antal'];
}
else {
        $maxRows_rsgd = 80;
}

til

if (isset($_POST['antal'])) {
  $maxRows_rsgd = $_GET['antal'];
}
else {
        $maxRows_rsgd = 80;
}

Og når man så trykker på næste, skal du bare skrive &antal=$_GET['antal']
Avatar billede tobias_louv Nybegynder
30. august 2009 - 21:45 #3
jeg må indrømme, at jeg ikke fik læst din kode igennem! men mon ikke, du kan få det til at virke? :)
Avatar billede silmarillion Juniormester
01. september 2009 - 22:43 #4
Ændrede fra POST til GET et par steder, og nu virker det, selv om det dog ikke ser lige så elegant ud i adressebaren.

@eXcluzive jeg forsøgte med session, men fik det ikke til at virke, selv om det sikkert er muligt hvis man roder lidt mere med det.

@tobias_louv Jeg prøvede det du skrev bagefter, men det virker ikke, men det er tæt nok til, at jeg gerne giver point til dig hvis du lægger et svar.
Avatar billede tobias_louv Nybegynder
02. september 2009 - 14:31 #5
Jamen jo tak da :)
Du kan jo lave det sådan, at du submitter en form, hver gang du trykker næste eller forrige. På den måde sender du med post hver gang.
Men jeg synes nu, det er rarest at se det hele i adressebaren - så kan man linke direkte, og ikke bare til siden ;-)
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