|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2005
Città: Silicon Valley(San francisco)- - - - - - Browser:Firefox - - OS:Windows e linux - alessiofbt ------------ [email protected]
Messaggi: 1844
|
dividere in pagine i risultati
In pratica ho questo codice che mostra le informazioni di ogni singolo utente e le mostra su ogni riga:
Codice PHP:
Il problema è che però tutto questo mi viene mostrato solo su una singola pagina, e potete immaginare come su 1400 risultati, un qualsiasi browser possa andare in crash. Come si fa a dividerle in pagine dove ogni pagina ne contiene solo 50 e cosi via? Del tipo view.php?pagina=2 e vedo gli altri 50 ecc..... Per quanto riguarda l'input cioè le caselle dei messaggi per girare pagina ce l'ho già, ma è il sistema che divide i risultati che mi manca. Ciao |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 5206
|
Quote:
Vorrei però capire meglio il tuo codice. Dici che in $c1 hai l'array dei dati ma poi $c1 lo compari con $i nel for.
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%) Java Versions Cheat Sheet |
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: May 2005
Città: Silicon Valley(San francisco)- - - - - - Browser:Firefox - - OS:Windows e linux - alessiofbt ------------ [email protected]
Messaggi: 1844
|
Quote:
l'array di dati? si da questo: $users = listall("./db/users"); $c1 = count($users); il listall di db/users/ ottiene informazioni dal file users.dat e users.def dentro db/. é un database di file di testo, alla fine non sta facendo una vera e propria query ma quasi. |
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 5206
|
Quote:
La paginazione è facile da fare. La "query", chiamiamola così, la devi fare sempre ad ogni richiesta della pagina. Avendo in $c1 il numero totale di risultati, basta che calcoli il numero di pagine in base al numero fisso di risultati che vuoi mostrare a video. Una volta che hai calcolato il numero di pagine, potrai generare una lista di link (visualizzati e posizionati come ti pare) in cui ogni link ha un parametro che indica la pagina. Per la visualizzazione dei dati veri e propri, devi calcolare l'offset in base alla pagina richiesta con l'url (eventualmente 0 se non viene passata) e quindi prendere solo le righe che ti servono. Si potrebbe anche pensare di passare nell'url un offset piuttosto che una pagina. È solo questione di scelta. Ovviamente i soliti controlli del caso: testare che non ti venga passata una pagina inesistente, visualizzare solo i risultati rimanenti se è l'ultima pagina, ecc...
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%) Java Versions Cheat Sheet |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: May 2005
Città: Silicon Valley(San francisco)- - - - - - Browser:Firefox - - OS:Windows e linux - alessiofbt ------------ [email protected]
Messaggi: 1844
|
Ho provato a fare cosi....
Codice PHP:
Me li visualizza sempre tutti Se sto su page=2 Me ne visualizza 2 E se mi trovo su 3 Me ne visualizza 1 Secondo quanto ho scritto dovrebbe visualizzare un risultato ogni pagina :???: Ho inoltre cercato di adattarmi il più possibile con un altra gestione pagine sempre dello stesso script, che sbaglio? :crycry: |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 5206
|
Ecco un esempietto semplice semplice (non ho messo la generazione dei link alle pagine, però):
Codice:
<html>
<body>
<?php
$arr = array ("uno", "due", "tre", "quattro", "cinque", "sei", "sette", "otto");
$count_arr = count ($arr);
$items_per_page = 3;
$count_pages = floor (($count_arr + $items_per_page - 1) / $items_per_page);
if (isset ($_GET['page']) && is_numeric ($_GET['page']))
{
$page = (int) $_GET['page'] - 1;
if ($page < 0 || $page >= $count_pages)
$page = 0;
}
else
$page = 0;
$offset = $page * $items_per_page;
for ($i = 0; $i < $items_per_page && $offset < $count_arr; $i++, $offset++)
echo $arr[$offset] . "<br>";
?>
</body>
</html>
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%) Java Versions Cheat Sheet |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: May 2005
Città: Silicon Valley(San francisco)- - - - - - Browser:Firefox - - OS:Windows e linux - alessiofbt ------------ [email protected]
Messaggi: 1844
|
Quote:
Funziona alla perfezione! , sei bravo in php grazie |
|
|
|
|
|
|
#8 | ||
|
Senior Member
Iscritto dal: May 2005
Città: Silicon Valley(San francisco)- - - - - - Browser:Firefox - - OS:Windows e linux - alessiofbt ------------ [email protected]
Messaggi: 1844
|
Andrea ti chiedo un'altra cosa sempre riguardante questo argomento d'impaginazione dei contenuti.
Circa qualche mese fa chiesi su giorgiotave.it come poter realizzare un database di testo. e ottenni: dentro db.dat tutti i dati: (es Quote:
(es Quote:
Codice PHP:
Ora il punto dove voglio arrivare è questo: $campo[0]-[1]-[2]-ecc.. stampano a codice tutto quello che gli viene dato. Se io qui volessi inserire il tuo codice come potrei fare? Codice PHP:
ciao
__________________
Il sito web di Laura Pausini | Database di testo (alternative a sql) | Leggi L'arte dell'inganno gratis |Txtsql 2.2 Database txt | ______kevin mitnick è un grande!!! Ultima modifica di kevindavidmitnick : 20-03-2007 alle 18:54. |
||
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 5206
|
Quote:
Poi in ogni elemento del tuo array hai una riga che dovrai suddividere (con explode, come hai già scritto tu), ma questo ha importanza solo quando andrai a stampare in output i dati, non per il calcolo dell'offset o del numero di pagine.
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%) Java Versions Cheat Sheet |
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: May 2005
Città: Silicon Valley(San francisco)- - - - - - Browser:Firefox - - OS:Windows e linux - alessiofbt ------------ [email protected]
Messaggi: 1844
|
Quote:
Grazie... ho visto che però restituisce tutti i dati e non quelli analizzati con il criterio IF all'interno. Cosi ho pensato di cambiare array mettendo $campo cosi: Codice PHP:
|
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 5206
|
Quote:
Allora devi creare un nuovo array che conterrà solo i record che a te interessano. Poi puoi decidere tu se questo array deve contenere la riga originale o già "spezzata" in campi (credo che convenga quest'ultima soluzione) Una cosa del tipo (non testato Codice:
$record2 = file("db.dat");
$records_filt = array ();
foreach ($record2 as $riga)
{
$rec = explode("</>", $riga);
if ($rec[0] == "nome2")
array_push ($records_filt, $rec);
}
Ed è su questo array $records_filt che dovrai contare gli elementi, calcolare il numero di pagine, calcolare l'offset e quindi mandare in output i campi.
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%) Java Versions Cheat Sheet |
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: May 2005
Città: Silicon Valley(San francisco)- - - - - - Browser:Firefox - - OS:Windows e linux - alessiofbt ------------ [email protected]
Messaggi: 1844
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:59.




















