Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più
Abbiamo provato Samsung Galaxy Tab S12 Ultra nella versione 12 GB + 256 GB con tastiera, e il risultato è un tablet che in questa configurazione si comporta come un notebook con la fluidità tipica di Android. Spessore di 5,1 mm, display Dynamic AMOLED 2X da 14,6 pollici, MediaTek Dimensity 9500 e un software senza incertezze compongono un prodotto di vertice, con prezzi da 1.539 euro, frenato solo da un'autonomia nella parte bassa del confronto
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura)
Abbiamo provato per dieci giorni la Hyundai IONIQ 5 N, con 650 CV, 770 Nm e uno 0-100 km/h in 3,4 secondi. Il suo punto forte è N e-Shift, che simula un cambio a otto rapporti con suoni da motore termico e perfino un bang supersonico
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-02-2007, 05:00   #1
kevindavidmitnick
Senior Member
 
L'Avatar di kevindavidmitnick
 
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:
for($i=0;$i<$c1;$i++)
    {
        
//show each user
        
$each = def($users[$i], "./db/users");
    

    
        echo 
"$each[id]-$each[email]";

} 
$c1 contiene l'array di tutti i risultati

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
kevindavidmitnick è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2007, 10:27   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da kevindavidmitnick Guarda i messaggi
Come si fa a dividerle in pagine dove ogni pagina ne contiene solo 50 e cosi via?
Possibile lo è sicuramente.
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. Poi comunque questo array di dati da dove ti arriva?? Da una query su un database?
__________________
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2007, 14:34   #3
kevindavidmitnick
Senior Member
 
L'Avatar di kevindavidmitnick
 
Iscritto dal: May 2005
Città: Silicon Valley(San francisco)- - - - - - Browser:Firefox - - OS:Windows e linux - alessiofbt ------------ [email protected]
Messaggi: 1844
Quote:
Originariamente inviato da andbin Guarda i messaggi
Possibile lo è sicuramente.
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. Poi comunque questo array di dati da dove ti arriva?? Da una query su un database?

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.

kevindavidmitnick è offline   Rispondi citando il messaggio o parte di esso
Old 28-02-2007, 15:02   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da kevindavidmitnick Guarda i messaggi
l'array di dati?

si da questo:

$users = listall("./db/users");
$c1 = count($users);
Ok, adesso è più chiaro.

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
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 02-03-2007, 13:59   #5
kevindavidmitnick
Senior Member
 
L'Avatar di kevindavidmitnick
 
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:
$users = listall("./db/users");
    
$c1 = count($users);
$posts_per_page = "1";

if(!isset(
$page)) {

    
$page = 1;

}

$start = $page * $posts_per_page - $posts_per_page;



if (
$c1 <= $posts_per_page) {

   
$num_pages = 1;

} else if ((
$c1 % $posts_per_page) == 0) {

   
$num_pages = ($c1 / $posts_per_page);

} else {

   
$num_pages = ($c1 / $posts_per_page) + 1;

}
    
 
$num_pages = (int) $num_pages;   
    
$p = "";

$x = +1;



$y = 0;


for(
$i=$start;$i<$c1;$i++)

{

    if(
$y >= $posts_per_page) {



        break;

    }

    
$each = def($users[$i], "./db/users"); 
        echo 
"$each[id]-$each[email]";

} 
E adesso se sto su pagina.php?page=1

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:
kevindavidmitnick è offline   Rispondi citando il messaggio o parte di esso
Old 02-03-2007, 14:40   #6
andbin
Senior Member
 
L'Avatar di andbin
 
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
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 02-03-2007, 16:30   #7
kevindavidmitnick
Senior Member
 
L'Avatar di kevindavidmitnick
 
Iscritto dal: May 2005
Città: Silicon Valley(San francisco)- - - - - - Browser:Firefox - - OS:Windows e linux - alessiofbt ------------ [email protected]
Messaggi: 1844
Quote:
Originariamente inviato da andbin Guarda i messaggi
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>

Funziona alla perfezione!

, sei bravo in php

grazie
kevindavidmitnick è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2007, 18:52   #8
kevindavidmitnick
Senior Member
 
L'Avatar di kevindavidmitnick
 
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:
marco</>[email protected]</>www.marco.it</>523;
luca</>[email protected]</>www.luca.it</>652;
andrea</>[email protected]</i>www.andrea.it</i>689;
dentro db.def tutte le definizioni dei dati
(es
Quote:
Username</>e-mail</>website</>topic
dentro il file php la funzione

Codice PHP:
$record = file("db.def");
$record2 = file("db.dat");
foreach (
$record2 as $riga)
  {
  
$nomeCampi = explode("</>", $record[0]);
  
$campo = explode("</>", $riga);
  if (
$campo[0] == "nome2")
    {
//echo "$campo[0]<br>";
echo "$campo[1] (dato di luca, in questo caso ottengo [email protected] cioè l'e-mail di luca...se avessi messo $campo[0] ottenevo www.luca.it ecc..)";
}
} 
I dati sono divisi da </> e da \n per ogni record.

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:
$arr = array ("uno", "due", "tre", "quattro", "cinque", "sei", "sette", "otto");
$count_arr = count ($arr); 
Cioè qui l'array di tutti i dati su quale constante dell'esempio che ho postato la trovo?

ciao

Ultima modifica di kevindavidmitnick : 20-03-2007 alle 18:54.
kevindavidmitnick è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2007, 20:37   #9
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da kevindavidmitnick Guarda i messaggi
Se io qui volessi inserire il tuo codice come potrei fare?
Beh, in $record2 hai un array di record, che è poi come l'array $arr del mio esempio che ho postato. Quindi ti basta fare praticamente come ho fatto nell'esempio, cioè ottenere il numero di record, calcolare il numero di pagine, ecc...
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
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 21-03-2007, 17:13   #10
kevindavidmitnick
Senior Member
 
L'Avatar di kevindavidmitnick
 
Iscritto dal: May 2005
Città: Silicon Valley(San francisco)- - - - - - Browser:Firefox - - OS:Windows e linux - alessiofbt ------------ [email protected]
Messaggi: 1844
Quote:
Originariamente inviato da andbin Guarda i messaggi
Beh, in $record2 hai un array di record, che è poi come l'array $arr del mio esempio che ho postato. Quindi ti basta fare praticamente come ho fatto nell'esempio, cioè ottenere il numero di record, calcolare il numero di pagine, ecc...
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.

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:
$record = file("db.def");
$record2 = file("db.dat");
foreach (
$record2 as $riga)
  {
  
$nomeCampi = explode("</>", $record[0]);
  
$campo = explode("</>", $riga);
  if (
$campo[0] == "nome2")
    {
//echo "$campo[0]<br>";
echo "$campo[1] (dato di luca, in questo caso ottengo [email][email protected][/email] cioè l'e-mail di luca...se avessi messo $campo[0] ottenevo [url]www.luca.it[/url] ecc..)";

//mod
$count_arr = count ($campo);
echo 
"count $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 
$campo[$offset] . "<br>";
//fine mod
}
} 
ciao
kevindavidmitnick è offline   Rispondi citando il messaggio o parte di esso
Old 21-03-2007, 17:29   #11
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Messaggi: 5206
Quote:
Originariamente inviato da kevindavidmitnick Guarda i messaggi
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
no no, allora vediamo di chiarire meglio: tu ottieni dal file un array $record2, che contiene N righe di testo. Tra tutte queste righe devi "filtrare" (e quindi poi visualizzare) solo quelle in cui il primo campo contiene "nome2" (o quello che è ...), giusto?

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);
}
Alla fine, in $records_filt hai un array di array, cioè ogni elemento contiene un altro array con i campi.
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
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 21-03-2007, 18:37   #12
kevindavidmitnick
Senior Member
 
L'Avatar di kevindavidmitnick
 
Iscritto dal: May 2005
Città: Silicon Valley(San francisco)- - - - - - Browser:Firefox - - OS:Windows e linux - alessiofbt ------------ [email protected]
Messaggi: 1844
Quote:
Originariamente inviato da andbin Guarda i messaggi
no no, allora vediamo di chiarire meglio: tu ottieni dal file un array $record2, che contiene N righe di testo. Tra tutte queste righe devi "filtrare" (e quindi poi visualizzare) solo quelle in cui il primo campo contiene "nome2" (o quello che è ...), giusto?

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);
}
Alla fine, in $records_filt hai un array di array, cioè ogni elemento contiene un altro array con i campi.
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.
Ottimo grazie
kevindavidmitnick è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
CES Unveiled Milan, l'IA diventa tecnologia fondativa e il commercio torna centrale CES Unveiled Milan, l'IA diventa tecnologia fond...
 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP Recensione OPPO Find X10 Pro Max: un top di gam...
Cowboy Space Corp. presenta il suo razzo...
Per NetSuite il vantaggio nell'IA sta ne...
Scoperta la zona d'origine del segnale W...
La Stazione Spaziale Internazionale cont...
La Difesa statunitense ha pubblicato la ...
vivo X500 Pro e Pro Max ufficiali: tanta...
iOS 27.2: l'iPhone chiede ai numeri scon...
Final Cut Pro integra MotionVFX e Apple ...
iMac M6 da 1.829 euro, MacBook Pro 14 M6...
RayNeo GT a 313,65€ su Amazon: occhiali ...
NVIDIA e Meta: 3 miliardi di dollari e p...
PHP2Shell: sfruttate attivamente le due ...
Raffreddamento passivo senza elettricità...
La deforestazione in Amazzonia crolla a ...
La luce del sole a mezzanotte, ecco come...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 07:18.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v