Originariamente inviato da remixe
Ciao Guido
ho applicato la tua funzione e funziona(scusa il gioco di parole)
bene.
mi mette però tutti i record restituiti in un unica riga, i quesiti che ti pongo sono due:
1-innanzitutto dove devo intervenire esattamente e come per
decidere quanti record devono apparire per ogni pagina;
con i parametri della funzione..
la funzione ha dei parametri cn default:
function paging($query,$x_pag=10,$num_links=5)
quindi se tu non passi il secondo parametro lo assume pari a 10 (e sono il numero dei record per pagina), e il terzo a 5 (sono il numero di pagine a cui comparirà il link nel minimenu')
ad esempio:
paging($sql,8); //l'ultimo resta a 5.. il secondo cambia a 8
paging($sql,8,7); //il secondo va a 8, l'ultim a 7
paging($sql,10,7); //l'ultimo va a 7, ma per cambiare l'ultimo dobbiamo mettere anche il secondo.. ecco perchè specifico il secondo anche se è identico al default.
Quetso naturalmnete vale per tutte le funzioni (che abbiano parametri con default)... qualsiasi buona guida di php dovrebbe parlarne abbastanza approfonditamente.
infine:
2-se io volessi far si ad esempio che apparissero per ogni pagina 8 foto
su due righe (4 sopra e 4 sotto) come dovrei intervenire sul questo codice della pagina?
esattamente come faresti con una funzione "normale".. cioè con la normale mysql_query...
una cosa del genere:
Codice PHP:
<?php
include("paging.func.php");
//connessione a mysql
mysql_connect('localhost','test','test');
//selezione del database
mysql_select_db('test');
//sottomissione della query (come usare mysql_query())
$res = paging('SELECT * FROM news');
echo "<table border='0'>\n<tr>";
/*
verifica dei risultati: $res è un array.. l'elemento zero contiene
il risultato della query per la pagina corrente... mentre l'elemento 1
che useremo dove ci pare (nell'esempio lo usiamo alla fine) contiene
il codice del minimenu' da dare semplicemente in output
*/
if (!$res[0]) { echo "non ci sono dati";}
else
{
/*sull'elemento zero si opera con un ciclo allo stesso modo
in cui si farebbe con il risultato di mysql_query()
*/
$i=0;
while($dati = mysql_fetch_array($res[0]))
{
if($i++%4==0) echo '</tr><tr>';
echo "<td><img src=\"$dati[foto]\">
<a href=\"database2.php?id=".$dati['id']."\">".$dati['titolo'];
}
}
/*stampa del minimenu' di link alle altre pagine
(poteva essere stampato anche prima del ciclo)
*/
echo "</tr>
".$res[1];
echo "</table>";
?>
in pratica apro una riga assieme all'apertura della tabella e ne chiudo una assimee alla chiusura della tabella... a quel punto se volessi fare una riga (dela tabella) ogni 4 record.. semplicemente ogni 4 record stampo chiusura della riga precedente e apertura della nuova
e questo lo faccio con un semplice contatore e un if sul modulo 4 del contatore.
Salvo sviste dovrebbe funionare, ad ogni modo il meccanismo è questo.... ma non dipende assolutamente dalla mia funzione