• User Attivo

    ok
    Ho creato la tabella cn trecampi

    id (auto increment) nick e testo,
    data nn l ho messo perchè nn voglio che esca....

    poi ho creato tre pagine

    questa e minichat.php
    [PHP]
    <?
    //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...?>

    <html>

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Minichat</title>
    </head>

    <body>

    <form method="POST" action="minichat2.php">
    <p><textarea rows="2" name="testochat" cols="36"></textarea><input type="submit" value="Invia" style="border-style: double; border-width: 3px"></p>
    </form>

    </body>

    </html>
    [/PHP]

    che punta a minichat2.php
    che sarebbe questa
    [PHP]
    <?
    //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...

    //recupero i valori dal form minichat
    $iduser = $_SESSION[nickname];
    $testochat = $_POST['testochat'];

    //mi connetto al datase
    $link = mysql_connect("$db_host", "$db_database", "$db_username", "$db_password") or die("Errore connessione: ". mysql_error());
    //seleziono il database
    mysql_select_db('my_italiawebchat') or die("Errore apertura database: " . mysql_error());
    //procedo ainserire i valori nei campi della tabella minichat
    $strsql="INSERT INTO minichat (id_user,testo)";
    $strsql.=" VALUES ('$iduser','$testochat')";

    $rs=@mysql_query("$strsql",$link) or die("Errore query database: " . mysql_error());
    //faccio un ciclo while
    while ($riga = mysql_fetch_array($rs)) {
    $str_nickname = $riga['nickname'];
    $str_testochat = $riga['testochat'];

    echo "<tr><td><font face="Comic Sans MS">$str_nickname</font></td><td>$str_testochat</td></tr>";
    }//qui chiudi il while
    }//qui chiudi l'IF
    else {
    //altrimenti...
    echo "Non sei loggato...";
    //annullo tutte le chiavi di sessioni se esistono
    session_unset();
    session_destroy();
    header("Location: login.htm");
    }
    ?>
    [/PHP]

    e poi minichat3 che sarebbe quella che stampa a video il tutto

    [PHP]

    <?
    //Apro la sessione e...
    session_start();
    // opto quindi per la visualizzazione ai solo iscritti
    if($_SESSION['logged']==1){
    //se si...
    ?> <div align="center">
    <font face="Franklin Gothic Medium" size="7" color="#008080">Minichat</font><table width="100%" border="2" cellspacing="0" height="35" bordercolor="#FF9999">
    <tr>
    <td align="left" valign="top" width="15%">
    <font face="Comic Sans MS" color="#0099FF"><b>Nick</b></font></td>
    <td align="left" valign="top" width="19%">
    <div align="center"><b><font size="4" face="Comic Sans MS" color="#0099FF">Messaggio</font></b></div>
    </td>
    <?
    //mi connetto al datase
    $link = mysql_connect("$db_host", "$db_database", "$db_username", "$db_password") or die("Errore connessione: ". mysql_error());
    //seleziono il database
    mysql_select_db('my_italiawebchat') or die("Errore apertura database: " . mysql_error());
    //seleziono i campi da visualizzare per singolo utente
    $strsql="SELECT id_user,testo FROM minichat ORDER BY id";

    $rs=@mysql_query("$strsql",$link) or die("Errore query database: " . mysql_error());
    //faccio un ciclo while
    while ($riga = mysql_fetch_array($rs)) {
    $str_nickname = $riga['id_user'];
    $str_testo = $riga['testo'];

    echo "<tr><td><font color="#0099FF" face="Comic Sans MS"><br><a href="profiloaltri.php?nickname=".$str_nickname.""><span style="text-decoration: none"><font color="##FF6600"><br>$str_nickname</a></td><td><font color="#0099FF" face="Comic Sans MS"></tr>";
    echo "$str_testo";
    }//qui chiudi il while
    }//qui chiudi l'IF
    else {
    //altrimenti...
    echo "Non sei loggato...";
    //annullo tutte le chiavi di sessioni se esistono
    session_unset();
    session_destroy();
    header("Location: login.htm");
    }
    ?>
    [/PHP]
    Funziona si....però c'è un problema....come ben si vede sono 3 pagine....
    Cioè per come ho pensato io di afre la chat nn va bene...

    Praticamente nella prima pagina cioè inq uella in cui scrivo il messaggio ...una volta cliccato su invia sempre nella stessa pagina dovrebbe apparire il contenuto di ciò che io ho fatto nella 3 pagina che ho creato...come posso fare per metterle assieme??


  • User Attivo

    Ho pensato di aggiungere un require nel primo file minichat1.php e richiamare il file che mostra il tutto avideo cioè minichat3.php....
    che nedite?


  • Consiglio Direttivo

    XD
    mi stavo chiedendo appunto perché hai fatto 3 file dato che volevi tutto in una pagina XD

    Allora: in index metti un semplicissimo if
    [php]<?php
    if (loggato)
    {
    include "minichat.php";
    }
    ?>
    [/php]il file minichat.php conterrà: inserimento, visualizzazione e form:
    (immagino che già nella index ci sia l'assegnazione della sessione).
    [php]<div id="minichat">
    <?php
    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";
    $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>
    <form action="index.php" name="chat" method="POST">
    <textarea rows="2" name="text" cols="36"></textarea>
    <input type="submit" value="Invia">
    </form>
    </div>[/php]non l'ho testato ma credo non dovrebbero esserci problemi 🙂
    Ovviamente puoi personalizzarlo per come preferisci 😉
    Ho messo l'essenziale 😉


  • User Attivo

    Sto testando la minichat....ma nn va...
    ho composta la pagina index.php cosi'
    [php]
    <?
    //Apro la sessione e...
    session_start();
    // opto quindi per la visualizzazione ai solo iscritti
    if($_SESSION['logged']==1){
    //se si...
    include "minichat.php";
    }
    ?>[/php]e fin qui' tutto bene...nella index.php la pagina minichat.php e visibile solo agli utenti loggati...

    la pagina minichat.php cosi'
    [php]
    <div id="minichat">
    <?
    //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...?>
    <?
    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";
    $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>
    <form action="index.php" name="chat" method="POST">
    <textarea rows="2" name="text" cols="36"></textarea>
    <input type="submit" value="Invia">
    </form>
    </div>[/php]qui' però succede una strana...

    a video mi stampa la parte di codice di php che va da
    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"; $query_select= @mysql_query($sql_select) or die (mysql_error()); ?>

    e sotto questa parte di codice compare la textarea col tasto invio...
    in cui ha se provo a scrivere qualcosa nn esce nulla.....:(:bho:
    ci sto provandoo a risolvere ma nn riesco:x


  • ModSenior

    prova a sostituire <? con <?php


  • User Attivo

    @Thedarkita said:

    prova a sostituire <? con <?php
    Ho risolto Grazie:)

    Ciao thedarkita:) mi ricordo di te...mi hai dato una mano in passato in molte situazioni:);)
    mi fa piacere rivederti:wink3:

    Ora la chat funziona....però....vorrei far si che...una volta raggiunta la soglia dei 10 messaggi inviati la pagina nn deve scendere piu'.....sennò va ad occuparmi tutto lo spazio della pagina:(
    Praticamente raggiunti i 10 mess..dovrebbe ridimensionarsi e partire da 0....spero di esser stato chiaro°_°


  • ModSenior

    Puoi usare LIMIT nella query e far msotrare solo gli ultimi 10 messaggi facendo cosi:
    SELECT id_user, testo FROM minichat ORDER BY id LIMIT 10

    😉


  • User Attivo

    @Thedarkita said:

    Puoi usare LIMIT nella query e far msotrare solo gli ultimi 10 messaggi facendo cosi:
    SELECT id_user, testo FROM minichat ORDER BY id LIMIT 10

    😉

    Si..:)
    ho fatto cosi'...però ora succede che raggiunti i 10 messaggi inviati non mi mostra piu' a video quelli successivi....cioè se scrivo dopo i 10 mess inviati nn leggo piu' nulla...:(


  • ModSenior

    Dovresti ordinarli in modo decrescente (ORDER BY id DESC)
    Però hai i primi in cima, se devi mostrarli alla fine, ti basta generare un array e stamparli al contrario


  • User Attivo

    @Thedarkita said:

    Dovresti ordinarli in modo decrescente (ORDER BY id DESC)
    Però hai i primi in cima, se devi mostrarli alla fine, ti basta generare un array e stamparli al contrario
    Ok...si esatto escono in cima...:)
    però va bene cosi' dai..;)
    Ora provo a far in modo di inserirci delle smile.....:)
    se ho problemi posto..:)


  • ModSenior

    ok

    buon lavoro 😉


  • User Attivo

    @Thedarkita said:

    ok

    buon lavoro 😉
    Grazie:)
    Allora...ho inserito delle faccine..questo e lo script
    [PHP]
    <div id="minichat">
    <?
    //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...?>
    <?
    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>
    <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/x.gif" OnClick="document.chat.text.value+='x'">
    <img src="faccine/faccia.gif" OnClick="document.chat.text.value+='°_°'">

    </form>
    </div>[/PHP]
    Mi funziona...però vorrei che nel campo textarea al momento del clik sulla faccina apparisse la faccina stessa invece del valore a lettera ...:(
    Come potrei fare..?


  • ModSenior

    In un textarea normale non puoi visualizzare un immaggine, dovresti lavorarci su con javascript, ma la cosa diventa tutto tranne che facile da realizzare...


  • User Attivo

    @Thedarkita said:

    In un textarea normale non puoi visualizzare un immaggine, dovresti lavorarci su con javascript, ma la cosa diventa tutto tranne che facile da realizzare...
    😮
    ho visto un esempio simile..
    [php]
    <form method="POST" name="nome_form" action="inserisci.php">
    <textarea name="nome_campo" cols="30" rows="5"></textarea><br>
    <input type="submit" value="Invia Messaggio">
    </form>

    <?
    function faccine($msg){
    $msg_ok = str_replace(":-)", "<img src="smile.gif">", $msg);
    return $msg_ok;
    }
    echo faccine($_POST['nome_campo']);

    ?>
    [/PHP]
    dovrebbe fare ciò che voglio io....ma mi da un errore
    Parse error: syntax error, unexpected T_STRING in /membri/italiawebchat/inserisci.php on line 8


  • ModSenior

    $msg_ok = str_replace(":-)", "<img src="smile.gif">", $msg);

    Sarebbe cosi, ma il problema è che il browser non può fare quello che stai cercando di fare


  • User Attivo

    @Thedarkita said:

    $msg_ok = str_replace(":-)", "<img src="smile.gif">", $msg);

    Sarebbe cosi, ma il problema è che il browser non può fare quello che stai cercando di fare

    Infatti non fa ciò che voglio...come potrei ovviare al problema:?


  • ModSenior

    Ti ho già scritto prima che non puoi, guarda il post 21...


  • User Attivo

    @Thedarkita said:

    Ti ho già scritto prima che non puoi, guarda il post 21...
    mmm....andrebbe fatto con il javascript quindi....senza textarea?:o


  • ModSenior

    Textarea con javascript, come nei wygiwys tiny_mce per esempio lo fà, ma ci sono molte altre funzioni, ora non sò se si riesce a trovare qualcosa di già pronto all'uso.... ma di sicuro crearlo a soli, se non sianno più che ottime conoscenze in materia mi pare complicato...


  • User Attivo

    @Thedarkita said:

    Textarea con javascript, come nei wygiwys tiny_mce per esempio lo fà, ma ci sono molte altre funzioni, ora non sò se si riesce a trovare qualcosa di già pronto all'uso.... ma di sicuro crearlo a soli, se non sianno più che ottime conoscenze in materia mi pare complicato...
    Provo con un editor wygiwys e ti faccio sapere:)