• User Attivo

    problema con una query

    ciao,

    ho creato un pannello di controllo per inviare agli iscritti dei comunicati, in due modi, o invio la comunicazione ad un singolo o a tutti.

    Vorrei che l'iscritto possa leggere solo il comunicato riferito a lui e quello visibile a tutti, ma non i comunicati personali degli altri iscritti.

    questa è la query che si trova nella pagina dell'iscritto, dove
    comunicazioni.id_tecniche = $_SESSION[idtecniche] corrisponde alla visualizzazione delle comunicazioni riservate e
    comunicazioni.id_tecniche = 0 corrisponde alla visualizzazione delle comunicazioni visibili a tutti:

    [PHP]
    <?
    $query="SELECT comunicazioni., a_tecniche., DATE_FORMAT(comunicazioni.data_ins_comunicazione, '%d-%m-%Y')AS data_ins_comunicazione
    FROM comunicazioni, a_tecniche
    WHERE comunicazioni.id_tecniche = $_SESSION[idtecniche] AND comunicazioni.id_tecniche = a_tecniche.id_tecniche OR comunicazioni.id_tecniche = 0 ORDER BY comunicazioni.data_ins_comunicazione DESC, comunicazioni.ora_ins_comunicazione DESC";
    $ris_query=mysql_query($query, $conn);
    while($row=mysql_fetch_array($ris_query)){?>
    [/PHP]

    le comunicazioni riservate al singolo iscritto arrivano correttamente, il mio problema è sulle comunicazioni visibili a tutti, invece di visualizzarmi il messaggio così:


    messaggio per tutte le tecniche
    CARLA alle ore 10:30 ci vediamo in ufficio

    me lo visualizza così:


    messaggio per tutte le tecniche
    CARLA alle ore 10:30 ci vediamo in ufficio

    messaggio per tutte le tecniche
    FRANCA alle ore 10:30 ci vediamo in ufficio

    messaggio per tutte le tecniche
    LUISA alle ore 10:30 ci vediamo in ufficio

    messaggio per tutte le tecniche
    ALESSIA alle ore 10:30 ci vediamo in ufficio


  • User Attivo

    Forse sarà una scemenza ma prova a mettere gli apici

    
    $_SESSION['idtecniche']
    
    

    Poi prova a fare una "echo" della query e a rieseguirla con phpmyadmin e vedi cosa ti costruisce lo script e cosa ti tira fuori il mysql.

    Ciao


  • Super User

    @prinzart said:

    ciao,

    ho creato un pannello di controllo per inviare agli iscritti dei comunicati, in due modi, o invio la comunicazione ad un singolo o a tutti.

    Vorrei che l'iscritto possa leggere solo il comunicato riferito a lui e quello visibile a tutti, ma non i comunicati personali degli altri iscritti.

    questa è la query che si trova nella pagina dell'iscritto, dove
    comunicazioni.id_tecniche = $_SESSION[idtecniche] corrisponde alla visualizzazione delle comunicazioni riservate e
    comunicazioni.id_tecniche = 0 corrisponde alla visualizzazione delle comunicazioni visibili a tutti:

    [php]
    <?
    $query="SELECT comunicazioni., a_tecniche., DATE_FORMAT(comunicazioni.data_ins_comunicazione, '%d-%m-%Y')AS data_ins_comunicazione
    FROM comunicazioni, a_tecniche
    WHERE comunicazioni.id_tecniche = $_SESSION[idtecniche] AND comunicazioni.id_tecniche = a_tecniche.id_tecniche OR comunicazioni.id_tecniche = 0 ORDER BY comunicazioni.data_ins_comunicazione DESC, comunicazioni.ora_ins_comunicazione DESC";
    $ris_query=mysql_query($query, $conn);
    while($row=mysql_fetch_array($ris_query)){?>
    [/php]le comunicazioni riservate al singolo iscritto arrivano correttamente, il mio problema è sulle comunicazioni visibili a tutti, invece di visualizzarmi il messaggio così:


    messaggio per tutte le tecniche
    CARLA alle ore 10:30 ci vediamo in ufficio

    me lo visualizza così:


    messaggio per tutte le tecniche
    CARLA alle ore 10:30 ci vediamo in ufficio

    messaggio per tutte le tecniche
    FRANCA alle ore 10:30 ci vediamo in ufficio

    messaggio per tutte le tecniche
    LUISA alle ore 10:30 ci vediamo in ufficio

    messaggio per tutte le tecniche
    ALESSIA alle ore 10:30 ci vediamo in ufficio

    Prova cosi:
    [php]
    <?
    $query="SELECT comunicazioni., a_tecniche., DATE_FORMAT(comunicazioni.data_ins_comunicazione, '%d-%m-%Y')AS data_ins_comunicazione
    FROM comunicazioni, a_tecniche
    WHERE (comunicazioni.id_tecniche = $_SESSION[idtecniche] OR comunicazioni.id_tecniche = 0) AND comunicazioni.id_tecniche = a_tecniche.id_tecniche ORDER BY comunicazioni.data_ins_comunicazione DESC, comunicazioni.ora_ins_comunicazione DESC";
    $ris_query=mysql_query($query, $conn);
    while($row=mysql_fetch_array($ris_query)){?>
    [/php]


  • User Attivo

    Ayrton ho fatto come dici tu ma in questo modo mi fa vedere solo i 2 messaggi personali (la tecnica con cui ho fatto la prova ha l'id 2), il messaggio pubblico (id 0) ora non si vede più

    image


  • Super User

    @prinzart said:

    Ayrton ho fatto come dici tu ma in questo modo mi fa vedere solo i 2 messaggi personali (la tecnica con cui ho fatto la prova ha l'id 2), il messaggio pubblico (id 0) ora non si vede più

    image
    Scusa, non avevo capito bene il problema.
    prova ad usare Distinct

    [php]<?
    $query="SELECT DISTINCT(comunicazioni.id), comunicazioni., a_tecniche., DATE_FORMAT(comunicazioni.data_ins_comunicazione, '%d-%m-%Y')AS data_ins_comunicazione
    FROM comunicazioni, a_tecniche
    WHERE comunicazioni.id_tecniche = $_SESSION[idtecniche] AND comunicazioni.id_tecniche = a_tecniche.id_tecniche OR comunicazioni.id_tecniche = 0 ORDER BY comunicazioni.data_ins_comunicazione DESC, comunicazioni.ora_ins_comunicazione DESC";
    $ris_query=mysql_query($query, $conn);
    while($row=mysql_fetch_array($ris_query)){?> [/php]