- Home
- Categorie
- Coding e Sistemistica
- Coding
- php e access - paginazione dati
-
Convertila in questo modo, utilizzando gli apici per contenere il valore:
[php]
$query = "SELECT TOP $num_of_val ID, Titolo
FROM Discussione
WHERE (((ID) NOT IN (SELECT TOP $start_val ID FROM Forum ORDER BY ID))) AND
ID_Forum = '" . $titoloforum . "'";
[/php]
-
Se la converto come mi hai consigliato mi esce errore, mentre se la lascio come avevo scritto in precedenza quando clicco su pagina successiva mi ritorna quest'errore:
Notice: Undefined index: titoloforum in c:\programmi\easyphp1-7\www\mancini3_private\elencodiscussioni.php on line 24
Warning: odbc_do(): SQL error: [Microsoft][Driver ODBC Microsoft Access] Errore di sintassi (operatore mancante) nell'espressione della query '(((ID) NOT IN (SELECT TOP 11 ID FROM Forum ORDER BY ID))) AND ID_Forum ='., SQL state 37000 in SQLExecDirect in c:\programmi\easyphp1-7\www\mancini3_private\elencodiscussioni.php on line 42
Error executing query SELECT TOP 10 ID, Titolo FROM Discussione WHERE (((ID) NOT IN (SELECT TOP 11 ID FROM Forum ORDER BY ID))) AND ID_Forum = ORDER BY ID
-
Dall'errore si vede che $titoloforum non è stato definito, quindi contine un valore vuoto e non è possibile fare una query sul nulla se non usi apici.
Questo è un errore: ... AND ID_Forum = ORDER BY ID
che dovrebbe essere riscritto in questo modo ... AND ID_Forum = ' ' ORDER BY ID.Controlla bene dove viene definita $titoloforum, cioè dove c'è l'assegnazione del valore:
$titoloforum = ... ;
-
Questo è il codice della mia pagina, quando clicco su precedente o successiva mi da quell'errore...
[php]
<?php$odbc_dns = "db_forum";
$odbc_userid = "";
$odbc_password = "";$titoloforum = $HTTP_POST_VARS["titoloforum"];
$p = @$_GET["p"];
if(($p == "")||($p <= 0))
$p = 1;$num_of_val = 10;
$start_val = $p;
$query = "SELECT TOP $num_of_val ID, Titolo
FROM Discussione
WHERE (((ID) NOT IN (SELECT TOP $start_val ID FROM Forum ORDER BY ID))) AND
ID_Forum = " . $titoloforum . "
ORDER BY ID";if ( !( $odbc_db = odbc_connect($odbc_dns, $odbc_userid, $odbc_password) ) )
die("Could not connect to ODBC data source $odbc_dns");if ( !( $odbc_rs = odbc_do($odbc_db, $query) ) )
die("Error executing query $query");$num_cols = odbc_num_fields($odbc_rs);
if ($num_cols < 1)
die("Query retured an empty set");echo "<TABLE>";
echo("<TR>");
for($a = 1; $a <= $num_cols; $a++)
{
echo "<TH><B>
<font face='Arno Pro Light Display' size='5'>";
echo odbc_field_name($odbc_rs, $a);
echo "</TH></B></font>";
}
echo "</TR>";while( odbc_fetch_row($odbc_rs) )
{
echo "<TR>";
for($a = 1; $a <= $num_cols; $a++)
{
echo "<TD>
<font face='Arno Pro Light Display' size='4'>";
echo odbc_result($odbc_rs, $a);
echo "</TD>";
}
echo "<TD><input type='radio' name='titolodiscussione' value=".odbc_result($odbc_rs, "Id")."></TD></TR>";
}echo "</TABLE>";
$next_link_prec = $p - $num_of_val;
echo "<br><br><a href="elencodiscussioni.php?p=$next_link_prec">Pagina Precedente</a>";$next_link_succ = $p + $num_of_val;
echo "<br><br><a href="elencodiscussioni.php?p=$next_link_succ">Pagina Successiva</a>";?>
[/php]
-
Sostituisci
$titoloforum = $HTTP_POST_VARS["titoloforum"];
con
$titoloforum = $_POST["titoloforum"];
-
Niente,_mi da lo stesso errore.
-
Ciao,
non ho seguito l'andamento di tutto lo script e adesso non ho tempo di leggere tutti i post, quindi mi baso sull'ultima parte di codice postata.Ti lascio in eredità qualche domanda e considerazione, che spero possa aiutarti a trovare l'errore:
- Sei sicuro di passare a quello script un dato di nome titoloforum?
- E' un valore numerico o testuale?
- Quando clicchi su Pagina precedente e Pagina successiva il parametro titoloforum non viene trasmesso.
Alessandro
-
[...]
- Si, il titoloforum viene passato, soltanto quando clicco su precedente o successiva non mi viene trasmesso.
- E' un valore numerico.
- Come detto sopra funziona fino a quando non clicco uno dei due collegamenti.
-
Allora si dovrebbe risolvere in fretta:
[PHP]
$titoloforum = intval(isset($_POST["titoloforum"])?$_POST["titoloforum"]:$_GET["titoloforum"]);.......
$next_link_prec = $p - $num_of_val;
echo "<br><br><a href="elencodiscussioni.php?titoloforum=".$titoloforum."&p=$next_link_prec">Pagina Precedente</a>";$next_link_succ = $p + $num_of_val;
echo "<br><br><a href="elencodiscussioni.php?titoloforum=".$titoloforum."&p=$next_link_succ">Pagina Successiva</a>";[/PHP]
Alessandro
-
Grazie mille,_risolto... un'altra cosa se possibile,_senza aprire una nuova discussione :
Ho tre tabelle:
FORUM (ID,Titolo,Descrizione)
DISCUSSIONE ( ID,TITOLO,ID_FORUM)
MESSAGGIO(ID,TESTO,ID_DISCUSSIONE,USERNAME,DATA,ORA)Ho bisogno di una query che mi dia il forum con più discusso, cioè con più messaggi all'interno delle discussioni, e un'altra che mi dia la discussione più discussa,_cioè quella con più messaggi al suo interno. Come devo fare???
Grazie mille...