paginazione php su sql server

Ciao a tutti!

Sto realizzando una bacheca in php.

Devo gestire la paginazione degli annunci presenti su un db SQL SERVER.

Ogni annuncio appartiene ad una particolare categoria.

Ho una pagina in cui faccio scegliere all'utente la categoria di appartenenza delle informazioni da recuperare con una combo box dal seguente codice php:

<form method="post" name="leggi" action="lista.php">

<select name= "categoria" style="BACKGROUND: #8aabbb; COLOR: 505050">

<option selected = "categoria">tutti</option>

<?php

$stringa_query="SELECT * FROM categoria ORDER BY nome";

$elenco=mssql_query($stringa_query) or die('Query non eseguibile');

while($row_categoria=mssql_fetch_array($elenco)){

$id_categoria=$row_categoria["categoria_ID"];

$nome_categoria=$row_categoria["nome"];

echo "<option value=\"$id_categoria\">$nome_categoria</option>";

}?>

</select>

<input type="submit" value="OK" name="invio">

</form>

Nella pagina richiamata nell'action del form ho il seguente codice per la paginazione:

<?php

session_start();

extract($_POST);

$_SESSION["cat"]=$categoria;

$cat=$_SESSION["cat"];

echo"$cat";

echo"$categoria";

include("db_connection.php");

<?php

$count = "SELECT COUNT(annuncio_ID) as tot FROM annuncio WHERE chiusura =\"0\" AND id_topic=\"0\"";

$result=mssql_query($count,$db) or die('Query non eseguibile');

$res_count = mssql_fetch_array($result);

$totale = $res_count["tot"];

$pagina = (!$_GET['pag']) ? 1 : (int)$_GET['pag'];

$pageSize = 1;//DA CAMBIARE A 20!

$begin = ($pagina-1)*$pageSize;

$countPages=ceil($totale/$pageSize);

//QUERY INSERIMENTO

$query = "SELECT TOP $pageSize annuncio_ID, argomento, testo, convert(char(11),data,105)as data1,convert(char(5),data,114)as data2,categoria_ID,utente_ID FROM annuncio WHERE chiusura =\"0\" AND id_topic=\"0\" AND categoria_ID=\"$cat\" AND annuncio_ID NOT IN (SELECT TOP $begin annuncio_ID FROM annuncio WHERE chiusura =\"0\" AND id_topic=\"0\" AND categoria_ID=\"$cat\" ORDER BY data DESC)ORDER BY data DESC ";

$result=mssql_query($query,$db) or die('Query non eseguibile');

while($risultato = mssql_fetch_array($result)){

$id_annuncio=$risultato["annuncio_ID"];

$id_utente=$risultato["utente_ID"];

$id_categoria=$risultato["categoria_ID"];

$argomento=$risultato["argomento"];

$data=$risultato["data1"]. " - ". $risultato["data2"];

$query_user = "SELECT DisplayName FROM Users WHERE UserID=\"$id_utente\"";

$result_user=mssql_query($query_user,$db) or die('Query non eseguibile');

$risultato_user = mssql_fetch_array($result_user);

$username=$risultato_user["DisplayName"];

$query_categoria = "SELECT nome FROM categoria WHERE categoria_ID=\"$id_categoria\"";

$result_categoria=mssql_query($query_categoria,$db) or die('Query non eseguibile');

$risultato_categoria= mssql_fetch_array($result_categoria);

$categori=$risultato_categoria["nome"];

$query_count = "SELECT COUNT(*) AS totale FROM annuncio WHERE id_topic=\"$id_annuncio\"";

$result_count=mssql_query($query_count,$db) or die('Query non eseguibile');

$risultato_count = mssql_fetch_array($result_count);

$tab .= "<tr>";

$tab .= "<td><p class=\"dati\"><a href=\"singolo_annuncio.php?id=$id_annuncio\">$argomento</a></p></td>";

$tab .= "<td><p class=\"dati\">$categori</p></td>";

$tab .= "<td><p class=\"dati\">$username</p></td>";

$tab .= "<td><p class=\"dati\">$data</p></td>";

$tab .= "<td><p class=\"dati\"><a href=\"singolo_annuncio.php?id=$id_annuncio\">$risultato_count[totale]</a></p></td>";

$tab .= "</tr>";

}

$tab .= "</table>";

echo "$tab";

//}

//else{ print("<br><br><h3>La bacheca e' vuota: al momento non ci sono annunci!</h3>");}

if ($totale > $pageSize && $countPages > $pagina) {

echo "<a href='?pag=" . ($pagina+1) ."'>AVANTI</a>";

}

if ($pagina > 1) {

echo "<br><br><a href='?pag=" . ($pagina-1) . ($cat). "'>INDIETRO</a>";

}

mssql_close($db); ?>

Il mio problema che quando clicco sul link avanti non viene mantenuto l'id_categoria nella query (stampando la query ottengo categoria_ID = "") e quindi non riesco a visualizzare oltre la prima pagina.

Spero che qualcuno mi possa aiutare. Grazie!

inviato 9 anni fa
cris
cris
1
modificato 9 anni fa
X 0 X

il problema in queste righe:

extract($_POST);

$_SESSION["cat"]=$categoria;

$cat=$_SESSION["cat"];

sai cosa fanno?

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

l'idea quella di mettere in sessione la categoria che l'utente sceglie nella combobox...in modo che tutte le volte nella SELECT si ricerchi quella categoria spostandosi da una pagina all'altra.

Spero mi possiate dare qualche suggerimento...

risposto 9 anni fa
cris
cris
1
X 0 X

allora potresti procedere cos:

if($_POST) {
 $_SESSION["cat"]=$_POST['categoria'];
}
$cat=$_SESSION["cat"];

:bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Ho risolto il problema! :)

Non so davvero come ringraziarti per il prezioso consiglio!

risposto 9 anni fa
cris
cris
1
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda