[ davor4 @ 28.04.2007. 21:22 ] @
| na stranici imam dva mjesta na kojima bi trebao izvesti onu foru sa < 1 2 3 4 > stranica (mislim da se to zove php paging).
Znam to napraviti tako da uzmem broj recorda u bazi, podijelim ih sa željenim brojem ispisa itd., sve to pomoću GET metode.
Ali sada na istoj stranici trebam izvesti to na dva različita primjera, pa bio želio zaobići rješenje preko GET metode, tj. zanima me postoji li neka jednostavnija metoda? |
[ Miroslav Ćurčić @ 28.04.2007. 22:20 ] @
Ne, preko GET je najjednostavnija metoda.
Tebi treba da nečim "prefiksuješ" nazive promenljivih koje ćeš koristiti za navigaciju, različito za svaki primer na stranici.
Znači umesto da koristiš "Page=1" koristi "P1Page=1" za prvi primer a "P2Page=1" za drugi.
[ davor4 @ 28.04.2007. 22:32 ] @
ako je get najjednostavnija metoda radit ću preko nje.
razumijem što mi želiš reći - ako imam dvije iste varijable page onda će mi se poništavati, to znam.
nego ne znam ako pozovem u prvom dijelu 5. stranicu, a zatim u drugom dijelu 3. stranicu, pa želim u prvom dijelu pozvati 4. stranicu, kako napraviti da mi se u address baru ne poništi varijabla kojom kontroliram drugi dio, tj. tada bi mi se drugi dio poništio
evo ako bude jasnije
Code:
korak | prvi dio | drugi dio
1korak | p1 = 5 |
1return| 5.stranica |
2korak | ------- | p2 = 3
2return| 5. stranica | 3. stranica |
3korak | p1 = 4 | ------- |
3return| 4. stranica | 3. stranica |
kod koraka 3, zapravo i 2 da li da koristim $_SERVER['REQUEST_URI']; da mi ne poništi varijablu p2 kojom kontroliram sadržaj drugog dijela ?
[ Miroslav Ćurčić @ 28.04.2007. 23:47 ] @
Tako što uvek prenosiš varijable iz oba primera.
Znači "kućice" u primeru 1 moraju prenositi zatečeno stanje iz primera 2 i obrnuto,
a promenljiva im je vrednost samo za svoje parametre.
[ cinderella1264 @ 31.01.2009. 21:27 ] @
Jel ima negde neki prost kod za stranicenje, da ima dugmad "prethodna strana" i "sledeca strana" i da ima recimo po 5 prikaza na strani?
Ako neko zna neka pomogne, please...
Hvala unapred!
[ Nikola Poša @ 01.02.2009. 09:42 ] @
Mozhesh da probash ovu klasu, odnosno, set klasa, koje sam napravio...
[ micke037 @ 31.03.2009. 15:51 ] @
Da li je moguce napraviti paging koji koristi FILE umest DB? Kako?
[ dakipro @ 31.03.2009. 18:30 ] @
Pa moze, isto kao sto bi i sa bazom, logika je potpuno identicna sto se paginacije tice, isto izbrojis ukupno, podelis i prikazes. Samo malo manual za funkcije i vidi sta ti treba, naravno, sve usput, krenes da pises i vidis kako ide i sta treba.
[ micke037 @ 04.04.2009. 00:15 ] @
--0-2125198107-1238800521=:32607
Content-Type: text/html; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
Nasao sam skriptu koja radi bez problema ali ja hocu da mi se iscitavanje baze vrsi od poselednjeg a ne od prvog reda. Udaram glavu vec dva dana i ne mogu da nadjem kako to da promenim ako neko ima vremena evo koda
OVO JE FILE USGE.PHP
<?php
//Include the PS_Pagination class
include('ps_pagination.php');
//Connect to mysql db
$conn = mysql_connect('localhost','root','');
mysql_select_db('Stefan',$conn);
$sql = 'SELECT*FROM SobeStanovi';
$result = mysql_query("SELECT * FROM SobeStanovi", $conn);
$num_rows = mysql_num_rows($result);
echo "$num_rows";
//Create a PS_Pagination object
$pager = new PS_Pagination($conn,$sql,10,5);
//The paginate() function returns a mysql result set
$rs = $pager->paginate();
for ($S=$num_rows; $S>=1; $S--) {
$row = mysql_fetch_assoc($rs);
echo('<div id="CeoOkvir">'. '<div id="Datum">' . $row["Datum"] . '</div>' .
'<div class="Oglas">' . $row["Oglas"] . '</div>' . '<div class="Ostalo">' . 'Kontakt: ' .
$row["Ime"] . ', Telefon: ' . $row["Tel_1"] . ' (' . $row["Tel_2"] . ') ' . 'E-mail: ' .
$row["Email"] . '</div>' . '</div>');
};
echo ('<center>');
//Display the link to first page: First
echo $pager->renderFirst();
//Display the link to previous page: <<
echo $pager->renderPrev();
//Display page links: 1 2 3
echo $pager->renderNav();
//Display the link to next page: >>
echo $pager->renderNext();
//Display the link to last page: Last
echo $pager->renderLast();
echo ('</center>');
?>
OVO JE FILE ps_pagination.php
<?php
class PS_Pagination {
var $php_self;
var $rows_per_page; //Number of records to display per page
var $total_rows; //Total number of rows returned by the query
var $links_per_page; //Number of links to display per page
var $sql;
var $debug = false;
var $conn;
var $page;
var $max_pages;
var $offset;
/**
* Constructor
*
* @param resource $connection Mysql connection link
* @param string $sql SQL query to paginate. Example : SELECT * FROM users
* @param integer $rows_per_page Number of records to display per page. Defaults to 10
* @param integer $links_per_page Number of links to display per page. Defaults to 5
*/
function PS_Pagination($connection, $sql, $rows_per_page = 10, $links_per_page = 5) {
$this->conn = $connection;
$this->sql = $sql;
$this->rows_per_page = $rows_per_page;
$this->links_per_page = $links_per_page;
$this->php_self = htmlspecialchars($_SERVER['PHP_SELF']);
if(isset($_GET['page'])) {
$this->page = intval($_GET['page']);
}
}
/**
* Executes the SQL query and initializes internal variables
*
* @access public
* @return resource
*/
function paginate() {
if(!$this->conn) {
if($this->debug) echo "MySQL connection missing<br />";
return false;
}
$all_rs = @mysql_query($this->sql);
if(!$all_rs) {
if($this->debug) echo "SQL query failed. Check your query.<br />";
return false;
}
$this->total_rows = mysql_num_rows($all_rs);
$brojREDOVA = $this->total_rows;
@mysql_close($all_rs);
//ovde se broj redova deli sa brojem redova po strani da bi se odredio br strana za prikazivanje
$this->max_pages = ceil($this->total_rows/$this->rows_per_page);
//Check the page value just in case someone is trying to input an aribitrary value
if($this->page > $this->max_pages || $this->page <= 0) {
$this->page = 1;
}
//Calculate Offset
$this->offset = $this->rows_per_page * ($this->page-1);
//Fetch the required result set
$rs = @mysql_query($this->sql." LIMIT {$this->offset}, {$this->rows_per_page}");
if(!$rs) {
if($this->debug) echo "Pagination query failed. Check your query.<br />";
return false;
}
return $rs;
}
/**
* Display the link to the first page
*
* @access public
* @param string $tag Text string to be displayed as the link. Defaults to 'First'
* @return string
*/
function renderFirst($tag='First') {
if($this->page == 1) {
return $tag;
}
else {
return '<a id="pagnacija" href="'.$this->php_self.'?page=1">'.$tag.'</a>';
}
}
/**
* Display the link to the last page
*
* @access public
* @param string $tag Text string to be displayed as the link. Defaults to 'Last'
* @return string
*/
function renderLast($tag='Last') {
if($this->page == $this->max_pages) {
return $tag;
}
else {
return '<a id="pagnacija" href="'.$this->php_self.'?page='.$this->max_pages.'">'.$tag.'</a>';
}
}
/**
* Display the next link
*
* @access public
* @param string $tag Text string to be displayed as the link. Defaults to '>>'
* @return string
*/
function renderNext($tag=' >>') {
if($this->page < $this->max_pages) {
return '<a id="pagnacija" href="'.$this->php_self.'?page='.($this->page+1).'">'.$tag.'</a>';
}
else {
return $tag;
}
}
/**
* Display the previous link
*
* @access public
* @param string $tag Text string to be displayed as the link. Defaults to '<<'
* @return string
*/
function renderPrev($tag='<<') {
if($this->page > 1) {
return '<a id="pagnacija" href="'.$this->php_self.'?page='.($this->page-1).'">'.$tag.'</a>';
}
else {
return $tag;
}
}
/**
* Display the page links
*
* @access public
* @return string
*/
function renderNav() {
for($i=1; $i<=$this->max_pages; $i+=$this->links_per_page) {
if($this->page >= $i) {
$start = $i;
}
}
if($this->max_pages > $this->links_per_page) {
$end = $start+$this->links_per_page;
if($end > $this->max_pages) $end = $this->max_pages+1;
}
else {
$end = $this->max_pages;
}
$links = '';
for( $i=$start ; $i<$end ; $i++) {
if($i == $this->page) {
$links .= " $i ";
}
else {
$links .= ' <a id="pagnacija" href="'.$this->php_self.'?page='.$i.'">'.$i.'</a> ';
}
}
return $links;
}
/**
* Display full pagination navigation
*
* @access public
* @return string
*/
function renderFullNav() {
return $this->renderFirst().' '.$this->renderPrev().' '.$this->renderNav().' '.$this->renderNext().' '.$this->renderLast();
}
/**
* Set debug mode
*
* @access public
* @param bool $debug Set to TRUE to enable debug messages
* @return void
*/
function setDebug($debug) {
$this->debug = $debug;
}
}
?>
[Ovu poruku je menjao micke037 dana 05.04.2009. u 13:00 GMT+1]
[ dakipro @ 04.04.2009. 09:47 ] @
Nije ti ispao kod citljiv. Ako mozes, loguj se na sajt iz browsera i ispravi svoj post, ili postuj ponovo, jer je zaista neupotrebljiv.
A verujem da ti treba drugaciji order, recimo ORDER BY polje DESC (ako je sad ASC).
[ micke037 @ 06.04.2009. 13:55 ] @
Hvala za ORDER BY uspelo je. Meni je to padalo na pamet samo sam mislio da nece uspeti ali ipak je proradilo. Interesuje me samo da li je moguce sortirati tabelu po nekom kriterijumu iz same tabele. Npr imam ime Stefan koje se javlja 5 puta, ime jovan 7 itd. Sada ja zelim da sortram tabelu po tim imenma ali da izaberem ime pa da se tako sortira StefanStefanStefanStefanStefan jovanjovanjovanjovanjovanjovanjovanjovan. Znam da je sortiranje u Opstem slucaju moguce nego da li postoji neka konkretna komanda ili funkcija za to tipa ORDER BY?
[ Nikola Poša @ 06.04.2009. 15:27 ] @
Tri puta sam pročitao tvoje pitanje, al' i dalje ga ne razumem...
[ micke037 @ 06.04.2009. 22:47 ] @
Npr imam da mi se NEGDE u tabeli 5 puta pojavljuje ime STEFAN, 23puta ime MARKO, 3 puta IME MILORAD. Ja hocu da izaberem neko od tih imena i da onda tabelu sortiram po njemu
STEFAN
STEFAN
STEFAN
STEFAN
STEFAN
(ono sto dodje ispod ovoga nije bitni)
ili
MARKO
MaRKO
MARKO
MARKO
MARKO
MARKO
MARKO
MARKO
MARKO
....
Znaci ako sam izabrao da se sortira po imenu STEFAN onda se tabela sortira tako da joj je na vrhu STEFAN i spusta se na dole i redja STEFAn ispod STEFAN dok god ta rec postoji. Kad je vise nema onda se ostli redovi poredjaju onako kako su bili. Kapiras? Ovo moze da se kodira tako sto nadjem rec koju trazim i zamenim mesto redu u kome se ona nalazi sa prvim redom itd. samo sto je to malo teza varijanta. mene interesuje postoji li neka funkcija koja to odradjuje?
[ Nikola Poša @ 07.04.2009. 09:33 ] @
Pa čekaj, zar to onda nije samo ovo:
Code:
SELECT *
FROM tabela
WHERE ime = 'STEFAN'
ORDER BY ime
I sad tu umesto STEFAN možeš da stavljaš MARKO, MILORAD...
[ DeJaaaN @ 12.04.2009. 01:24 ] @
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|