Hogyan tudnám megoldani ezt a php lapozót?
Kezdő vagyok php témában, ezért szeretném a segítségeteket kérni. A webserver kft pár éve csinált egy blog tutorialt, youtube-on fent a video. Ezt csináltam meg, ill. próbálgatom.
Készített hozzá lapozót is (ezt kihagytam), de szeretném hogy másmilyen legyen.
A főoldal.php tartalma ami megjeleníti a postokat:
<?php
if (!isset($blogbanvagyok))
{
die('ne nyisd meg így az oldalt!');
}
$leker = mysql_query('SELECT * FROM postok ORDER BY datum DESC');
while ($sor = mysql_fetch_array($leker))
{
echo '<div class="bejegyzes">
<a href="index.php?bejegyzes='.$sor['ID'].'" class="cim">'.$sor['cim'].'</a>
<p>'.$sor['szoveg'].'</p>';
if ($sor['szoveg_plusz'])
{
echo '<div align="right">
<a href="index.php?bejegyzes='.$sor['ID'].'" class="tovabblink">Tovább a teljes bejegyzésre</a>
</div>';
}
echo '</div>';
}
Ez így ebben a formában kiírja az összes bejegyzést egy oldalra.
Úgy szeretném, hogy 2 gombja legyen alul, egy következő /az oldal jobb oldalára/ és egy előző gomb /az oldal bal oldalára/, ill. hogy egy bejegyzés jelenjen meg az oldalon mindig ami az aktuális. Próbálgattam már sokféleképp, de sajnos nem jöttem rá hogy kellene.
Ennyit szeretnék, remélem tudtok segíteni!
A válaszokat előre is köszönöm!
... ORDER BY datum DESC után meg kell adnod a limit értéket, amit pl. egy változóban adsz át pl. $page.
pl.:
$page = ((is_int($_REQUEST['page']) && $_REQUEST['page']>0)?($_REQUEST['page']):(1));
$pLimit = 20; /* Ennyi sor oldalanként */
$leker = mysql_query('SELECT * FROM postok ORDER BY datum DESC LIMIT '.($page-1*$pLimit).', '.($pLimit).');
Ahhoz hogy lapozó gombokat is elhelyez, le kell kérned mennyi sor van a táblában, majd elosztanod a megjelenített tartalommal, és fel kerekített érték határozza meg, hogy hány oldal lesz.
$leker = mysql_query('SELECT * FROM postok ORDER BY datum DESC');
$pNum = ceil(mysql_num_rows($leker)/$pLimit);
echo' <strong>Oldalak:</strong> ';
for($a=1;$a<=$pNum;$a++) {
echo' <a href="index.php?page='.($a).'">'.($a).'.</a> ';
}
Elöző következő az előbbi alapján:
if($page>1){ echo' <a href="?page='.($page-1).'">« Előző</a> '; }
if($pNum>$page){ echo' <a href="?page='.($page+1).'">Következő »</a> '; }
Felteszem máshogy a kérdést.
<?php
if (!isset($blogbanvagyok))
{
die('nem szabad!');
}
$bejegyzesekszama = mysql_query('SELECT COUNT(*) AS darab FROM postok');
$bejegyzesekszama = mysql_fetch_array($bejegyzesekszama);
$darab = $bejegyzesekszama['darab'];
$oldalakszama = ceil($darab / 1);
$oldal = (int)$_GET['oldal'];
if ($oldal<1)
{
$oldal = 1;
}
$innen = ($oldal-1)*1;
$leker = mysql_query('SELECT * FROM postok ORDER BY datum DESC LIMIT '.$innen.',1');
while ($sor = mysql_fetch_array($leker))
{
echo '<div class="bejegyzes">
<a href="index.php?bejegyzes='.$sor['ID'].'" class="cim">'.$sor['cim'].'</a>
<p>'.$sor['szoveg'].'</p>';
if ($sor['szoveg_plusz'])
{
echo '<div align="right">
<a href="index.php?bejegyzes='.$sor['ID'].'" class="tovabblink">Tovább a teljes bejegyzésre</a>
</div>';
}
echo '</div>';
}
for ($i = 1;$i<=$oldalakszama;$i++)
{
if($i==$oldal)
{
echo '<b>'.$i.'</b> ';
}
else
echo '<a href="index.php?oldal='.$i.'">'.$i.'</a> ';
}
Itt a lapozó ami a tutorialban volt. Ezzel elértem, hogy egy bejegyzés jelenjen meg ami az aktuális, viszont alul annyi link jelenik meg ahány bejegyzés van az adatbázisban. (tehát ha öt van akkor így jelenik meg: 1 2 3 4 5) Annyit szeretnék, hogy alul csak egy Előző és egy Következő hivatkozás legyen.
Remélem tud valaki segíteni, előre is köszönöm!
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!