Visualizzazione risultati 1 fino 5 di 5

Discussione: Inserire una chat

  1. #1
    Guest

    Predefinito Inserire una chat

    Eccomi di nuovo qui ç_ç. Dunque, come da titolo, per il sito che sto facendo sto cercando di inserire una chat che poggia su php e MySQL. In pratica, un form invia al database quanto viene scritto nella chat e, in base a caratteri speciali inseriti all'inizio della frase, viene visualizzato a schermo con scritte diverse a seconda di valori inseriti nella tabella dove vengono immagazzinate le frasi. Fin qui, nulla di strano. I problemi mi sorgono quando ho fatto il codice per inserire la frase nel database. Ecco qui il codice della pagina adibita a tale scopo, ovvero 'input.php'

    Codice PHP:
    <?php
    session_start
    ();

    include(
    "inc/config.inc.php");
    include(
    "inc/connetti.inc.php");

    $query="SELECT personaggi.gestione, gilda.ar FROM personaggi LEFT JOIN gilda ON personaggi.idgilda=gilda.idgilda WHERE nome='$login'";
    $result=mysql_query($query);
    $rs=mysql_fetch_array($result);

    $gestione=$rs['gestione'];
    $ar=$rs['ar'];

    $rs->close;
    mysql_free_result($result);

    if((
    substr($msg, 0, 1) == "§")&&(($gestione==1)||($gestione==2))) { /*Controllo Master*/

    $tipo=2;
    $testo=substr($msg, 1); }

    elseif((
    substr($msg, 0, 1) == "§")&&($ar==1)) { /*Controllo Master Gilda*/

    $tipo=4;
    $testo=substr($msg, 1); }

    if(
    substr($msg, 0, 1) == "+") { /*Controllo Azione*/

    $tipo=1;
    $testo=substr($msg, 1); } else { /*Controllo Parlato*/

    $tipo=0; }

    if(
    substr($msg, 0, 1) == "@") { /*Controllo Sussurri*/

    $pos=strpos(substr($msg, 1), "@");

    if(
    $pos===FALSE) {

    $tipo=0; }

    else {

    $tipo=3;
    $p_dest=$pos-1;
    $p_msg=$pos+1;
    $dest=substr($msg, 1, $p_dest);
    $testo=substr($msg, $p_msg);
    $mitt=$login; }

    $query="SELECT * FROM presenti WHERE idstanza='$idstanza' AND nome='$dest'";
    $result=mysql_query($query);
    $rs=mysql_fetch_array($result);

    if(
    $rs===FALSE) {

    $testo="$dest non è presente nella stanza";
    $testo=htmlspecialchars($testo);
    $dest=$login; } }

    /*$query="INSERT INTO chat(idstanza, ora, mittente, destinatario, sesso, imggilda, nome, tipo, tag, testo) VALUES ('$idstanza', NOW(), '$mitt', '$dest', '$sesso_S', '$img_S', '$tipo', '$tag', '$testo')";
    mysql_query($query);*/
    ?>
    </head>
    <form action="input.php" method="post">
    <table>
    <tr>
    <td><input type="text" nome="tag" size="20" value="<?=htmlspecialchars($tag)?>"</td><td><input type="text" nome="msg" size="60"</td><td><input type="submit" value="Invia"></td>
    </tr>
    </table>
    </form>
    </html>
    Dunque, vediamo un pò. Le variabili $login, $sesso_S e $img_S sonodi sessione e fin qui ci siamo. Ora, il problema è che, se tolgo i commenti dalla query finale di MySQL al database non viene inviato nulla. Ho controllato più volte che i nomi delle colonne della tabella e quelli della query e coincidono. Aiutatemi ç_ç

  2. #2
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Hai inserito 10 nomi di campi e solo 9 valori nella query.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  3. #3
    Guest

    Predefinito

    Ho inserito il valore mancante, ma continua a non eseguire la query. Il bello è che pare proprio che dai form non riceva nulla, come se non ci scrivessi niente. Infatti ho provato a fare una print con i valori dei form, ma non è comparso nulla.
    ç_ç
    Ultima modifica di Reaver : 29-05-2007 alle ore 12.48.47

  4. #4
    Guest

    Predefinito

    magari se posti il codice di tutte le pagine coinvolte si puo fare qualcosa...

    a proposito,nel codice:

    Codice PHP:
    <td><input type="text" nome="tag" size="20" value="<?=htmlspecialchars($tag)?>
    al posto di "nome" prova con "name",senno per forza che non va,va scritto in inglese
    Ultima modifica di Dharlet : 29-05-2007 alle ore 17.22.04

  5. #5
    Guest

    Predefinito

    orca miseria è vero O_O... ad ogni modo nemmeno si è risolto il problema... se prima non eseguiva la query, adesso cmq quello che scrivo nei campi di text non viene nemmeno letto dallo script, come se non esistesse e, ovviamente, non viene nemmeno caricato nel database ç_ç...


    EDIT: Dunque, scrivo un nuovo messaggio perchè credo sia meglio così ç_ç. Allora, invio i codici corretti delle pagine coinvolte. Questo è input.php

    Codice PHP:
    <?php
    session_start
    ();

    include(
    "inc/config.inc.php");
    include(
    "inc/connetti.inc.php");

    $query="SELECT * FROM personaggi WHERE nome='$login'";
    $result=mysql_query($query);
    $rs=mysql_fetch_array($result);

    $master=$rs['master'];

    if((
    substr($msg, 0, 1) == "§")&&($master==1)) { #Controllo Master

    $tipo=2;
    $testo=substr($msg, 1); }

    elseif((
    substr($msg, 0, 1) == "§")&&($master==2)) { #Controllo Master Gilda

    $tipo=4;
    $testo=substr($msg, 1); }

    if(
    substr($msg, 0, 1) == "+") { #Controllo Azione

    $tipo=1;
    $testo=substr($msg, 1); } else { #Controllo Parlato

    $tipo=0;
    $testo=$msg; }

    if(
    substr($msg, 0, 1) == "@") { #Controllo Sussurri

    $pos=strpos(substr($msg, 1), "@");

    if(
    $pos===FALSE) {

    $tipo=0; }

    else {

    $tipo=3;
    $p_msg=$pos+2;
    $dest=substr($msg, 1, $pos);
    $testo=substr($msg, $p_msg);
    $mitt=$login; }

    $query="SELECT * FROM presenti WHERE idstanza='$idstanza' AND nome='$dest'";
    $result=mysql_query($query);
    $rs=mysql_fetch_array($result);

    if(
    $rs===FALSE) {

    $testo="$dest non è presente nella stanza";
    $testo=htmlspecialchars($testo);
    $dest=$login; } }

    $query="INSERT INTO chat (idstanza, ora, mittente, destinatario, sesso, imggilda, nome, tipo, tag, testo) VALUES ('$idstanza', NOW(), '$mitt', '$dest', '$sesso_S', '$img_S', '$login', '$tipo', '$tag', '$testo')";
    mysql_query($query);
    ?>
    </head>
    <form action="input.php" method="post">
    <table>
    <tr>
    <td><input type="text" name="tag" size="20" value="<?=htmlspecialchars($tag)?>"></td><td><input type="text" name="msg" size="60"></td><td><input type="submit" value="Invia"></td>
    </tr>
    </table>
    </form>
    </html>
    Lui esegue quasi tutto come si deve, soltanto che, non so il motivo, arrivato a Controllo Master e Controllo Master Gilda è come se ignorasse l'if. La cosa brutta è che se prendo if ed elseif e faccio loro eseguire una funzione di print qualunque in caso le loro condizioni siano verificate, tutto funziona correttamente. Da ciò mi viene di pensare che il problema sta in quello che viene eseguito da queste due strutture di controllo. L'altro problema è lui, chat.php

    Codice PHP:
    <?php
    session_start
    ();

    include(
    "inc/config.inc.php");
    include(
    "inc/connetti.inc.php");

    $query="SELECT * FROM chat WHERE idstanza='$idstanza' WHERE DATE_ADD(ora, INTERVAL 20 MINUTES)>=NOW()";
    $result=mysql_query($query);
    $rs=mysql_fetch_array($result);

    $ora=$rs['ora'];
    $testo=$rs['testo'];
    $imggilda=$rs['imggilda'];
    $mitt=$rs['mittente'];
    $dest=$rs['destinatario'];
    $sesso=$rs['sesso'];
    $autore=$rs['nome'];
    $testo=$rs['testo'];
    $tag=$rs['tag'];
    $tipo=$rs['tipo'];

    $tempo=strftime("%H:%M", strtotime($ora));

    include(
    "inc/top_foot.inc.php"); ?>

    <META HTTP-EQUIV=refresh CONTENT="10;URL=http://jediorder.altervista.org/chat.php">
    </head>

    <?php
    switch ($tipo) {

    case
    0: /*Parlato*/

    print ('<font face="times new roman" size="3" color="#000000">'.$tempo.'&nbps;-&nbps;<img border=0 src=\"altervista_ht/'.$sesso.'.gif\">&nbps;<a href=\"scheda.php?pg='.urlencode($autore).'\"><img border=0 src="\_altervista_ht/gilde/'.$imggilda.'\"></a>'.$autore.'&nbps;['.$tag.']'.$testo.'</font>');

    break;
    case
    1: /*Azione*/

    print ('<font face="times new roman" size="2" color="#660000">'.$tempo.'&nbps;-&nbps;<a href=\"scheda.php?pg='.urlencode($autore).'\">'.$autore.'</a>['.$tag.']'.$testo.'</font>');

    break;
    case
    2: /*Scritta master fati*/

    print ('<font face="times new roman" size="3" color="#0000FF">'.$testo.'</font>');

    break;
    case
    3: /*Sussurro*/

    if($mitt==$login) { /*Stampa del sussurro inviato a $dest*/

    print ('<table bgcolor="#000000">
    <tr><td><font face="times new roman" size="2" color="#FFFFFF">Hai sussurrato a'
    .$dest.':</td></tr>
    <tr><td><font face="times new roman" size="2" color="#FFFFFF">'
    .$testo.'</font><tr><td>
    </table>'
    ); } else { /*Stampa di un sussurro inviato da $mitt*/

    print ('<table bgcolor="#000000">
    <tr><td><font face="times new roman" size="2" color="#FFFFFF">'
    .$mitt.' ti sussurra:</td></tr>
    <tr><td><font face="times new roman" size="2" color="#FFFFFF">'
    .$testo.'</font><tr><td>
    </table>'
    ); }

    break;
    case
    4: /*Scritta master di gilda*/

    print ('<font face="times new roman" size="3" color="#CC00FF">'.$testo.'</font>');
    break; }
    ?>
    Qui è ancora peggio, perchè qualsiasi comando gli dia, qualsiasi cosa prenda dal database (ammesso che ne prenda qualcuna), l'output html è SEMPRE questo

    Codice HTML:
    <META HTTP-EQUIV=refresh CONTENT="10;URL=http://jediorder.altervista.org/chat.php">
    </head>
    
    <font face="times new roman" size="3" color="#000000">&nbps;-&nbps;<img border=0 src=\"altervista_ht/.gif\">&nbps;<a href=\"scheda.php?pg=\"><img border=0 src="\_altervista_ht/gilde/\"></a>&nbps;[]</font>
    Ho provato a modificare mille volte il codice, a togliere i caratteri &nbps; , ad assegnare le stringhe a delle variabili prima di passarle a print, a fare il print direttamente senza parentesi come ho visto su qualche guida, ma non è cambiato nulla, il risultato è sempre lo stesso.

    Aiuto ç_________ç


    FunCool: Non scrivere due messaggi consecutivi, utilizza il tasto Edita.
    Ultima modifica di funcool : 30-05-2007 alle ore 11.18.13

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •