ciao spero possiate aiutarmi... prima di esporvi il problema vi dico la struttura dell'inseriemnto dei commenti che sto usando:
tabelle:
CREATE TABLE `articoli` (
`art_id` int(11) NOT NULL auto_increment,
`art_autore` varchar(40) NOT NULL default '',
`art_titolo` varchar(100) NOT NULL default '',
`art_articolo` text NOT NULL,
`art_data` date NOT NULL default '0000-00-00',
PRIMARY KEY (`art_id`)
) ;
CREATE TABLE `commenti1` (
`com_id` int(5) NOT NULL auto_increment,
`com_art` int(11) NOT NULL default '0',
`com_autore` varchar(40) NOT NULL default '',
`com_testo` varchar(255) NOT NULL default '',
PRIMARY KEY (`com_id`)
);
CREATE TABLE `utenti` (
`id_` int(11) NOT NULL auto_increment,
`username` varchar(30) NOT NULL default '',
`password` varchar(100) NOT NULL default '',
`email` varchar(60) NOT NULL default '',
PRIMARY KEY (`id`)
);
la pagina che visualizza tutti gli articoli (index.php):
Codice PHP:
<?
// includiamo il file di configurazione
@include "configr.php";
// includiamo la pagina contenente il codice per la creazione delle anteprime
@require "anteprima.php";
// estraiamo i dati relativi agli articoli dalla tabella
$sql = "SELECT * FROM articoli ORDER BY art_data DESC";
$query = @mysql_query($sql) or die (mysql_error());
//verifichiamo che siano presenti records
if(mysql_num_rows($query) > 0){
// se la tabella contiene records mostriamo tutti gli articoli attraverso un ciclo
while($row = mysql_fetch_array($query)){
$art_id = $row['art_id'];
$autore = stripslashes($row['art_autore']);
$titolo = stripslashes($row['art_titolo']);
$data = $row['art_data'];
$articolo = stripslashes($row['art_articolo']);
//valorizziamo una variabili con il link all'intero articolo
echo "<h2>".$titolo."</h2>";
// creaimo l'anteprima che mostra le prime 30 parole di ogni singolo articolo
// per farlo utilizzo una funzione che vi presenterò più avanti
echo @anteprima($articolo, 30, $link);
echo "<br><br>";
// formattiamo la data nel formato europeo
$data = preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3-$2-$1', $data);
// stampiamo una serie di informazioni
echo "Scritto da <b>". $autore . "</b>";
echo "| Articolo postato il <b>" . $data . "</b>";
echo "<a href=\"articolo.php?id=$art_id\">Leggi tutto</a>";
echo "| Commenti: ";
// mostriamo il numero di commenti relativi ad ogni articolo
$conta = "SELECT COUNT(com_id) as conta from commenti1 WHERE com_art = '$art_id'";
$conto = @mysql_query ($conta);
$tot = @mysql_fetch_array ($conto);
echo $sum2 = $tot['conta'];
echo "<hr>";
}
}else{
// se in tabella non ci sono records...
echo "Nessun articolo presente.";
}
?>
la pagina che visualizza un articolo (articolo.php):
Codice PHP:
<?
// controlliamo che sia stato inviato un id numerico alla pagina
if(isset($_GET['id'])&&(is_numeric($_GET['id']))){
// valorizziamo la variabile relativa all'id dell'articolo e includiamo il file di configurazione
$art_id = $_GET['id'];
@include "configr.php";
// selezioniamo dalla tabella i dati relativi all'articolo
$sql = "SELECT art_autore,art_titolo,art_data,art_articolo FROM articoli WHERE art_id='$art_id'";
$query = @mysql_query($sql) or die (mysql_error());
// se per quell'id esiste un articolo..
if(mysql_num_rows($query) > 0){
// ...estraiamo i dati e mostriamoli a video
$row = mysql_fetch_array($query) or die (mysql_error());
$autore = stripslashes($row['art_autore']);
$titolo = stripslashes($row['art_titolo']);
$data = $row['art_data'];
$articolo = stripslashes($row['art_articolo']);
echo "<h2>".$titolo."</h2>" . $articolo . "<br><br>";
$data = preg_replace('/^(.{4})-(.{2})-(.{2})$/','$3-$2-$1', $data);
echo "Scritto da <b>". $autore . "</b>";
echo "| Articolo postato il <b>" . $data . "</b>";
// link alla pagina dei commenti
echo "<br><a href=\"insert_comment.php?id=$art_id\">Invia un commento</a><br><br>";
// visualizzianmo tutti i commenti
$sql_com = "SELECT com_autore, com_testo FROM commenti1 WHERE com_art='$art_id'";
$query_com = @mysql_query($sql_com) or die (mysql_error());
if(mysql_num_rows($query_com) > 0){
echo "Commenti:<br>";
while($row_com = mysql_fetch_array($query_com)){
$com_autore = stripslashes($row_com['com_autore']);
$com_testo = stripslashes($row_com['com_testo']);
echo $com_testo . "<br>";
echo "Inserito da <b>". $com_autore . "</b>";
echo "<hr>";
}
}
}
}else{
// se per l'id non esiste un articolo..
echo "Nessun articolo trovato.";
}
?>
la pagina per inserire un commento (insert_comment.php):
Codice PHP:
<?php include("sopra.php"); ?>
<div id="contenuto">
<h1>Inserisci un tuo commento:</h1>
<?
// includiamo il file di configurazione
@include "configr.php";
// se sono stati inviati dei parametri valorizziamo con essi le variabili
// per l'inserimento nella tabella
if(isset($_POST['submit'])){
if(isset($_POST['autore'])){
$autore = addslashes($_POST['autore']);
}
if(isset($_POST['testo'])){
$testo = addslashes($_POST['testo']);
}
if(isset($_POST['id'])){
$com_art = addslashes($_POST['id']);
}
// popoliamo i campi della tabella commenti con i dati ricevuti dal form
$sql = "INSERT INTO commenti1 (com_autore, com_testo, com_art) VALUES ('$autore', '$testo', '$com_art')";
// se l'inserimento ha avuto successo inviamo una notifica
if (@mysql_query($sql) or die (mysql_error())){
echo "Commento inserito con successo.";
}
}else{
//controlliamo che l'id dell'articolo sia realamente esistente
if(isset($_GET['id'])&&(is_numeric($_GET['id']))){
$com_art = addslashes($_GET['id']);
$sql = "SELECT art_id FROM articoli WHERE art_id='$com_art'";
$query = @mysql_query($sql) or die (mysql_error());
if(mysql_num_rows($query) > 0){
// se non sono stati inviati dati dal form mostriamo il modulo per l'inserimento
?>
<form action="insert_comment.php" method="post">
Autore:<br>
<input name="autore" type="text" size="20"><br>
Testo:<br>
<textarea name="testo" cols="40" rows="10"></textarea><br>
<input name="id" type="hidden" value="<? echo $com_art; ?>">
<input name="submit" type="submit" value="Invia">
</form>
<?
// se l'id dell'articolo non esiste o non è numerico inviamo delle notifiche
}else{
echo "Impossibile inserire un commento.";
}
}else{
echo "Impossibile inserire un commento.";
}
}
?>
allora nel mio sito c'è la possibilità di registrarsi e quindi di eseguire un accesso con i propri dati contenuti nella tabella utenti.
io vorrei riuscire a fare in modo che quando uno pubblica un commento ad un articolo in automatico l'autore del commento deve coincidere con il suo username.
mi aiutate? come modifico il codice php? devo modificare anche qualcosa nelle tabelle??
grazie dell'aiuto