• User Attivo

    @Thedarkita said:

    Francametne non ho capito niente
    😄
    allora...
    [PHP]
    SELECT nome_ricevente,nome_inviante,oggetto,messaggio,data,iscritti.* FROM messaggi INNER JOIN iscritti ON messaggi.nome_inviante=iscritti.nome,utenteemail.nome_inviante=iscritti.utenteemail,sesso.nome_inviante=iscritti.sesso,WHERE nome_ricevente='".$_SESSION['nome']."' ORDER BY data
    [/PHP]

    finoa qui' ci siamo?
    in questa stringa..non devo aggiungere altre 2 var relative a utenteemail e sesso?


  • ModSenior

    No è sbagliato, dopo ON devi mettere solo i 2 campi che collegano le tabelle tra loro come avevo fatto io, devi adattarlo alle tue tabelle


  • User Attivo

    @Thedarkita said:

    No è sbagliato, dopo ON devi mettere solo i 2 campi che collegano le tabelle tra loro come avevo fatto io, devi adattarlo alle tue tabelle

    quindi cosi'
    [PHP]
    SELECT nome_ricevente,nome_inviante,oggetto,messaggio,data,iscritti.* FROM messaggi INNER JOIN iscritti ON messaggi.nome_inviante=iscritti.nome WHERE nome_ricevente='".$_SESSION['nome']."' ORDER BY data
    [/PHP]
    :?:?
    qui abbiamo recuperato il campo nome dalla tabella iscritti giusto?
    quello che mi chiedo per recuperare altri campi...come va modificato...?
    nel caso io voglia recuperare utenteemail e sesso sempre dalla tabella iscritti


  • ModSenior

    noabbiamo recuperato tutti i campi della tabella iscritti
    iscritti.* sta per tutti i campi


  • User Attivo

    @Thedarkita said:

    noabbiamo recuperato tutti i campi della tabella iscritti
    iscritti.* sta per tutti i campi

    e per selezionare il campo specifico dalla tabella iscritti....come va modificata?
    esempio.....selezionare il campo sesso e utenteemail


  • ModSenior

    iscritti.sesso,iscritti.utenteemail


  • User Attivo

    @Thedarkita said:

    iscritti.sesso,iscritti.utenteemail

    quindi cosi'
    [PHP]
    SELECT nome_ricevente,nome_inviante,oggetto,messaggio,data,iscritti.nome,iscritti.sesso,iscritti.utenteemail,* FROM messaggi INNER JOIN iscritti ON messaggi.nome_inviante=iscritti.nome WHERE nome_ricevente='".$_SESSION['nome']."' ORDER BY data
    [/PHP]


  • ModSenior

    ,* nn serve per il resto sembra ok


  • User Attivo

    @Thedarkita said:

    ,* nn serve per il resto sembra ok

    ora mi ricollego al discorso che dicevo prima...
    ora pe rmostrare a video i campi iscritti devo cmq aggiungere al ciclo while delle variabili che contenganoq uei valori...giusto?


  • User Attivo

    Errore query database: Column 'data' in field list is ambiguous

    mi da questo errore....:?


  • User Attivo

    @carlitos1982 said:

    Errore query database: Column 'data' in field list is ambiguous

    mi da questo errore....:?

    OOk....ho modificato un po e ho risolto...:)
    [PHP]
    $strsql="SELECT nome_ricevente,nome_inviante,oggetto,messaggio,iscritti.* FROM messaggi INNER JOIN iscritti ON messaggi.nome_inviante=iscritti.nickname WHERE nome_inviante='".$_SESSION['nickname']."' ORDER BY data";

    $rs=@mysql_query("$strsql",$link) or die("Errore query database: " . mysql_error());
    //faccio un ciclo while
    while ($riga = mysql_fetch_array($rs)) {
    $str_nome = $riga['nome_inviante'];
    $str_oggetto= $riga['oggetto'];
    $str_messaggio = $riga['messaggio'];
    $str_data = $riga['data'];
    $str_ricevente = $riga['nome_ricevente'];
    $str_sesso = $riga['sesso'];
    $str_utenteemail = $riga['utenteemail'];
    $str_foto = $riga['foto'];
    echo "<tr><td><font face="Comic Sans MS">$str_nome</font></td><td>$str_oggetto</td><td>$str_messaggio</td><td>$str_data</td><td>$str_ricevente</td><td>$str_sesso</td><td>$str_utenteemail</td>";
    [/PHP]


  • User Attivo

    Purtroppo nn ho risolto del tutto....sono spuntati fuori vari problemi....

    Faccio un esempio
    piglio 2 utenti a caso e li chiamo PAOLO E VITO

    Allora vado sul sito....effettuo il login come PAOLO e mando un mess a VITO....fatto ciò vengo rimandato sulla pagina leggimessaggi.php di PAOLO in cui mi visualizza il messaggio che ho mandato a VITO( errore..la pagina di PAOLO dovrebbe visualizzare solo i mess ricevuti)provo quindi a loggarmi come VITO e provando a mandare un mess a PAOLO succede la stessa cosa....vengo dirottato sulla pagina leggimess.php d VITO su cui e presente il messaggio che ho appena scritto e inviato a PAOLO....
    questo e il primo problema....
    l altro problema e che sempre nella pagina leggimess.ph non viene mostrato piu di un messaggio ricevuto:x
    Posto i file che potrebbero essere interessati al malfunzionamento...
    questo e leggimess.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...
    //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 dalla tabella messaggi i 4 campi da visualizzare
    $strsql="SELECT nome_ricevente,nome_inviante,oggetto,messaggio,iscritti.* FROM messaggi INNER JOIN iscritti ON messaggi.nome_inviante=iscritti.nickname WHERE nome_inviante='".$_SESSION['nickname']."' ORDER BY data";

    $rs=@mysql_query("$strsql",$link) or die("Errore query database: " . mysql_error());
    //faccio un ciclo while
    while ($riga = mysql_fetch_array($rs)) {
    $str_nome = $riga['nome_inviante'];
    $str_oggetto= $riga['oggetto'];
    $str_messaggio = $riga['messaggio'];
    $str_data = $riga['data'];
    $str_ricevente = $riga['nome_ricevente'];
    $str_sesso = $riga['sesso'];
    $str_utenteemail = $riga['utenteemail'];
    $str_foto = $riga['foto'];

    }//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");
    }
    ?>
    <html>
    <head>
    <body>
    <div align="center">
    <font face="Eras Medium ITC" size="2" color="#0066FF">i tuoi messaggi
    ricevuti<?echo "<p>Ciao<p>" . $str_nome . "<br>leggili ora"; ?>
    <p><font face="Eras Medium ITC" size="2" color="#0066FF">Sono presenti in
    tutto</font></p>
    <table width="100%" border="1" height="90" style="border-collapse: collapse">
    <tr>
    <td align="left" valign="top" width="30%" rowspan="2">
    <font face="Comic Sans MS" color="#0099FF"></b></font><p><br><br><br><?echo "<a target="_blank" href=\foto/$str_foto><img border="0" src="miniature/$str_foto" width="75" height="75"></a>";?><br>
    <?echo "<font face="Comic Sans MS" size="4">$str_nome</font>";?><br>
    <?echo "<font face="Comic Sans MS" size="4">$str_sesso</font>";?><br>
    <?echo "<font face="Comic Sans MS" size="4">$str_utenteemail</font>";?><br>
    <?echo "Ora di invio<br><font face="Comic Sans MS" size="2">$str_data</font>";?>
    <td align="left" width="39%" rowspan="2">
    <div align="center"><b><?echo "Messaggio<br><br><font face="Comic Sans MS" size="3">$str_messaggio</font>";?></b></div>
    <div align="center"></font></b></div></td><td></font> </td>
    <td align="center" width="20%" valign="top" rowspan="2">
    <div align="center"> </div>
    <div align="center"> </div>
    <div align="center"> </div>
    <div align="center"> </div>
    </td>
    </div>
    <tr>
    <td height="68"> </td>
    [/PHP]

    e posto i 2 file relativi all invio dei mess
    questo e inviamessaggio.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...
    //verifico se esiste la variabile destinatario
    if(isset($_GET['destinatario']) OR $_GET['destinatario'] != ""){
    $destinatario=$_GET['destinatario'];
    }
    ?>
    <html>

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Pannello di controllo utente</title>
    </head>

    <body>
    <?
    //facciamo una stampata a video!
    echo "Ciao " . $_SESSION[nickname] . "Scrivi il messaggio che vuoi inviare";
    ?>
    <form method="post" action="invio.php">
    <p>Destinatario</p>
    <p><input type="text" name="destinatario" value="<?=$destinatario ?>"</p>
    <p>Oggetto</p>
    <p><input type="text" name="oggetto" value="" size="20"</p>
    <textarea name="messaggio"></textarea>
    <input type="submit" value="Invia messaggio">
    </form>
    <?
    } else {
    //altrimenti...
    echo "Non sei loggato...";
    //annullo tutte le chiavi di sessioni se esistono
    session_unset();
    session_destroy();
    header("Location: login.htm");
    }
    ?>
    [/PHP]
    questo nvece e invio.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...

    //recupero i valori dal form precedente
    $cdestinatario = $_POST['destinatario'];
    $coggetto = $_POST['oggetto'];
    $cmessaggio = $_POST['messaggio'];
    $cmittente = $_SESSION['nickname'];

    //mi connetto al database
    $link = mysql_connect("$db_host", "$db_database", "$db_username", "$db_password") or die("Errore connessione: ". mysql_error());
    //seleziono la tabella
    mysql_select_db('my_italiawebchat') or die("Errore apertura database: " . mysql_error());

    $strsql="INSERT INTO messaggi (nome_inviante,nome_ricevente,oggetto,messaggio,data) VALUES ('$cmittente','$cdestinatario','$coggetto','$cmessaggio',NOW())";

    @mysql_query("$strsql",$link) or die("Errore query database: " . mysql_error());
    echo "Messaggio inviato";
    header("Location: leggimessaggi.php");
    }
    else {
    //altrimenti...
    echo "Non sei loggato...";
    //annullo tutte le chiavi di sessioni se esistono
    session_unset();
    session_destroy();
    header("Location: login.htm");
    }
    ?>
    [/PHP]


  • ModSenior

    si


  • User Attivo

    @Thedarkita said:

    si

    🙂
    cosa si?
    Non sono riuscito ancora a trovare da cosa dipende questo malfunzionamento...:x


  • ModSenior

    Scusa non ho visto la seconda pagina xD

    è un casino...

    Allora controlla nel database i dati siano inseriti correttamente, dopo c'è da controllare se l'unione delle tabelle avvenga in modo corretto o prende 2 campi errati per fare il collegamento e quindi i risultati siano diversi da come dovrebbero essere.


  • User Attivo

    @Thedarkita said:

    Scusa non ho visto la seconda pagina xD

    è un casino...

    Allora controlla nel database i dati siano inseriti correttamente, dopo c'è da controllare se l'unione delle tabelle avvenga in modo corretto o prende 2 campi errati per fare il collegamento e quindi i risultati siano diversi da come dovrebbero essere.

    Per quanto riguarda il database ho già controllato...e i dati vengono inseriti correttamente..cioè nella tabella messaggi i campi risultano essere tutti al loro posto...e nella mostra a video che ci sono i problemi.....quindi il problema risiede nella INNER JOIN?


  • ModSenior

    suppongo di si


  • User Attivo

    @Thedarkita said:

    suppongo di si

    [PHP]
    $strsql="SELECT nome_ricevente,nome_inviante,oggetto,messaggio,iscritti.* FROM messaggi INNER JOIN iscritti ON messaggi.nome_inviante=iscritti.nickname WHERE nome_inviante='".$_SESSION['nickname']."' ORDER BY data";
    [/PHP]
    non va bene quindi come e strutturata ora?


  • ModSenior

    messaggi.nome_inviante=iscritti.nickname

    questo è il collegamento cioè il valore in comune tra le 2 tabelle, è giusto per come è strutturata la tua tabella?


  • User Attivo

    @Thedarkita said:

    messaggi.nome_inviante=iscritti.nickname

    questo è il collegamento cioè il valore in comune tra le 2 tabelle, è giusto per come è strutturata la tua tabella?

    collegamento in comune suppongo voglia dire che hanno lo stesso valore sia nell una che nell altra tabella...
    Comunque il campo nome_inviante che c'è nella tabella messaggi e lo stesso campo come valore che c'è nella tabella iscritti ma che si chiama nickname....