Joomla.it Forum

Non solo Joomla... => Sviluppo => : memo2014 21 Jan 2014, 10:29:46

: [2.5][RISOLTO]paginazione modulo elementare
: memo2014 21 Jan 2014, 10:29:46
Buongiorno a tutti e complimenti per il vostro fantastico impegno .
Sono un neofita alle prime armi con il mondo joomla e giusto per fare un pò di esperienza sto
provando a scrivere qualcosa da me.


Sono partito prima _non_ utilizzando il pattern mvc. Vorrei giusto capire un paio di cose di base e poi proseguire e progredire.


Detto questo vi espongo il mio piccolo problema:


ho la classica query che vorrei imparare a "paginare" :


:
$query = "SELECT id, nome, cognome FROM #tabella WHERE categoriaID = valore";
$db->setQuery($query);
$rows = $db->loadObjectList();
jimport('joomla.html.pagination');
<div class="someclass">
<div class="rowid"><?php echo $rows->id?><>
<div class="nome"><?php echo $rows->nome?><>
<div class="cognome"><?php echo $rows->cognome?><>
<?php 
        $navigazione 
= new JPagination($rows010);
        echo 
$navigazione->getListFooter(); ?>

?>
<>


Riesco a vedere il numero di pagine, ma non riesco a vedere il contenuto della lista,
cioè, non vedo i "records".


Mi dareste una mano ?


Grazie in anticipo.


Memo.




: Re:[2.5]paginazione modulo elementare
: mmleoni 21 Jan 2014, 10:40:03
ciao e benvenuto sul forum  ;D

in J2.5+ il primo parametro del costruttore è un intero, ovvero il numero delle righe. stai vedendo la doc di J1.5?

prova

:
$navigazione = new JPagination(count($rows), 0, 10);
ciao,
marco
: Re:[2.5]paginazione modulo elementare
: giovi 21 Jan 2014, 10:42:46
$rows è una lista di elementi, non puoi stamparla in questo modo ma devi scorrere la lista stampando di volta in volta i dati che ti interessano.


Vedi qui: http://it2.php.net/manual/it/control-structures.foreach.php
: Re:[2.5]paginazione modulo elementare
: mmleoni 21 Jan 2014, 10:43:45
[stavo scrivendo la stessa cosa]
guardando meglio il codice: non funziona!

rows è un array di oggetti, quindi non puoi scrivere $rows->id, al massimo $rows[0]->id
stai dimenticando il loop

ciao
 
: Re:[2.5]paginazione modulo elementare
: memo2014 21 Jan 2014, 10:50:38
Ok, prima di tutto grazie per aver risposto !!


Ho capito quindi che devo ciclare :


:
<?php
$query 
"SELECT id, nome, cognome FROM #tabella WHERE categoriaID = valore";
$db->setQuery($query);$rows $db->loadObjectList();
$navigazione = new JPagination(count($rows), 010);?>

<?php foreach($rows as $row) : ?>
<div class="someclass">
<div class="rowid"><?php echo $row->id?><>
<div class="nome"><?php echo $row->nome?><>
<div class="cognome"><?php echo $row->cognome?><>
<?php endforeach; ?>

Solo che a questo punto non riesco a capire dove "piazzare" la paginazione
: Re:[2.5]paginazione modulo elementare
: giovi 21 Jan 2014, 11:03:24
a naso direi dove vuoi, basta che sia fuori dal ciclo e dopo che hai riempito la variabile ;)
: Re:[2.5]paginazione modulo elementare
: memo2014 21 Jan 2014, 11:11:30
Allora... c'è qualcosa che mi sfugge:


se metto la "paginazione" prima del foreach, vedo il numero di pagine, ma mi stampa comunque tutte le righe.


se la metto dopo, ovviamente mi stampa sempre tutte le righe e alla fine (fuori dal foreach) la paginazione.



: Re:[2.5]paginazione modulo elementare
: giovi 21 Jan 2014, 11:17:25
...come d'altronde è giusto che sia! Stampando la paginazione non stai limitando il numero di elementi da visualizzare ma solo stampando l'elenco delle pagine.. Che guida stai seguendo per creare la paginazione?
: Re:[2.5]paginazione modulo elementare
: mmleoni 21 Jan 2014, 11:28:30
JPagination genera solo i links senza fare nient'altro. sta a te gestire opportunamente la query.
se ti aspettavi di trascinare sullo stage l'oggetto pagination ed indicargli il data source caschi male  ;D ;D
scherzi a parte, dato che sei al di fuori del FW, devi gestire tutti i passaggi:


hai bisogno di :

1.
una query per il numero totale di records (se non lo salvi)
2.
una query con il "LIMIT" valorizzato dalle variabili trasmesse da JPagination per prendere la porzione di recordset
3.
passare i valori al costruttore usando variabili per indicargli il limit start così che possa riconoscere la pagina corrente

: Re:[2.5]paginazione modulo elementare
: memo2014 21 Jan 2014, 12:03:21
Ok, se prima ero confuso, ora è anche peggio :D


Capisco come prendere il totale dei records
[size=78%]$total = "SELECT count(*) FROM tabella"; //numero totale records[/size]


ma per il "limit" non ho capito :(



: Re:[2.5]paginazione modulo elementare
: mmleoni 21 Jan 2014, 12:19:25
la clausola limit (in mysql) limita il numero delle righe restituite dalla query.
si mette in fondo alla select
:
$query = "SELECT id, nome, cognome FROM #tabella WHERE categoriaID = valore LIMIT {$start},{$numrows}";

e prende $numrows righe a partire da $start (parte da 0)

$numrows sarà una costante nel codice (a meno che tu non voglia cambiare il numero dei risultati per pagina), $start te lo passa la paginazione .

ciao

: Re:[2.5]paginazione modulo elementare
: memo2014 21 Jan 2014, 12:50:57
Ok, seguendo i vostri preziosi suggerimenti sono giunto a questo:


:
<?php
$total 
'SELECT COUNT(*) FROM tabella';
$numrows 10;
jimport('joomla.html.pagination');
$pagination = new JPagination($total0$numrows);
$query 'SELECT id, nome, cognome FROM tabella WHERE bla = bla LIMIT 0, '.$numrows.'';
$db->setQuery($query);
$rows $db->loadObjectList();
?>

<?php foreach($rows as $row) : ?>
<div class="blabla"><?php echo $row->bla?><>
<?php endforeach; ?>




Non ho ancora ben compreso come impostare il "limitstart".
Con il codice sopra, ovviamente non ho delle pagine perchè la query prende solo i primi dieci..


Grazie per il supporto.
: Re:[2.5]paginazione modulo elementare
: mmleoni 21 Jan 2014, 14:03:09
non hai più le pagine perché $total è una stringa: hai dimenticato di eseguire la query!!
(int)$total è uguale a zero...
il valore per $start lo trovi nella query string della pagina, dovrebbe essere 'limitstart' (ma verifica)
(parliamo di url, non di db)

quindi

:
$start=JRequest::getInt('limitstart',0);
ciao,
marco

: Re:[2.5]paginazione modulo elementare
: memo2014 21 Jan 2014, 14:17:56
Wow, bel passo in avanti !! grazie !!


Supporto meraviglioso! non ho parole !


Grazie !
: Re:[2.5]paginazione modulo elementare
: mmleoni 25 Jan 2014, 09:39:36
dimenticavo:
un [risolto] nel titolo del post di apertura aiuta anche gli altri, non dimenticarlo anche tu  ;)

ciao,
marco
: Re:[2.5][RISOLTO]paginazione modulo elementare
: memo2014 27 Jan 2014, 09:49:54
 ;)