Poslao: 05 Dec 2010 13:41
|
offline
- Pridružio: 13 Mar 2009
- Poruke: 229
|
Pozdrav svima. Ima neko ideju zasto ovaj skript ne odradi svoj posao kako treba. Tacnije dekrement $page-- ne radi. Sve radi ok osim toga. Jedino sto bi jos moglo da se resi je to da se na pocetku ne prikazuje uopste link "Prethodna".
$page = isset($_GET['page'])?intval($_GET['page']):0;
$per_page = 2;
$start = $page?$page*$per_page:0;
$next_link = '<a href="?page='.$page++.'">Prethodna</a>';
$prev_link = '<a href="?page='.$page--.'">Sljedeća</a>';
$sql="SELECT * FROM diplomci order by ID_DIPLOMCA asc LIMIT $start, $per_page;";
$result=mysql_query($sql);
$i=0;
while($red=mysql_fetch_array($result))
{
echo'<table border="0" width ="450"><tr align="left" ><td bgcolor= "#606D84" width="8%" align="center"><FONT SIZE="3" color="#FFFFFF"><b>'.++$i.'.</b></FONT></td><td align="right"><FONT SIZE="3"><a href="profil.php?idDiplomca='.$red['ID_DIPLOMCA'].'">Pogledaj profil</FONT></a></td><tr></table>';?>
<?php echo'<b>Ime: </b>'; echo '<b>'; echo $red['IME']; echo'</b>' ?> <br><?php echo '<b>Prezime: </b>'; echo '<b>'; echo $red['PREZIME']; echo'</b>'?><br><?php echo '<b>Odsjek: </b>'; echo '<b>'; echo $red['SMIJER']; echo'</b>'?><br> <?php echo '<b>Status: </b>'; echo '<b>'; echo $red['STATUS']; echo'</b>';?><hr>
<?php
}
//Broj redova u bazi
$count_sql = 'SELECT COUNT(*) FROM diplomci';
$count_result = mysql_query($count_sql);
$count = mysql_fetch_row($count_result);
$brojRedova = $count[0];
mysql_close();
$brojStrana=round($brojRedova/$per_page);
echo 'Ukupno ima '.$brojStrana. ' Strana';
if($page<$brojStrana-1)
{
echo "<div>$next_link $page $prev_link</div>";
}
else
{
echo "<div>$next_link $page</div>";
}
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 08 Dec 2010 09:12
|
offline
- eevan79
![Male](https://www.mycity.rs/templates/simplified/images2/user-sex.gif)
- Građanin
- Pridružio: 21 Apr 2007
- Poruke: 98
|
Napisano: 08 Dec 2010 9:06
Zašto komplikovati? Napravi fajl paginacija.php i unesi sledeći kod:
$rowsperpage = $result_per_page;
$totalpages = ceil($numrows / $rowsperpage);
if (isset($_GET['page']) && is_numeric($_GET['page'])) {
$currentpage = (int)$_GET['page'];
} else {
$currentpage = 1;
}
if ($currentpage > $totalpages) {
$currentpage = $totalpages;
}
if ($currentpage < 1) {
$currentpage = 1;
}
if ($totalpages <= 1) {
$totalpages = 1;
}
$offset = ($currentpage - 1) * $rowsperpage;
if (isset($_GET['page']) AND is_numeric($_GET['page'])){
$current_page = ($_GET['page']);
}
if (!isset($current_page)) {
$current_page = 1;
}
$range = $max_links;
if ($range >= $totalpages) {
$range = $totalpages;
}
if ($current_page > $totalpages) {$current_page = $totalpages;}
echo '<table><tr><td style="padding-right:24px;" align="right" class="pagination"> <b>Strana ' . $current_page . ' od ' . $totalpages . '</b> [' . $numrows . ' ukupno ] ';
if ($currentpage > 1) {
echo " <a title= 'Prva strana' href='{$_SERVER['PHP_SELF']}?page=1'><<</a> ";
$prevpage = $currentpage - 1;
echo " <a title='Poslednja strana' href='{$_SERVER['PHP_SELF']}?page=$prevpage'><</a> ";
}
for ($x = ($currentpage - $range); $x < (($currentpage + $range) + 1); $x++) {
if (($x > 0) && ($x <= $totalpages)) {
if ($x == $currentpage) {
echo " [<b>$x</b>] ";
} else {
echo " <a href='{$_SERVER['PHP_SELF']}?page=$x'>$x</a> ";
}
}
}
if ($currentpage != $totalpages) {
$nextpage = $currentpage + 1;
echo " <a href='{$_SERVER['PHP_SELF']}?page=$nextpage'>></a> ";
echo " <a href='{$_SERVER['PHP_SELF']}?page=$totalpages'>>></a> ";
}
echo '</td></tr></table>';
?>
Zatim na samom početku (pre glavnog upita) kucaj:
$sql= 'SELECT COUNT(*) FROM diplomci LIMIT 1';
$result = mysql_query($sql);
$r = mysql_fetch_row($result);
$numrows = $r[0];
$result_per_page = 20; // 20 rezultata po strani
$max_links = 5; //Broj linkova pre i posle trenutne stranice
I glavni upit treba biti ovakav:
$sql="SELECT * FROM diplomci order by ID_DIPLOMCA asc LIMIT $offset, $rowsperpage;";
I samo "pozoveš" paginaciju gde hoćeš sa
include('paginacija.php');
P.S. Ne zaboravi da filtriraš nekom svojom metodom $_GET
Dopuna: 08 Dec 2010 9:12
Dodatak:
Ako hoćeš da stilizuješ paginaciju dodaj ovo u .css (već se koristi klasa class="pagination")
.pagination {
padding: 0px;
margin: 0px;
text-align:right;
}
.pagination a {
padding: 2px 3px 2px 3px;
margin: 1px;
border: 1px solid #AAAADD;
text-decoration: none; /* no underline */
color: #fff;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
}
.pagination a:hover, .pagination a:active {
border: 1px solid #105289;
color: #FFAA00;
}
.pagination span.current {
padding: 2px 5px 2px 5px;
margin: 2px;
border: 1px solid #105289;
font-weight: bold;
background-color: #105289;
color: #FFF;
}
.pagination span.disabled {
padding: 2px 5px 2px 5px;
margin: 2px;
border: 1px solid #EEE;
color: #DDD;
}
td.pagination {height: 24px;}
Eto...
|
|
|
|
|
Poslao: 11 Dec 2010 02:20
|
offline
- Rastafarii
![Male](https://www.mycity.rs/templates/simplified/images2/user-sex.gif)
- Moderator foruma
- Pridružio: 22 Mar 2006
- Poruke: 3760
- Gde živiš: 127.0.0.1
|
Za nesto sto nije komplikovano, poprilicno dugacak kod
Probaj ovako nesto:
<?php
function paging($rows,$per_page=10) {
$_GET['page'] = $_GET['page'] ? intval($_GET['page']) : 1;
$p = ceil($rows/$per_page);
if ($p > 1) {
if ($_GET['page'] > 1) {
echo "<a href='".$_SERVER['PHP_SELF']."?page=".(intval($_GET['page'])-1)."'><</a>\n";
}
echo "<a href='".$_SERVER['PHP_SELF']."?page=1'>1</a>\n";
$start = max(2,min($p-4,$_GET['page']-2));
$end = min($p-1,max($start+3,$_GET['page']+2));
for ($i=$start;$i<=$end;$i++) {
if (($start > 2) and ($start == $i)) {
echo "... ";
}
echo "<a href='".$_SERVER['PHP_SELF']."?page=".$i."'>".$i."</a>\n";
if (($end < $p - 1) and ($i == $end)) {
echo "... ";
}
}
echo "<a href='".$_SERVER['PHP_SELF']."?page=".$p."'>".$p."</a>\n";
if ($_GET['page'] < $p) {
echo "<a href='".$_SERVER['PHP_SELF']."?page=".(intval($_GET['page'])+1)."'>></a>\n";
}
}
}
?>
a prikazujes sa:
<?php
$rows = mysql_num_rows(mysql_query("SELECT ID_DIPLOMCA FROM diplomci_order"));
paging($rows,20);
?>
A upit za prikazivanje:
<?php
$limit = $_GET['page'] ? ((intval($_GET['page'])-1)*20).",20" : "0,20";
$q = mysql_query("SELECT * FROM diplomci_order ORDER BY ID_DIPLOMCA ASC LIMIT ".$limit);
?>
|
|
|
|
Poslao: 15 Dec 2010 11:12
|
offline
- eevan79
![Male](https://www.mycity.rs/templates/simplified/images2/user-sex.gif)
- Građanin
- Pridružio: 21 Apr 2007
- Poruke: 98
|
Zanimljiva paginacija. Samo ovaj kod za dobijanje rezultata:
$rows = mysql_num_rows(mysql_query("SELECT ID_DIPLOMCA FROM diplomci_order"));
treba da bude:
$sql= 'SELECT COUNT(ID_DIPLOMCA) FROM diplomci LIMIT 1';
To pravi bitnu razliku i daje bolje performanse.
Ipak je ova moja skripta mnogo fleksibilnija. Ima i fin offset (levo i desno) tako da trenutna strana uvek stoji u sredini. Lako se može napraviti AJAX paginacija sa ovom skriptom.
Evo primera (gornji linkovi) :
openstats.iz.rs/index2.php
|
|
|
|
Poslao: 15 Dec 2010 12:37
|
offline
- Rastafarii
![Male](https://www.mycity.rs/templates/simplified/images2/user-sex.gif)
- Moderator foruma
- Pridružio: 22 Mar 2006
- Poruke: 3760
- Gde živiš: 127.0.0.1
|
eevan79 ::Ipak je ova moja skripta mnogo fleksibilnija. Ima i fin offset (levo i desno) tako da trenutna strana uvek stoji u sredini. Lako se može napraviti AJAX paginacija sa ovom skriptom.
Pokreni pa komentarisi i moja ima takav prikaz, plus sto prikazuje samo 7 (ili manje) strana: prvu, dve ispred, onu na kojoj si, dve iza, i zadnju.
|
|
|
|
Poslao: 15 Dec 2010 19:35
|
offline
- eevan79
![Male](https://www.mycity.rs/templates/simplified/images2/user-sex.gif)
- Građanin
- Pridružio: 21 Apr 2007
- Poruke: 98
|
Ups, sry onda. Gledao sam samo kod na brzinu.
Mogao si da dodaš na primer još jednu varijablu kod paging funkcije. Na primer broj linkova pre i posle izabrane stranice...kao kod moje skripte.
function paging($rows,$per_page=10, $max_links = 5)
i samo zameniš kod za $start i $end sa $max_links.
Pr:
<< < 1 2 [3] 4 5 6 7 8 > >>
|
|
|
|
Poslao: 27 Dec 2010 20:44
|
offline
- susok
![Male](https://www.mycity.rs/templates/simplified/images2/user-sex.gif)
- Novi MyCity građanin
- Pridružio: 03 Sep 2009
- Poruke: 23
- Gde živiš: BH
|
Rastafarii ::Za nesto sto nije komplikovano, poprilicno dugacak kod
Probaj ovako nesto:
<?php
function paging($rows,$per_page=10) {
$_GET['page'] = $_GET['page'] ? intval($_GET['page']) : 1;
$p = ceil($rows/$per_page);
if ($p > 1) {
if ($_GET['page'] > 1) {
echo "<a href='".$_SERVER['PHP_SELF']."?page=".(intval($_GET['page'])-1)."'><</a>\n";
}
echo "<a href='".$_SERVER['PHP_SELF']."?page=1'>1</a>\n";
$start = max(2,min($p-4,$_GET['page']-2));
$end = min($p-1,max($start+3,$_GET['page']+2));
for ($i=$start;$i<=$end;$i++) {
if (($start > 2) and ($start == $i)) {
echo "... ";
}
echo "<a href='".$_SERVER['PHP_SELF']."?page=".$i."'>".$i."</a>\n";
if (($end < $p - 1) and ($i == $end)) {
echo "... ";
}
}
echo "<a href='".$_SERVER['PHP_SELF']."?page=".$p."'>".$p."</a>\n";
if ($_GET['page'] < $p) {
echo "<a href='".$_SERVER['PHP_SELF']."?page=".(intval($_GET['page'])+1)."'>></a>\n";
}
}
}
?>
a prikazujes sa:
<?php
$rows = mysql_num_rows(mysql_query("SELECT ID_DIPLOMCA FROM diplomci_order"));
paging($rows,20);
?>
A upit za prikazivanje:
<?php
$limit = $_GET['page'] ? ((intval($_GET['page'])-1)*20).",20" : "0,20";
$q = mysql_query("SELECT * FROM diplomci_order ORDER BY ID_DIPLOMCA ASC LIMIT ".$limit);
?>
Pozdrav!
Dali mi možete reći kako da napravim da kad u linku paginacije ukucam localhost/paginacija.php?page=0
da mi neizbacuje grešku
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-2,2' at line 1
i da zaštitim od sql injectiona
Hvala!
|
|
|
|
Poslao: 23 Jan 2014 13:36
|
offline
- zapclink
- Novi MyCity građanin
- Pridružio: 23 Jan 2014
- Poruke: 1
|
Postovani forumasi, ima li neko da mi pomogne oko ove Paginacije. Rijec je o modulu u koji treba da ubacim kod za paginaciju. Nisam siguran gdje grijesim pa moze li pomoc od iskusnih. Treba mi ovo,
<< 1234567891011>>
Kod je
<?php
/**
* New Books Extended module for BookLibrary
* @version 2.2 FREE
* @license gnu.org/copyleft/gpl.html GNU/GPL
* mod_booklibrary_newbooks_ext
* copyright Andrey Kvasnevskiy-OrdaSoft(akbet@mail.ru), 2011;
*/
/** ensure this file is being included by a parent file */
defined( '_JEXEC' ) or die( 'Restricted access' );
$database = JFactory::getDBO();
$my = JFactory::getUser();
$GLOBALS['database'] = $database;
$GLOBALS['my']=$my;
$acl = JFactory::getACL();
$GLOBALS['acl'] = $acl;
?>
<link rel="stylesheet" type="text/css" href="administrator/components/com_booklibrary/includes/booklibrary.css">
<?php
if( !function_exists( 'sefreltoabs')) {
function sefRelToAbs( $value ) {
//Need check!!!
// Replace all & with & as the router doesn't understand &
$url = str_replace('&', '&', $value);
if(substr(strtolower($url),0,9) != "index.php") return $url;
$uri = JURI::getInstance();
$prefix = $uri->toString(array('scheme', 'host', 'port'));
return $prefix.JRoute::_($url);
}
}
$ItemId_tmp_from_params=$params->get('ItemId');
$database->setQuery("SELECT id FROM #__menu WHERE menutype like '%menu%' AND link LIKE '%index.php?option=com_booklibrary%' ");
$ItemId_tmp_from_db = $database->loadResult();
if($ItemId_tmp_from_params!=''){
$ItemId_tmp=$ItemId_tmp_from_params;
}
else{
$ItemId_tmp=$ItemId_tmp_from_db;
}
$itemsPerPage = 10;
$moduleclass_sfx = $params->get('moduleclass_sfx', '');
$count = intval($params->get('count',0));
$description = intval($params->get('description',1));
$g_words = $params->get('words','');
$showtitle = $params->get ('showtitle', '');
$showauthor = $params->get ('showauthor', '');
$showcover = $params->get ('showcover', 1);
$displaytype = $params->get ('displaytype', 0);
$coversize = $params->get ('coversize', '127');
$sortnewby = $params->get ('sortnewby', 0);
switch($sortnewby) {
case 0:
$sql_orderby_query = "date"; // Last Edited
break;
case 1:
$sql_orderby_query = "id"; // Last Added
break;
}
require_once ( JPATH_SITE . "/administrator/components/com_booklibrary/functions.php" );
$s = getWhereUsergroupsString("c");
$selectstring = "SELECT a.*,bc.catid FROM #__booklibrary AS a
\nLEFT JOIN #__booklibrary_categories AS bc ON bc.bookid=a.id
\nLEFT JOIN #__booklibrary_main_categories AS c ON c.id=bc.catid
\nWHERE a.published=1 AND ({$s}) AND c.published='1' ".
"\nGROUP BY a.id
\nORDER BY ".$sql_orderby_query." DESC LIMIT 0,$count;";
$database->setQuery($selectstring);
$rows = $database->loadObjectList();
?>
<?php if($moduleclass_sfx!='') {?>
<div class="<?php echo $moduleclass_sfx;?>"> <?php }?>
<table cellpadding="1" cellspacing="1" class="basictable" width="30%">
<?php
if($displaytype==1) { // Display Horizontal
?>
<tr valign="top">
<?php
}
?>
<?php foreach ($rows as $row) {
$comment = $row->comment;
$prevwords = count(explode(" ",$comment));
if(trim($g_words == "" )) $words = $prevwords;
else $words = intval($g_words);
$text = implode(" ", array_slice(explode(" ",$comment), 0, $words));
if (count(explode(" ",$text))<$prevwords){
$text .= "";
}
$link1 = "index.php?option=com_booklibrary&task=view&Itemid=".$ItemId_tmp."&id=".$row->id."&catid=".$row->catid;
//for local images
$imageURL = $row->imageURL;
if($imageURL != '' && substr($imageURL,0,4) != "http")
{
$imageURL = JURI::base() . $row->imageURL;;
}
if($imageURL == ''){
$imageURL = "./components/com_booklibrary/images/no-img_eng.gif";
}
if($displaytype==1) { // Display Horizontal
if($showcover==1) {
?>
<noscript>Javascript is required to use Book Library <a href="http://ordasoft.com/Book-Library/booklibrary-versions-feature-comparison.html">Book Library - create book library, ebook, book collection </a>,
<a href="http://ordasoft.com/location-map.html">Book library book sowftware for Joomla</a></noscript>
<td>
<a href="<?php echo sefRelToAbs( $link1 ); ?>" target="_self">
<img src="<?php echo $imageURL; ?>" hspace="15" vspace="2" border="0" height="<?php echo $coversize; ?>" /></a>
</td>
<?php
} //End Show Image If
?>
<td valign="top">
<p><strong><?php
if ($showtitle == "1") {
echo $row->title;
} else {
print " ";
}
?></strong><br/>By <?php
if ($showauthor == "1") {
echo $row->authors;
} else {
print " ";
}
?><p><?php
//for 1.6
echo switchDescription ($text, $description);
// --
?></p>
<p><a class="readon" href="<?php echo sefRelToAbs( $link1 ); ?>" target="_self">Detaljnije...</a></p>
</td>
<?php
} else {
//Display Vertical
?>
<tr valign="top">
<td>
<a href="<?php echo sefRelToAbs( $link1 ); ?>" target="_self">
<?php if($showcover==1) { ?>
<img src="<?php echo $imageURL; ?>" hspace="2" vspace="2" border="0" height="<?php echo $coversize; ?>" /></a>
<?php } //End Show Image If?>
<?php
if ($showtitle == "1") {
echo $row->title;
} else {
echo " ";
}
?>
<?php
if ($showauthor == "1") {
echo "<br />".$row->authors;
} else {
echo " ";
}
?>
<br />
<p><?php echo switchDescription ($text, $description); //for 1.6 ?></p>
<p><a class="readon" href="<?php echo sefRelToAbs( $link1 ); ?>" target="_self">Detaljnije...</a></p>
</td>
</tr>
<tr> <td> </td>
</tr>
<?php
} //End Display If
}
?>
<?php
if($displaytype==1) { // Display Horizontal
?>
</tr>
<?php
}
?>
</table>
<?php if($moduleclass_sfx!='') {?>
</div> <?php }?>
<?php
function switchDescription ($text, $description) {
// for 1.6
switch ($description) {
case 1:
$text = substr ($text, 0, 100); $text .= '...';
break;
case 2:
$text = substr ($text, 0, 500); $text .= '...';
break;
case 3:
break;
case 4:
$text = '';
break;
}
return $text;
}
//////
if ($strukupno > $trenutnastr && $trenutnastr <= 1){
echo ("Strana   ". $trenutnastr ."  od   {$strukupno}   <a href=\"?pgi={$naredna}\">SLEDECA-></a>   <a href=\"?pgi={$strukupno}\">POSLEDNJA</a>");
}
// ako nemamo dovoljno unosa u bazi da bi ih podelili na stranice, u paginaciji ćemo
//prikazati samo to da postoji jedna jedina strana, a možete jednostavno
//obrisati taj deo i ostaviti echo (""); da ne prikazujete ništa.
elseif ($trenutnastr == $strukupno && $strukupno == 1){
echo ("Strana   ". $trenutnastr ."  od   {$strukupno}   ");
}
// ako nismo ni na prvoj, a ni na poslednjoj strani prikazaćemo linkove
//i za prethodnu i za narednu stranu
elseif ($strukupno > $trenutnastr && $trenutnastr >= 1){
echo ("<a href=\"?pgi=1\">PRVA</a>   <a href=\"?pgi={$prethodna}\"><-PRETHODNA</a>  Strana   ". $trenutnastr ."  od   {$strukupno}   <a href=\"?pgi={$naredna}\">SLEDEĆA-></a>   <a href=\"?pgi={$strukupno}\">POSLEDNJA</a>");
}
// ako se nalazimo na poslednjoj strani, u paginaciji će biti prikazan samo
//link ka prethodnoj strani, jer naredna ne postoji
elseif ($strukupno == $trenutnastr){
echo ("<a href=\"?pgi=1\">PRVA</a>   <a href=\"?pgi={$prethodna}\"><-PRETHODNA</a>  Strana   ". $trenutnastr ."  od   {$strukupno}   ");
}
|
|
|
|