[RISOLTO] Inserimento nel database

Altutto

Utente Attivo
30 Set 2013
262
0
16
stubborn.altervista.org
Ho un problema con questo script per inserire commenti (e alcuni dei loro dati) nel database: esso infatti non inserisce nulla nel campo id_articolo, che dovrebbe invece essere passato tramite GET. Ho provato a stampare gli errori con error_reporting(E_ALL); , ma non viene fuori nulla.
Tabella: tb_chat.
Struttura: id_chat (auto_increment)
id_articolo (dovrebbe essere passato tramite GET, indica l'id dell'articolo che si vuole commentare);
user_chat (l'utente che ha inviato il commento);
mex_chat (il messaggio);
data (la data di invio del commento).

Codice di art.php?articolo=idarticolo, al quale l'utente accede per inviare il commento:
PHP:
// [...]
echo '<p>Stai commentando a nome di: <b>';
echo $username; 
echo '</b></p><form name="chat" method="post"  
action="messaggio.php" target="MSG">
<textarea name="messaggio" id="messaggio"  style="width:100%; height:10%; font-family:Arial,Verdana,Geneva;"></textarea>
<input type="submit" value="Pubblica">
</form>
<div id="CHAT"></div>
<iframe src="messaggio.php?articolo='.$articolo.'" name="MSG" id="MSG"></iframe>';
messaggio.php

PHP:
<?php
error_reporting(E_ALL);  
//inizio codice per l'integrazione del login con phpbb
    define('IN_PHPBB', true);
    $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '../../f/';
    $phpEx = substr(strrchr(__FILE__, '.'), 1);
    include($phpbb_root_path . 'common.' . $phpEx);

    $user->session_begin();
    $auth->acl($user->data);
    $user->setup();
//fine codice per l'integrazione del login con phpbb
$usern = $user->data['username'];
  if(isset($_POST['messaggio'])){
//includo i dati di connessione
    include 'config.php';
$idartt = $_GET['articolo'];
echo '<script> alert("Id articolo rilevata: '.$idartt.'"); </script>'; 
//l'alert restituisce sempre uno spazio vuoto
$datta = date("d-m-Y H:i");
    $mexx_chat = $_POST['messaggio'];
$sostituire = array ('à','è','ì','ò','ù','<','>');
$con = array ('&agrave;','&egrave;','&igrave;','&ograve;','&ugrave;','&lt;','&gt;);
$mexy_chat = str_replace($sostituire, $con, $mexx_chat);
$mex_chat = nl2br(addslashes($mexy_chat));
    $query = "INSERT INTO $tb (user_chat, mex_chat, data, id_articolo) 
    VALUES ('$usern','$mex_chat','$datta','$idartt')";
    @mysql_query($query)or die (mysql_error());
    @mysql_close();
echo '<script> location.href="art.php?articolo='.$idartt.'" </script>';
  }
?>

Spero di aver fornito tutti i dati necessari... Se volete, vi linko anche la pagina in cui c'è lo script operativo.

Cosa potrei aver sbagliato?
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.041
146
63
PR
www.borgo-italia.it
ciao
se non hai fatto errori nel copiare il codice, un errore è
PHP:
//....
$con = array ('&agrave;','&egrave;','&igrave;','&ograve;','&ugrave;','&lt;','&gt;);
$mexy_chat = str_replace($sostituire, $con, $mexx_chat);
//....
se noti la riga $mexy_chat = str_replace($sostituire, $con, $mexx_chat); è tutta rossa, ti sei dimenticato di chiudere un apice in '&gt;
PHP:
//....
$con = array ('&agrave;','&egrave;','&igrave;','&ograve;','&ugrave;','&lt;','&gt;');
$mexy_chat = str_replace($sostituire, $con, $mexx_chat);
//....
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.041
146
63
PR
www.borgo-italia.it
ciao
prova a mettere un var_dump per vedere come viene la query, in particolare quali valori si perdono
PHP:
<?php
//.....
 $query = "INSERT INTO $tb (user_chat, mex_chat, data, id_articolo) 
VALUES ('$usern','$mex_chat','$datta','$idartt')";
var_dump($query);//poi lo togli
//....
?>
eventualmente poi mettilo anche qui
PHP:
<?php
//...
$idartt = $_GET['articolo'];
var_dump($idartt);
//...
?>
e se ti da NULL verifica perchè non trasmette/riceve il get (potresti aver sbagliato il nome)
se poi ti manca anche qualche altro dato usa ancora il var_dump per i dati che ti mancano
 

Altutto

Utente Attivo
30 Set 2013
262
0
16
stubborn.altervista.org
Infatti mi dice

NULL string(113) "INSERT INTO tb_chat (user_chat, mex_chat, data, id_articolo) VALUES ('altutto','ciao','04-11-2013 20:07','')" ...
Eppure, non mi pare di aver sbagliato nulla :(
<iframe src="messaggio.php?articolo='.$GET['articolo'].'" name="MSG" id="MSG"></iframe>';
è l'iframe che richiama messaggio.php con il GET passato
$idartic = $_GET['articolo'];
è la variabile in messaggio.php che corrisponde a $_GET['articolo'], che dovrebbe essere inserita nel db con $query = "INSERT INTO $tb (user_chat, mex_chat, data, id_articolo)
VALUES ('$usern','$mex_chat','$datta','$idartic')";

:confused::confused::confused::confused: