- Home
- Categorie
- Coding e Sistemistica
- PHP
- Nome utente collegato a una riga di testo
-
Nome utente collegato a una riga di testo
Ciao a tutti, anche se scrivo per la prima volta mi sono iscritto qualche giorno fa. Devo ammettere che grazie alle vostre guide sono riuscito a implementare all'interno del mio sito alcune funzioni in php.
Ora però sono arrivato a un ostacolo che non riesco a superare. Dopo aver creato una sezione privata del mio sito, ho creato una piccola chat in ajax e gli utenti iscritti possono inviare righe di testo.
Il problema è che non riesco ad associare la riga di testo a quel determinato utente. Ecco il codice.<?
$user='';
$password='';
$host='';
$db='';
?>
<?
$testo=$_GET['testo']; //variabile che prende il contenuto testo della chat
mysql_connect($host,$user,$password)or die("Inserisci i dati correttamente");
mysql_select_db("$db")or die("Errore database");
$prova=mysql_query("insert into messaggi(testo) values('$testo')");
?>
<?
mysql_connect($host,$user,$password)or die("Inserisci i dati correttamente");
mysql_select_db("$db")or die("Errore database");
$id=$_SESSION['login'];
$sql="SELECT * FROM utenti WHERE utenti.id='$id'";
$query=@mysql_query($sql) or die (mysql_error());
$row=mysql_fetch_array($query);
$prova=mysql_query("select * from messaggi order by id desc limit 15");
while($array=mysql_fetch_array($prova)){
echo"<b>Qui andrebbe il nome utente</b>: $array[testo]<br>"; }
?>Questo è quanto sono riuscito a elaborare, a meno errori di copiatura dal file, ho testato il codice ed apparentemente funziona.
Infatti quando apro la chat, scrive regolarmente il testo. Ovviamente non stamperà il nome utente perché non sono riuscito a implementarlo.
Il nome utente e il testo vengono da due diverse tabelle mysql.Qualcuno ha qualche dritta per aggiungere il nome utente?
Vi ringrazio in anticipo
-
Ciao Lionel e bentrovato
Dato che hai implementato un'area privata immagino che non ti verrà difficile recuperare l'id utente di chi scrive, giusto? Sicuramente dalla sessione
Non devi far altro che aggiungere un altro campo alla tabella messaggi: id_user.
E quindi variare lo script in questo modo:
[php]$id_user=$_SESSION['id']; //sto dando per scontato che nella tua sessione sia presente l'id utente
$testo=$_GET['testo'];
...........
...........
$prova=mysql_query("insert into messaggi(testo,id_user) values('$testo','$id_user')");[/php]Questo per quanto riguarda la creazione del Record nella tabella.
Invece per visualizzarlo dovrai recuperare anche l'id_user, oltre che il testo e quindi associare tramite una SELECT l'effettivo nome utente corrispondente a quell'id_user:
[php]$sql="SELECT utenti.nome, messaggi.testo FROM utenti JOIN messaggi ON utenti.id = messaggi.id_user";
$query=@mysql_query ($sql) or die (mysql_error());
while($array=mysql_fetch_array($query)){
echo"<b>$array['id']</b>: $array[testo]<br>"; }
[/php]
Penso così debba andare, facci sapere.
-
Intanto ti ringrazio per la tua risposta celere. Ho seguito i tuoi consigli ma il risultato è un errore:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/apache2-default/gestisci.php on line 23
Nella prima parte non ha segnalato errori, ed è questa :<?
$id=$_SESSION['id'];
$testo=$_GET['testo'];
mysql_connect($host,$user,$password)or die("non riesco a connettermi");
mysql_select_db("$db")or die("non riesco selezionare il database");
$prova=mysql_query("insert into messaggi(testo,id) values('$testo','$id')");
?>
Ho cambiato il record id_user con il record presente nel mio database, cioè id.La seconda parte è questa:
Aggiungo le tabelle mysql così ti fai un'idea di come sono strutturare:utenti: (id, user, pass, mail)
messaggi: (id, utente, testo)
Ora il codice:<?
$sql="SELECT utenti.user, messaggi.testo FROM utenti JOIN messaggi ON utenti.id = messaggi.id";
$query=@mysql_query($sql) or die (mysql_error());
while($array=mysql_fetch_array($query)){
echo"<br>$array['id']</br>: $array[testo]<br>"; } }
?>Come si può notare ho selezionato in utenti, il record user (che sarebbe il riferimento al tuo record 'nome').
L'errore è relativo alla riga 23 cioè il ciclo while, ma immagino che l'errore risalga alla riga precedente del ciclo.
-
Prova cosi:
<?php
$sql="SELECT utenti.user, messaggi.testo FROM utenti JOIN messaggi ON utenti.id = messaggi.id";
$query=@mysql_query($sql) or die (mysql_error());
while($array=mysql_fetch_array($query)){
echo"<br>".$array['id']."</br>: ".$array['testo']."<br>"; } }
?>
-
Prova cosi:
<?php
$sql="SELECT utenti.user, messaggi.testo FROM utenti JOIN messaggi ON utenti.id = messaggi.id";
$query=@mysql_query($sql) or die (mysql_error());
while($array=mysql_fetch_array($query)){
echo"<br>".$array['id']."</br>: ".$array['testo']."<br>"; }
?>
In questo modo il codice non presenta errori. Ma la chat smette di funzionare, non invia più neanche il testo.
Facendo caso al database, ho notato che il database registra l'invio della stringa.
-
Prova in questo modo:
<?
$user='';
$password='';
$host='';
$db='';
?>
<?
$testo=$_GET['testo']; //variabile che prende il contenuto testo della chat
mysql_connect($host,$user,$password)or die("Inserisci i dati correttamente");
mysql_select_db("$db")or die("Errore database");
$prova=mysql_query("insert into messaggi(testo) values('$testo')");
?>
<?
$id=$_SESSION['login'];
$sql="SELECT * FROM utenti WHERE utenti.id='$id'";
$query=@mysql_query($sql) or die (mysql_error());
$row=mysql_fetch_array($query);$sql="SELECT utenti.user, messaggi.testo FROM utenti JOIN messaggi ON utenti.id = messaggi.id";
$query=@mysql_query($sql) or die (mysql_error());
while($array=mysql_fetch_array($query)){
echo"<br>".$array['id']."</br>: ".$array['testo']."<br>";
}
?>
-
Ho risolto, grazie a tutti, i vostri consigli mi sono tornati davvero preziosi.
Alla fine il problema stava nel codice ajax che avevo sviluppato. In poche parole dopo aver seguito i vostri consigli non riusciva più a trovare i dati inviati tramite il form dei messaggi per colpa di una variabile imposta sul codice ajax. Infatti il database registrava tutto ma di fatto nelle pagine non veniva eseguito nulla...Allora mi sono detto visto che ora so come richiamare gli utenti e il testo, perché non creare una chat interamente in php?
Ebbene, probabilmente con molta fortuna, tante prove e qualche guida trovata in giro per la rete e il forum, sono riuscito a implementare una chat in php.L'ho testata e funziona egregiamente. Quindi come sono stato aiutato, sono disponibile ad aiutare tutti coloro che hanno bisogno di creare una piccola chat.
Grazie ancora!