[RISOLTO] Inserimento nel database

  • Creatore Discussione Creatore Discussione Altutto
  • Data di inizio Data di inizio

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?
 
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);
//....
 
Sì, è un errore di copiatura, devo averlo cancellato quando ho rimosso dell'array le voci che sostituivano le parole offensive (che ho ritenuto opportuno non riportare :p ).
 
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
 
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:
 

Discussioni simili