Stránkovanie pomocou php a mysql

Programovacie jazyky, rady, poradňa...
.:M4jco:.
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 442
Registrovaný: 01 máj 2007, 13:07
Bydlisko: Bassline lover
Kontaktovať používateľa:

Stránkovanie pomocou php a mysql

Príspevok od používateľa .:M4jco:. »

Zdravím

Mám jeden problém so stránkovaním. Hladal som na internete rozne strankovania v phpčku ale žiadny z nich mi nefunguje. Chyba spočíva v tom že aj keď všetko nadstavím tak ako by to aj malo byť teda pripojenie k databazy, select z DB tak sa mi zobrazi na uvodnej stránke aj tak tolko isto článkov ako aj predtým ale odkazy pre dalšie stránky su tam a dokonca funguju, ale proste zakaždým sa zobrazia VŠETKY články a nielen napríklad 4 alebo 5.

Tu je jeden z mnoha príkladov ktorý funguje asi najlepšie zo všetkých. Pokiaľ je napríklad 20 článkov napísanych, a mám nastavené že na stranku sa ma zobraziť 5 výsledkov, tak sa vygenerujú 4 stránky, ašak pokial na hociktorú z nich kliknem tak zakaždým sa zobrazia všetky články, a nie tých 5 atd.

Kód: Vybrať všetko

<?php
$host = "----";
$user = "---"; 
$pass = "---";
$db = "---";
mysql_connect($host,$user,$pass) or die("ERROR:".mysql_error());
mysql_select_db($db) or die("ERROR DB:".mysql_error()); 
$max = 5;
$p = $_GET['p'];
if(empty($p))
{
$p = 1;
}
$limits = ($p - 1) * $max; 

if(isset($_GET['act']) && $_GET['act'] == "view")
{
$id = $_GET['id'];
$sql = mysql_query("SELECT * FROM entries WHERE id = '$id'");
while($r = mysql_fetch_array($sql))
{
$title = $r['title'];
$story = $r['story'];
$author = $r['author'];
echo "<div><p>$title</p><p>$author</p><p>$story</p></div>";
}
}else{

$sql = mysql_query("SELECT * FROM entries LIMIT ".$limits.",$max") or die(mysql_error());

$totalres = mysql_result(mysql_query("SELECT COUNT(id) AS tot FROM entries"),0);	

$totalpages = ceil($totalres / $max); 
echo "</tr></table>";
for($i = 1; $i <= $totalpages; $i++){ 

echo "<a href='index.php?p=$i'>$i</a>|";
}
}
?>
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

sry nechcelo sa mi to studovat .. takto nejak to mam pouzite kdesi ja

Kód: Vybrať všetko

//urcenie strany
 if (IsSet($_REQUEST["page"])) $page=$_REQUEST["page"];
 else  $page=1;
 if ($page=='') $page=1;

 $onpage = 12;  // pocet vypisov na stranku

 $query="SELECT COUNT(*) as pocet FROM clanky";
 $result = mysql_query($query)
             or die("Query nepreslo1\n");
 $line=mysql_fetch_array($result,MYSQL_BOTH);
 $mcount=$line["pocet"];

 if ($result) mysql_free_result($result);

     if ( (($page-1)*$onpage) > $mcount) $page=1;
     if ($page<1) $page=1;

//zobrazenie strankovania
    if ($page>1) echo '<a href="./index.php?kat=7&page='.($page-1).'"><<<</a>';
             else echo '<<<';

     echo '&nbsp;&nbsp;&nbsp;'.$page.'/'.ceil($mcount/$onpage).'&nbsp;&nbsp;&nbsp;';

     if ($mcount>($page*$onpage))
                echo '<a href="./index.php?kat=7&page='.($page+1).'">>>></a>';
           else echo '>>>';

//zobrazenie samotnych prvkov
 $query='SELECT * FROM `clanky` ORDER BY id DESC LIMIT '.(($page-1)*$onpage).','.$onpage;
 $result = mysql_query($query)
             or die("Query nepreslo2\n");

 while($msg=mysql_fetch_array($result,MYSQL_ASSOC))
 {
    //vyppis prvkov
 }
.:M4jco:.
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 442
Registrovaný: 01 máj 2007, 13:07
Bydlisko: Bassline lover
Kontaktovať používateľa:

Príspevok od používateľa .:M4jco:. »

Skúsil som to ale výsledok je furt rovnaký. Stránkovanie sa síce zobrazí ale aj pokial si v tom tvojom skripte nadstavím aby sa mi na stranu zobrazilo napríklad 5 vyýsledkov, tak sa aj tak zobrazia všetky. A na každej strane sa zobrazia taktiež všetky.

Pokial by sa ti chcelo trochu pomôcť mi s tým, tak tu je komplet index.

Kód: Vybrať všetko

http://www.test.m4jco.net/index.txt
Možno niekto poradí, lebo stránkovanie som odkladal dlho lebo som si myslel že to je lahke, ale ako vidim tak asi nie :?
gwixt
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3912
Registrovaný: 24 sep 2005, 16:50
Bydlisko: Trash-Can

Príspevok od používateľa gwixt »

nie je mozne aby ti tento select ti vybral vsetko z tabulky

Kód: Vybrať všetko

$query='SELECT * FROM `clanky` ORDER BY id DESC LIMIT '.(($page-1)*$onpage).','.$onpage;
niekde si musel spravit nejaku chybu

(teda je to mozne ak mas v tabulke menej riadkov ako je pocet vypisov na stranu)

EDIT:
vsimni si hlavne tieto riadky :)

Kód: Vybrať všetko

 while($msg=mysql_fetch_array($result,MYSQL_ASSOC))
 {
    //vypis prvkov
 } 
tam musis vypisovat co chces strankovat ... nie to len skopirovat a nechat prazdne ;)
.:M4jco:.
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 442
Registrovaný: 01 máj 2007, 13:07
Bydlisko: Bassline lover
Kontaktovať používateľa:

Príspevok od používateľa .:M4jco:. »

Funguje to :smt112 díky ti moc. Chybu som robil ja, pretože som mal viacej premenných ktoré sa nazývali takisto ako tie z tvojho skriptu. Už to fachčí a dakujem ti :wink:
Napísať odpoveď