Back to top

Autore Topic: [2.5][RISOLTO]paginazione modulo elementare  (Letto 6469 volte)

Offline memo2014

  • Nuovo arrivato
  • *
  • Post: 18
    • Mostra profilo
[2.5][RISOLTO]paginazione modulo elementare
« il: 21 Gen 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" :


Codice: [Seleziona]
$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.




« Ultima modifica: 27 Gen 2014, 09:49:32 da memo2014 »

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:[2.5]paginazione modulo elementare
« Risposta #1 il: 21 Gen 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

Codice: [Seleziona]
$navigazione = new JPagination(count($rows), 0, 10);
ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:[2.5]paginazione modulo elementare
« Risposta #2 il: 21 Gen 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

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:[2.5]paginazione modulo elementare
« Risposta #3 il: 21 Gen 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
 
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline memo2014

  • Nuovo arrivato
  • *
  • Post: 18
    • Mostra profilo
Re:[2.5]paginazione modulo elementare
« Risposta #4 il: 21 Gen 2014, 10:50:38 »
Ok, prima di tutto grazie per aver risposto !!


Ho capito quindi che devo ciclare :


Codice: [Seleziona]
<?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
« Ultima modifica: 21 Gen 2014, 10:57:45 da memo2014 »

Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:[2.5]paginazione modulo elementare
« Risposta #5 il: 21 Gen 2014, 11:03:24 »
a naso direi dove vuoi, basta che sia fuori dal ciclo e dopo che hai riempito la variabile ;)

Offline memo2014

  • Nuovo arrivato
  • *
  • Post: 18
    • Mostra profilo
Re:[2.5]paginazione modulo elementare
« Risposta #6 il: 21 Gen 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.




Offline giovi

  • Instancabile
  • ******
  • Post: 9835
  • Sesso: Maschio
    • Mostra profilo
Re:[2.5]paginazione modulo elementare
« Risposta #7 il: 21 Gen 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?

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:[2.5]paginazione modulo elementare
« Risposta #8 il: 21 Gen 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

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline memo2014

  • Nuovo arrivato
  • *
  • Post: 18
    • Mostra profilo
Re:[2.5]paginazione modulo elementare
« Risposta #9 il: 21 Gen 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 :(




Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:[2.5]paginazione modulo elementare
« Risposta #10 il: 21 Gen 2014, 12:19:25 »
la clausola limit (in mysql) limita il numero delle righe restituite dalla query.
si mette in fondo alla select
Codice: [Seleziona]
$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

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline memo2014

  • Nuovo arrivato
  • *
  • Post: 18
    • Mostra profilo
Re:[2.5]paginazione modulo elementare
« Risposta #11 il: 21 Gen 2014, 12:50:57 »
Ok, seguendo i vostri preziosi suggerimenti sono giunto a questo:


Codice: [Seleziona]
<?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.

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:[2.5]paginazione modulo elementare
« Risposta #12 il: 21 Gen 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

Codice: [Seleziona]
$start=JRequest::getInt('limitstart',0);
ciao,
marco

mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline memo2014

  • Nuovo arrivato
  • *
  • Post: 18
    • Mostra profilo
Re:[2.5]paginazione modulo elementare
« Risposta #13 il: 21 Gen 2014, 14:17:56 »
Wow, bel passo in avanti !! grazie !!


Supporto meraviglioso! non ho parole !


Grazie !

Offline mmleoni

  • Global Moderator
  • Instancabile
  • *****
  • Post: 5547
  • Sesso: Maschio
  • Just another *nix coder/sysadmin...
    • Mostra profilo
Re:[2.5]paginazione modulo elementare
« Risposta #14 il: 25 Gen 2014, 09:39:36 »
dimenticavo:
un [risolto] nel titolo del post di apertura aiuta anche gli altri, non dimenticarlo anche tu  ;)

ciao,
marco
mmleoni web consulting - creazione siti web aziendali ed e-commerce avanzati - sviluppo moduli e componenti Joomla

Offline memo2014

  • Nuovo arrivato
  • *
  • Post: 18
    • Mostra profilo
Re:[2.5][RISOLTO]paginazione modulo elementare
« Risposta #15 il: 27 Gen 2014, 09:49:54 »
 ;)

 



Web Design Bolzano Kreatif