Sistema di messaggi a

valient13

Utente Attivo
6 Apr 2012
96
0
0
Sicilia
Ho creato un sistema di messaggi privati, solo che quando arriva il messaggio invece dell'id mi dovrebbe comparire il nome, cioè dovrei trasformare l'id in nome del mittente vi posto il codice:

inviamessaggio.php (form)
PHP:
<?php include("header.php");
# inizializzazione della sessione
@session_start();
# inclusione del file di funzione
# istanza della classe
$obj = new Iscrizioni();
# identificativo univoco dell'utente
$id_utente = $_SESSION['id_utente'];
# chiamata al metodo per la verifica della sessione
if (!$obj->verifica_sessione())
{
  #redirect in caso di sessione non verificata
  @header("location:errore2.php");
}
?>
  <!-- Content -->
  <div id="content">
      <div id="conteiner">
      <div align="center">
      <h2>Messaggi</h2>
      <form name="messaggi" method="POST" action="invia.php"> 
      <p><b>ID <?php $obj->mostra_utente($id_utente); ?>:</b> <br />
      <input value="<?php echo $id_utente; ?>" class="tb11" name="mittente" readonly>
      <p><b>ID Destinatario:</b> <br />
      <input type="TEXT" class="tb11" name="destinatario"><br>
    <p><b>Messaggio:</b> <br />
    <textarea name="messaggio" class="tb10" rows="6" cols="20"></textarea><br>
    <input name="data" type="hidden" id="data" value="<?php print (date ("d/m/Y - H:i")); ?>" />
    <br>
    <button name="invia">Invia</button>
    </form>
    </div>
      </div>
    <?php include("sidebar.php"); ?>
  </div>
  
<?php include("footer.php"); ?>

invia.php
PHP:
<?php
include ("header.php");?>
 <!-- Content -->
  <div id="content">
      <div id="conteiner">
      <div align="center">
      <h2>Messaggi</h2>
<?php

include ("connessione.php");
$destinatario=$_POST['destinatario'];
$mittente=$_POST['mittente'];
$messaggio=$_POST['messaggio'];
$data=$_POST['data'];
$connessione = mysql_connect($hostname_connessione,$username_connessione,$password_connessione);
$database_select=mysql_select_db($database_connessione,$connessione);
//ci colleghiamo al database
$query="Insert into `messaggi` (`mittente`,`destinatario`,`messaggio`,`data`) VALUES ('$mittente','$destinatario','$messaggio','$data')";
$result=mysql_query($query,$connessione);
    if($result==1)
    echo"<b><font color=green>Messaggio inviato con successo</font></b>";
    else
    echo"<b><font color=red>Messaggio non inviato</font></b>";

?>
    </div>
      </div>
    <?php include("sidebar.php"); ?></div><?php include("footer.php"); ?>

ricevuti.php

PHP:
<?php
include ("header.php");
$id_utente = $_SESSION['id_utente'];
?>
 <!-- Content -->
  <div id="content">
      <div id="conteiner">
      <div align="center">
      <h2>Messaggi</h2>
      
<?php
include ("connessione.php");
    $destinatario=$id_utente;
    $query = "SELECT mittente,messaggio,data FROM messaggi WHERE destinatario='$destinatario' ORDER BY data DESC";
    $result = mysql_query( $query ) or die ("query errata");
        echo "<table style=\"border-collapse: collapse;\" width=\"100%\" border=\"1\"><tr><td style=\"text-align: center; font-weight: bold\" width=\"20%\">Mittente</td><td width=\"60%\" style=\"text-align: center; font-weight: bold\">Messaggio</td><td width=\"20%\" style=\"text-align: center; font-weight: bold\">Data</td></tr>";
        while ($row = mysql_fetch_row($result))
        {
            echo "<tr><td width=\"20%\" align=\"center\">".$row[0]."</td><td width=\"60%\">".$row[1]."</td><td width=\"20%\" align=\"center\" style=\"font-size: 13px;\">".$row[2]."</td></tr>";
        }
        echo "</table>";
  
    ?>
       </div>
      </div>
    <?php include("sidebar.php"); ?></div><?php include("footer.php"); ?>
 
Dovrai modificare il while più o meno così:
PHP:
while ($row = mysql_fetch_assoc($result)) {
    $userSql = sprintf('SELECT * FROM utenti WHERE id = %d', $row['mittente']);
    $userResult = mysql_query($userSql) or die(mysql_error());
    $userRow = mysql_fetch_assoc($userResult);
    
    echo <<<EOF
<tr>
    <td width="20%" align="center">{$userRow['username']}</td>
    <td width="60%">{$row['messaggio']}</td>
    <td width="20%" style="font-size: 13px;">{$row['data']}</td>
</tr>
EOF;
}
 
ho provato cosi:

PHP:
<?php
include ("header.php");
$id_utente = $_SESSION['id_utente'];
?>
 <!-- Content -->
  <div id="content">
  	<div id="conteiner">
  	<div align="center">
  	<h2>Messaggi Ricevuti</h2>
  	
<?php
include ("connessione.php");
    $destinatario=$id_utente;
    $query = "SELECT mittente,messaggio,data FROM messaggi WHERE destinatario='$destinatario' ORDER BY data DESC";
    $result = mysql_query( $query ) or die ("query errata");
        echo "<table style=\"border-collapse: collapse;\" width=\"100%\" border=\"1\"><tr><td style=\"text-align: center; font-weight: bold\" width=\"20%\">Mittente</td><td width=\"60%\" style=\"text-align: center; font-weight: bold\">Messaggio</td><td width=\"20%\" style=\"text-align: center; font-weight: bold\">Data</td></tr>";
        while ($row = mysql_fetch_row($result))
        {
            $userSql = sprintf('SELECT nome_reale FROM iscritti WHERE id_utente = %d', $row['mittente']);
    		$userResult = mysql_query($userSql) or die(mysql_error());
   			$userRow = mysql_fetch_assoc($userResult); 
            echo "<tr><td width=\"20%\" align=\"center\">".$userRow['nome_reale']."</td><td width=\"60%\">".$row[1]."</td><td width=\"20%\" align=\"center\" style=\"font-size: 13px;\">".$row[2]."</td></tr>";
        }
        echo "</table>";
  
    ?>
   	</div>
  	</div>
    <?php include("sidebar.php"); ?></div><?php include("footer.php"); ?>

ma mi da questo errore:
Notice: Undefined index: mittente in ...\www\.....\ricevuti.php on line 19

e non mi fà vedere i nome degli utenti nella tabella.
Forse mi sono spiegato male, io quando invio il messaggio salvo l'id che prendo nella mia sessione, l'id della persona a cui devo inviare il messaggio, il messaggio e la data.
La tabella è fatta cosi:
id mittente destinatario messaggio data
1 4 5 a ...

Io ora nel file ricevuti.php dovrei trasformare l'id del mittente in nome del mittente..
Grazie per l'aiuto
 
Ultima modifica:
Ciao valient13,
ti prego in futuro di attendere una risposta senza avere fretta, poiuchè ognuno di noi si presta per questo fine volontariamente e gratuitamente.
Buona continuazione nel Forum Mr.Webmaster :D

EDIT: hai visto? Il buon SuperMod alessandro1997 ti ha puntualmente risposto.
 
Ultima modifica:

Discussioni simili