Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: mysql sivutus

kasetti [29.04.2004 11:49:49]

#

Monien yritysten jälkeen ei onnistu tietokannan tietojen sivutus järkevästi.... aiheesta oli joskus keskustelua:

https://www.ohjelmointiputka.net/koodit_nayta.php?tunnus=622

Olisko jollain hyviä ehdotuksia tai esimerkkejä?

pistemies [29.04.2004 13:10:58]

#

<?php

$riveja_sivu=10;
if (!$page) {
  $page = 0;
  }

$seuraava=$page+1;
$edellinen=$page-1;

$start = $page * $riveja_sivu;

if ($viestit >$riveja_sivu)
{
  $loput=$viestit-$start;
if($loput <$riveja_sivu)
{
  $end=$loput;    // jos seuraavia viestejä on alle sivu-asetusten
}
else
{
$end=$riveja_sivu;
}
}

if($viestit >$riveja_sivu)
{

$result = mysql_query("SELECT * FROM $taulu ORDER BY ID DESC LIMIT $start, $end");

}
$yksi_sivu=$riveja_sivu+1;
if($viestit <$yksi_sivu)
{

$result = mysql_query("SELECT * FROM $taulu ORDER BY ID DESC");
}

 if($viestit >$riveja_sivu)
 {
 echo "<tr><td><table width=\"600\"><tr><td width=\"50%\">";
if($_GET['sivu'])
{
echo "<a href=\"index.php?sivu=$edellinen\">Edellinen</a> ";
}
echo "</td><td width=\"50%\" align=\"right\">";
  $etsi_viimeinen_sivu=$viestit-$start;
 if($etsi_viimeinen_sivu >$riveja_sivu)
 {
  // Jos seuraavia rivejä on, tulostetaan seuraava-linkki
  echo "<a href=\"index.php?sivu=$seuraava\">Seuraava</a>";
 }
 echo "</td></tr></table></td></tr>";
 }
?>

Tässä minun tekeleestäni "pätkä".
Edit: Olen vähän lyentänyt tuota. Jos siihen jäi ylimääräisiä sulkeita, ota ne pois.......... :)

ajv [29.04.2004 16:10:54]

#

Tässä myös itse käyttämäni sovellus juuri tuosta T.M.:n koodivinkistä:

<?php
function sivuta($id,$max_id){
	if($id > 0)	{
            print " <A HREF=\"".$_SERVER['PHP_SELF']."\">«</A> \n";
            print " <A HREF=\"".$_SERVER['PHP_SELF']."?start=".($id - 1)."\"><</A> \n";
       		}else{
            print " « ";
            print " < ";
        }
	if($id < $max_id-1){
            print " <A HREF=\"".$_SERVER['PHP_SELF']."?start=".($id + 1)."\">></A> \n";
            print " <A HREF=\"".$_SERVER['PHP_SELF']."?start=".($max_id - 1)."\">»</A> \n";
        }else{
            print " > ";
            print " » ";
        }
}

//kuinka monta riviä/sivu näytetään
$kynnys = 50;
$riveja = mysql_num_rows(mysql_query("SELECT * FROM table"));
if (!($id = $_GET["start"])) $id = 0;
sivuta($id,ceil($riveja/$kynnys));
$kysely = "SELECT * FROM table LIMIT ".($id * $kynnys).", ".($kynnys - 1);
$sql = mysql_query($kysely);
//ja sitten vaan käyt tiedot läpi...
?>

Otin tuosta kaiken ylimääräisen pois, mutta toivottavasti idea selviää.

edit. Itsekkin aikoinani tappelin tuon myslin sivutuksen kanssa hirveillä purkkafunktioilla, kunnes yhtäkkiä kaikki selveni...

kasetti [29.04.2004 16:22:41]

#

Juu kiitos Pekka Mansikalle näin aluksi. Aluksi oli hankala hoksata kaikkea kun sama muuttuja oli enkuksi ($page) ja suomeksi ($sivu).

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta