• User Attivo

    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]


  • User

    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


  • User Attivo

    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 = ... ;


  • User

    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]


  • User Attivo

    Sostituisci

    $titoloforum = $HTTP_POST_VARS["titoloforum"];

    con

    $titoloforum = $_POST["titoloforum"];


  • User

    Niente,_mi da lo stesso errore.


  • User Attivo

    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


  • User

    [...]

    • 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.

  • User Attivo

    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


  • User

    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...