WhatIsTheMatrix.IT – Il Sito Italiano su Matrix

WhatIsTheMatrix.IT – Il Sito Italiano su Matrix

WhatIsTheMatrix.IT – Il Sito Italiano su Matrix

Home // Forum

Forum breadcrumbs - Sei qui:ForumZION: CavernaProgrammazione
o Registrati per creare messaggi e topic.

Programmazione

avevo cominciato con le librerie allegro , mi deprimevano.
allora mi volevo dirigere verso directX ma poi il porting di quello che facevo me lo sognavo. quindi SDL

Io ho cominciato col C e l'assembly, poi ho cominciato a costruirmi una lib grafica per dos. poi sono passato alle DX e mi sono costruito una libreria da paura che nell'ultimo periodo poteva anche switchare tra DX e openGL.
Poi c'è stata una piccola parentesi SDL su BeOS.
Poi ancora (adesso) ho creato una lib 2D/3D per Java veramente potente. Mi sono programmato uno SpriteEditor ed un MapEditor per divertirmi a fare qualche giochetto...

Mi documenterò un pò di più su queste funzioni di php, così mi semplifico la vita

Io me le scordo sempre, ed allora vai di ricerche nel file della guida del PHP 🙂

Nuovo problemino...stavolta più come un tutorial...

Dunque, richiamando i valori totali di una tabella con un ciclo WHILE contenente MYSQL_FETCH_ARRAY come posso far suddividere i risultati in più pagine come ad esempio nei post di un forum (con pulsanti "precedente" e "successivo" più i numeri delle pagine al centro...e magari i puntini di sospensione tipo 1, 2, 3, 4..., 23)

Ehm...aiuto 😳 (dambala, stavolta ti mando a casa un cestino pieno di pasta fatta in casa 😉 )

Dunque, richiamando i valori totali di una tabella con un ciclo WHILE contenente MYSQL_FETCH_ARRAY come posso far suddividere i risultati in più pagine come ad esempio nei post di un forum (con pulsanti "precedente" e "successivo" più i numeri delle pagine al centro...e magari i puntini di sospensione tipo 1, 2, 3, 4..., 23)

Stavolta provo un approccio diverso, ti do la soluzione teorica al tuo problema. Se capisci e mi fai vedere che ti sei applicato allora proseguo, altrimenti sarà uno stillicidio... :devil:

Non devi usare un while ma un for, perchè devi poter scegliere l'intervallo di record da prelevare.
In pratica devi ottenere il numero di record presenti (la funzione per questo è la stessa dell'altra volta), dividerlo per il numero di "elementi" presenti in una pagina ed ottieni il numero di pagine totali.
Il trucco poi sta nel creare dei link, uno per ogni pagina. Quando lo script viene eseguito, sa a che pagina si trova e sceglie solo l'intervallo degli elementi presenti all'interno di essa.
Tutto qui.

Una volta che sai a che pagina sei, puoi creare dei link che puntano alla successiva o alla precedente, alla prima o all'ultima.

Per quanto riguarda la "scomparsa" dei numeri di alcune pagine ti puoi regolare così:
Quando crei i link alle pagine, se le pagine superano un certo limite allora scrivi solo le prime 5 (x esempio) e le ultime 2.
Ovviamente quando ti trovi alla pagina "centrale" (su venti la decima) il suddetto algoritmo non funziona e bisogna escogitare qualcos'altro.

(dambala, stavolta ti mando a casa un cestino pieno di pasta fatta in casa)

Si però la devi fare tu, se no non c'è soddisfazione!

risp io. in pratica fai un count del numero degli elementi da visualizzare. poi metti un option che permette con un menu a tendina di scegliere quanti valori per pagina visualizzare. poi al load della pagina fai un conto e dividi i tuoi valori iniziali in gruppi da n (dove n è selezionato col check) e fai passare due parametri alla pagina: quanti risultati per pagina, numero del blocco da visualizzare...

Perfetto.

Si architect, a parole sono capace anche io di ripetere quello che ha detto Dambala

🙄

Cmq Damb, le dritte che mi hai dato non le ho buttate 😉 ,
ho compilato uno script di prova che richiama i valori in base al numero della pagina, questo influenza la propietà di tabella limit (SELECT TABLE prova LIMIT $pagina, 4) ed imposta i numeri delle pagine successive e precedenti mediante il ciclo for;
sembra funzionare :mrgreen: quando ho finito ti ci faccio dare un'okchiata, così mi dici...

Si architect, a parole sono capace anche io di ripetere quello che ha detto Dambala

Non devo difendere theArchitect, comunque è bravo col php e se noti l'orario dei due post, probabilmente non ha scritto dopo di me, ma nel MENTRE.

ho compilato uno script di prova che richiama i valori in base al numero della pagina, questo influenza la propietà di tabella limit (SELECT TABLE prova LIMIT $pagina, 4) ed imposta i numeri delle pagine successive e precedenti mediante il ciclo for;

Un'unica nota:
il comando LIMIT è proprio di MySQL. Se lo vai ad usare su altri server DB (DBMS), non funge...
Ecco perchè io lo evito.
Se non hai necessità di "conservare" il codice per il futuro, allora prosegui normalmente, altrimenti opta per la soluzione più riciclabile.

Non devo difendere theArchitect, comunque è bravo col php e se noti l'orario dei due post, probabilmente non ha scritto dopo di me, ma nel MENTRE.

ohibò 🙄

il comando LIMIT è proprio di MySQL. Se lo vai ad usare su altri server DB (DBMS), non funge...
Ecco perchè io lo evito.
Se non hai necessità di "conservare" il codice per il futuro, allora prosegui normalmente, altrimenti opta per la soluzione più riciclabile.

Le mie conoscenze di programmazione devono essere sufficenti al discutibilissimo ruolo principale che svolgo, quello di designer 😉 quindi per ora mysql è ottimo.

Ecco qua, è un pò più semplice di quello che avevo in mente ma credo che possa bastare, per ora 😉

<'

$dati="SELECT id FROM tabella";
$query= mysql_query($dati, $connessione);
$totale= mysql_num_rows( $query );
$numero=1;
$pagine= ($totale/4)+1;
settype($pagine, integer);
echo"Ci sono $totale righe suddivise per $pagine pagine.<p>";

$dati1="$dati LIMIT ".(20*($pagina-1)).",20";
$query1= mysql_query($dati1, $connessione);

while($valore=mysql_fetch_array($query1)){
$id=$valore['id'];
echo"$id<br>";
}
echo"<br>";
if($pagina!=1){
echo"<a href="test.php'pagina=".($pagina-1)."">precedente</a> ";
}
for($numero;$numero<=$pagine;$numero++){
echo"<a href="test.php'pagina=$numero">$numero</a> ";
}
if($pagina!=$pagine){
echo"<a href="test.php'pagina=".($pagina+1)."">successivo</a>";
}
'>

Buona soluzione...

Tanto dopo la puoi sempre migliorare/ampliare 😉

All "Matrix" related material is property of Village Roadshow Film Ltd. and Warner Bros. - a Time Warner Entertainment company
PHP Code Snippets Powered By : XYZScripts.com