Ciao Ragazzi! ho un problema con la paginazione dei miei messaggi privati.. Sarà sicuramente una stupidaggine ma sto impazzendo..
Allora partiamo con lo spiegare cosa deve fare la mia pagina,all'apertura mi deve contare i messaggi e paginarmeli,tenendo presente che quelli che sono stati messi in evidenza(che hanno un campo impostato a 1) devono uscire per primi indipendentemente da quanti messaggi ho impostato che devono comparire in una pagina...ovvero:
imposto che ogni pagina deve contenere al max 5 messaggi ma io ho messo in evidenza 3 messaggi quindi uscirà fuori una cosa del tipo
-->Pagina1
mess evidenz
mess evidenz
mess evidenz
mess1
mess2
mess3
mess4
mess5
-->Pagina2
mess6
mess7
Allora io ho pensato di fare in questo modo:
all'inizio di tutto ho messo questo:
Codice PHP:
//conto i messaggi
$count = mysql_query("SELECT 1, COUNT(*)
FROM messaggio_privato
WHERE esiste IN(1,3)
AND id_utente_ric=$id_utente
AND iniziale = 1
AND evidenza = 0
UNION
SELECT 2, COUNT(*)
FROM messaggio_privato
WHERE esiste IN(1,2)
AND id_utente_sender=$id_utente
AND iniziale = 1
AND evidenza = 0
");
while($row = mysql_fetch_row($count)) {
$num[] = $row[1];
}
$tot_records = array_sum($num);
//messaggi totali
// risultati per pagina(secondo parametro di LIMIT)
$per_page = 3;
// numero totale di pagine
$tot_pages = ceil($tot_records / $per_page);
$current_page = (!isset($_GET['page'])) ? $pag = 1 : $pag = $_GET['page'];
if(!is_numeric($pag)) {
echo "Messaggio di errore";
exit; // blocchi l'esecuzione del resto dello script
}
// primo parametro di LIMIT
$primo = ($current_page - 1) * $per_page;
echo "<div align=\"center\" width=\"650\">\n<table>\n";
Ok a questo punto ho fatto questo,ho prima fatto una query per estrarmi tutti i messaggi che hanno il campo evidenza a 1 in questo modo
Codice PHP:
$query_limit = mysql_query("SELECT * FROM messaggio_privato WHERE iniziale= 1 AND evidenza= 1 AND (id_utente_ric=$id_utente OR id_utente_sender=$id_utente) ORDER BY last_update DESC LIMIT $primo, $per_page ");
while($results = mysql_fetch_array($query_limit))
{ // apro parentesi del while iniziale che mi estrae tutti i messaggi ricevuti
//.........................................estraggo dati
Poi dopo ho fatto una seconda query che mi estrae tutti i messaggi che non hanno il campo evidenza ad 1 e poi includo la paginazione
Codice PHP:
$query_limit = mysql_query("SELECT * FROM messaggio_privato WHERE evidenza= 0 AND iniziale= 1 AND(id_utente_ric=$id_utente OR id_utente_sender=$id_utente) ORDER BY last_update DESC LIMIT $primo, $per_page");
while($results = mysql_fetch_array($query_limit))
{ // apro parentesi del while iniziale che mi estrae tutti i messaggi ricevuti
//.........................................estraggo dati
A fine di queste estrazione includo la paginazione in questo modo
Codice PHP:
<table width="650" border="1" bordercolor="#0066CC">
<tr>
<?php
// includiamo uno dei files contenenti la paginazione
include("paginazione_1.php");
echo " <td align=\"center\">$paginazione</td>";
echo " </table>";
Ora...Dove sta il problema?? Se io clicco sul pulsantino per mettere in evidenza uno dei messaggi nella prima pagina,ovviamente dovrebbe ricalcolare il numero dei messaggi(e lo fa) e delle pagine (e lo fa) e quindi spostarmi il messaggio in alto perchè è in evidenza,ma portarne uno nella pagina per farli diventare nuovamente 5,ma non lo fa!! anzi se io ne metto troppi in evidenza spariscono e non si estraggono più..Sicuramente avro fatto qualche casino coi limit...
Potete aiutarmi per cortesia? E grazie anticipatamente per la pazienza!