- Home
- Categorie
- Coding e Sistemistica
- PHP
- Refresh di un campo textarea
-
Refresh di un campo textarea
Salve a voi tutti...
sto pian piano realizzando questa piccola minichat per un sito che sto facendo....[php]
<div id="minichat"><?
include "config.php"; // file di connessione al Db
$id_user="";
$text="";$id_user=$_SESSION['nickname'];
$text=htmlentities($_POST['text']);if ((empty($text))== false) // se $text non è vuoto o nullo
{
$sql = "INSERT INTO minichat (id_user, testo) VALUES ('$id_user','$text')";
$query= @mysql_query ($sql) or die (mysql_error());
}$sql_select="SELECT id_user, testo FROM minichat ORDER BY id DESC LIMIT 10";
$query_select= @mysql_query($sql_select) or die (mysql_error());
?>
<table>
<caption>Minichat</caption>
<th colspan="2">Messaggi</th>
<?
while($row=mysql_fetch_array($query_select))
{
echo "<tr><td>".$row['id_user']."</td><td>".$row['testo']."</tr>";
}?>
</table>
<?
//Apro la sessione e...
session_start();
//verifico che dopo il login io abbia la chiave di sessione ad 1
if($_SESSION['logged']==1)
//se si...
echo "<form action="index.php" name="chat" method="POST">
<textarea rows="2" name="text" cols="36"></textarea>
<input type="submit" value="Invia"><br>
<img src="faccine/smile.gif" OnClick="document.chat.text.value+=':-)'">
<img src="faccine/faccia.gif" OnClick="document.chat.text.value+='°_°'">"
;?>
</form>
</div>[/PHP]Be..ho fatto in modo che la chat fosse visibile a tutti ma che potesse scrivere solo chi è registrato...
Poi ho incluso questa pagina nell index tramite include,fin qui' tutto bene...ora però c'è un problema...non ho capito come fare per aggiornare la chat da sola...senza che l utente debba per forza aggiornare la pagina per poter leggere il contenuto di ciò che viene scritto nella chat...
Come potrei fare?Grazie a voi tutti
-
Potresti inserire questo codice in una pagina a parte, modificandolo...
<html>
<head>
///fai il refresh
ecc..
<?
while($row=mysql_fetch_array($query_select))
{
echo "<tr><td>".$row['id_user']."</td><td>".$row['testo']."</tr>";
}E includerlo tramite un iframe...
-
[..]
Si avevo pensato anche io di includere in un iframe..:)
Grazie ilnet;)
Comunque ho notato una cosa in questa chat.....come mai ogni volta che aggiorno la pagina mi riscrive l ultimo messaggio scritto?
Cioè se scrivo ciao e aggiorno 10 volte la pagina mi riscrive ciao 10 volte
devo impostare qualche controllo o modificare lo script?Grazie
-
Se aggiorni la pagina , aggiorni anche i dati post e quindi riscrivi nel db...Devi aggiornare solo l'iframe...
A meno che tu nella pagina dentro l'iframe non inserisci anche i dati...Quella pagina devi usarla solamente per leggere i dati...
-
Quindi..ricapitolando..se ho ben capito..
La pagina minichat.php la divido in due...cioè quella per la visualizzazione e quella per l invio dei dati...e poi imposto un refresh in quella per la visualizzazione...e dovrei risolvere tutto...giusto?:)
-
Esattamente
-
@ilnetsurfer said:
Esattamente
Be...c'è qualcosa che non va...praticamente la minichat deve essermi visibili sulla index del sito...io ho fatto cosi'....ho creato tre pagine...
Appunto index.php cioè questa
[PHP]<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<LINK href="stile.css" rel="stylesheet" type="text/css">
<body><iframe src="miosito.minichat2.php" width="300" height="300">
</iframe>
<?include "iscrizioneform.php";
include "minichat.php";
?>
[/PHP]
in cui ho incluso minichat.php che sraebbe la pagina in cui ci sta la parte di codice con il form...che sarebbe questa
[PHP]
<html>
<head><LINK href="stile.css" rel="stylesheet" type="text/css">
<div id="form"><?
//Apro la sessione e...
session_start();
// Sessione impostata a 10 min
ini_set('session.gc_maxlifetime', '1800');
//verifico che dopo il login io abbia la chiave di sessione ad 1
if($_SESSION['logged']==1)
//se si...
echo "<form action="minichat2.php" name="chat" method="POST">
<textarea rows="2" name="text" cols="36"></textarea>
<input type="submit" value="Invia"><br>
<img src="faccine/smile.gif" OnClick="document.chat.text.value+=':-)'">
<img src="faccine/faccia.gif" OnClick="document.chat.text.value+=':-+'">"
;?>
</form>
</div>
[/PHP]il form punta a minichat2.php che sarebbe la pagina in cui ho aggiunto anche il refresh ecco la pagina
[PHP]
<html>
<head>
<META HTTP-EQUIV="refresh" CONTENT =3>
<LINK href="stile.css" rel="stylesheet" type="text/css">
<?
include "config.php"; // file di connessione al Db
$id_user="";
$text="";$id_user=$_SESSION['nickname'];
$text=htmlentities($_POST['text']);if ((empty($text))== false) // se $text non è vuoto o nullo
{
$sql = "INSERT INTO minichat (id_user, testo,tempo) VALUES ('$id_user','$text',CURRENT_TIME())";
$query= @mysql_query ($sql) or die (mysql_error());$recuperoid=mysql_insert_id();
$trim_id=$recuperoid-60;$sql_delete="DELETE FROM minichat WHERE id<'$trim_id'";
$query= @mysql_query ($sql_delete) or die (mysql_error());}
$sql_select="SELECT id_user, testo,tempo FROM minichat ORDER BY id DESC LIMIT 10";
$query_select= @mysql_query($sql_select) or die (mysql_error());
?>
<table>
<div id="logominichat"><img src="minichat.gif"></div>
<th colspan="2">Messaggi</th>
<?while($row=mysql_fetch_array($query_select))
{
$row['testo'] = str_replace(":-)", "<img src='/faccine/smile.gif'>", $row['testo']);
$row['testo'] = str_replace(":-+", "<img src='/faccine/faccia.gif'>", $row['testo']);
echo "<tr><td>".$row['id_user']."</td><td>".$row['testo']."</td><td>".$row['tempo']."</tr>";
}?>
</table>
</div>
[/PHP]
Ora il problema e che quando clicco su invia non mi rimane su index ma va sulla pagina minichat2.php
-
Modifica minichat.php così:
[php]
<?php
include "config.php";
if(isset($_POST)){$id_user="";
$text="";$id_user=$_SESSION['nickname'];
$text=htmlentities($_POST['text']);
if ((empty($text))== false) // se $text non è vuoto o nullo
{
$sql = "INSERT INTO minichat (id_user, testo,tempo) VALUES ('$id_user','$text',CURRENT_TIME())";
$query= @mysql_query ($sql) or die (mysql_error());$recuperoid=mysql_insert_id();
$trim_id=$recuperoid-60;$sql_delete="DELETE FROM minichat WHERE id<'$trim_id'";
$query= @mysql_query ($sql_delete) or die (mysql_error());}
}else{
}
?>
<html>
<head><LINK href="stile.css" rel="stylesheet" type="text/css">
<div id="form"><?php
//Apro la sessione e...
session_start();
// Sessione impostata a 10 min
ini_set('session.gc_maxlifetime', '1800');
//verifico che dopo il login io abbia la chiave di sessione ad 1
if($_SESSION['logged']==1)
//se si...
echo "<form action="minichat.php" name="chat" method="POST">
<textarea rows="2" name="text" cols="36"></textarea>
<input type="submit" value="Invia"><br>
<img src="faccine/smile.gif" OnClick="document.chat.text.value+=':-)'">
<img src="faccine/faccia.gif" OnClick="document.chat.text.value+=':-+'">"
;?>
</form>
</div>[/php]
E minichat2.php così:
[php]
<html>
<head>
<META HTTP-EQUIV="refresh" CONTENT =3>
<LINK href="stile.css" rel="stylesheet" type="text/css">
<?
include "config.php"; // file di connessione al Db$sql_select="SELECT id_user, testo,tempo FROM minichat ORDER BY id DESC LIMIT 10";
$query_select= @mysql_query($sql_select) or die (mysql_error());
?>
<table>
<div id="logominichat"><img src="minichat.gif"></div>
<th colspan="2">Messaggi</th>
<?while($row=mysql_fetch_array($query_select))
{
$row['testo'] = str_replace(":-)", "<img src='/faccine/smile.gif'>", $row['testo']);
$row['testo'] = str_replace(":-+", "<img src='/faccine/faccia.gif'>", $row['testo']);
echo "<tr><td>".$row['id_user']."</td><td>".$row['testo']."</td><td>".$row['tempo']."</tr>";
}?>
</table>
</div>
[/php]
-
nulla...quando invio i messaggi e clicco su invio mi va a finire su minichat.php ,cosi facendo mi scompare la index su cui ho anche l iframe e mi visualizza sola la pagina minichat.php su cui c'è il form per l inviod ei messaggi:(
-
Allora, modifica index.php così:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<LINK href="stile.css" rel="stylesheet" type="text/css">
<body><iframe src="miosito.minichat2.php" width="300" height="300">
</iframe>
<?include "iscrizioneform.php";
include "minichat.php";
include "config.php";
if(isset($_POST)){$id_user="";
$text="";$id_user=$_SESSION['nickname'];
$text=htmlentities($_POST['text']);
if ((empty($text))== false) // se $text non è vuoto o nullo
{
$sql = "INSERT INTO minichat (id_user, testo,tempo) VALUES ('$id_user','$text',CURRENT_TIME())";
$query= @mysql_query ($sql) or die (mysql_error());$recuperoid=mysql_insert_id();
$trim_id=$recuperoid-60;$sql_delete="DELETE FROM minichat WHERE id<'$trim_id'";
$query= @mysql_query ($sql_delete) or die (mysql_error());}
}else{
}
?>E minichat.php così:
<html>
<head><LINK href="stile.css" rel="stylesheet" type="text/css">
<div id="form"><?php
//Apro la sessione e...
session_start();
// Sessione impostata a 10 min
ini_set('session.gc_maxlifetime', '1800');
//verifico che dopo il login io abbia la chiave di sessione ad 1
if($_SESSION['logged']==1)
//se si...
echo "<form action="minichat.php" name="chat" method="POST">
<textarea rows="2" name="text" cols="36"></textarea>
<input type="submit" value="Invia"><br>
<img src="faccine/smile.gif" OnClick="document.chat.text.value+=':-)'">
<img src="faccine/faccia.gif" OnClick="document.chat.text.value+=':-+'">"
;?>
</form>
</div>
-
Nulla...al click su invia mi manda su minichat.php ed esce dalla index:(e per giunta non mi stampa a video nulla di ciò che scrivo....
-
Perdonami, errore mio....
Minichat.php[php]
<html>
<head><LINK href="stile.css" rel="stylesheet" type="text/css">
<div id="form"><?php
//Apro la sessione e...
session_start();
// Sessione impostata a 10 min
ini_set('session.gc_maxlifetime', '1800');
//verifico che dopo il login io abbia la chiave di sessione ad 1
if($_SESSION['logged']==1)
//se si...
echo "<form action="index.php" name="chat" method="POST">
<textarea rows="2" name="text" cols="36"></textarea>
<input type="submit" value="Invia"><br>
<img src="faccine/smile.gif" OnClick="document.chat.text.value+=':-)'">
<img src="faccine/faccia.gif" OnClick="document.chat.text.value+=':-+'">"
;?>
</form>
</div>
[/php]
-
Perfetto:)
Funziona tutto a dovere ora...l errore stava nel form action;)
Grazie;)
-
Prego