Pagina 1 di 1

Problema query here

Inviato: 16/07/2013, 17:31
da brunino
Salve... ho istallato una chat (mod) e volevo modificarla affinchè tramite un id nel link potessi cambiare stanza di cht.
Cioè la chat è in chat.php e vorrei poter cambiare stanza chat.php?stanza=1 o chat.php?stanza=1
La chat aveva già di predefinito una colonna nella tabella in cui agisce chiamata chat_id.
La query di scrittura messaggi l'ho modificata e funziona, ma la query di lettura non riesce a leggere le variabili:

a inizio pagina ho scritto:

Codice: Seleziona tutto

<?php $stanza = $_GET ["stanza"]; ?>
questa la query di lettura:

Codice: Seleziona tutto

$sql = 'SELECT * FROM ' . CHAT_TABLE . ' WHERE chat_id = $stanza ORDER BY message_id DESC';
        $result = $db->sql_query_limit($sql, 25);
        $rows = $db->sql_fetchrowset($result);

        foreach ($rows as $row)
        {
            if ($count++ == 0)
            {
                $last_id = $row['message_id'];
            }
            $template->assign_block_vars('chatrow', array(
                'MESSAGE_ID'    => $row['message_id'],
                'USERNAME_FULL'    => clean_username(get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST'])),
                'MESSAGE'        => generate_text_for_display($row['message'], $row['bbcode_uid'], $row['bbcode_bitfield'], $row['bbcode_options']),
                'TIME'            => $user->format_date($row['time']),
                'CLASS'            => ($row['message_id'] % 2) ? 1 : 2,
            ));
        }
        $db->sql_freeresult($result);
Come vedete ho creato il "where" che estrae solo i messaggi che hanno come chat_id quella nel get, ma quando provo mi da questo errore sql:

Codice: Seleziona tutto

SQL ERROR [ mysql4 ]

Unknown column '$stanza' in 'where clause' [1054]

SQL

SELECT * FROM avphpbb_chat WHERE chat_id = $stanza ORDER BY message_id DESC LIMIT 25
ho provato allora a mettere le virgolette:

Codice: Seleziona tutto

$sql = 'SELECT * FROM ' . CHAT_TABLE . ' WHERE chat_id = '$stanza' ORDER BY message_id DESC';
        $result = $db->sql_query_limit($sql, 25);
        $rows = $db->sql_fetchrowset($result);

        foreach ($rows as $row)
        {
            if ($count++ == 0)
            {
                $last_id = $row['message_id'];
            }
            $template->assign_block_vars('chatrow', array(
                'MESSAGE_ID'    => $row['message_id'],
                'USERNAME_FULL'    => clean_username(get_username_string('full', $row['user_id'], $row['username'], $row['user_colour'], $user->lang['GUEST'])),
                'MESSAGE'        => generate_text_for_display($row['message'], $row['bbcode_uid'], $row['bbcode_bitfield'], $row['bbcode_options']),
                'TIME'            => $user->format_date($row['time']),
                'CLASS'            => ($row['message_id'] % 2) ? 1 : 2,
            ));
        }
        $db->sql_freeresult($result);
e mi da errore php:

Codice: Seleziona tutto

Parse error: syntax error, unexpected T_VARIABLE in /membri/nightassassin/chat.php on line 58
la riga 58 è quella della query.
Come potrei risolvere questo problema???
Grazie in anticipo

Re: Problema query here

Inviato: 16/07/2013, 17:40
da Micogian
Prova così:

Codice: Seleziona tutto

$sql = 'SELECT * FROM ' . CHAT_TABLE . ' WHERE chat_id = ' . $stanza . ' ORDER BY message_id DESC'; 
altrimenti così:

Codice: Seleziona tutto

$sql = "SELECT * FROM " . CHAT_TABLE . " WHERE chat_id = '$stanza'  ORDER BY message_id DESC"; 

Re: Problema query here

Inviato: 16/07/2013, 17:47
da brunino
Questo funziona!!!!
Micogian ha scritto:

Codice: Seleziona tutto

$sql = 'SELECT * FROM ' . CHAT_TABLE . ' WHERE chat_id = ' . $stanza . ' ORDER BY message_id DESC'; 
Questo l'avevo già provato e dava errore php
Micogian ha scritto:

Codice: Seleziona tutto

$sql = "SELECT * FROM " . CHAT_TABLE . " WHERE chat_id = '$stanza'  ORDER BY message_id DESC"; 
Grazie infinite!!!

Re: Problema query here

Inviato: 16/07/2013, 18:30
da Micogian
brunino ha scritto: Questo l'avevo già provato e dava errore php
Micogian ha scritto:

Codice: Seleziona tutto

$sql = "SELECT * FROM " . CHAT_TABLE . " WHERE chat_id = '$stanza'  ORDER BY message_id DESC";
Se è l'esempio che hai messo tu dava errore perche hai usato gli apici, devi usare le virgolette e gli apici per la variabile.