• User Newbie

    Agenda appuntamenti con più utenti

    Buongiorno a tutti,
    sono fermo a un punto dove non riesco a risolvero e avrei bisogno del vostro supporto.
    Ho una tabella Appuntamenti composta da un id, data appuntamento, ora inizio, ora fine e utente interessato.
    Nella tabella Appuntamenti concorrono più utenti.
    Vorrei fare una query dove mi restituisce solo gli orari che sono occupati da tutti gli utenti contemporaneamente
    Esempio:
    oggi 02/11/2017 dalle ore 11:00 alle 12:00 tutti gli utenti interessato hanno un'appuntamento quindi la risposta vorrei che fosse full
    oggi 03/11/2017 dalle ore 11:00 alle 12:00 solo due utenti interessati hanno un'appuntamento quindi la risposta vorrei che fosse free

    HO provato a fare una query, ma mi da come risposta full anche se solo un utente ha l'ora occupata nonostante gli altri utenti siano liberi.

    [PHP]$query= "SELECT * FROM utenti";
    $Recordset = mysql_query($query, $mcl) or die(mysql_error());
    while($row=mysql_fetch_row($Recordset))
    {
    $id_utente_abilitato=$row[0];
    $query_a= "SELECT * FROM appuntamento where giorno_app='$data_appu' and ora_inizio<='$ora_cont' and ora_fine>='$ora_cont' and id_utente='$id_utente_abilitato'";
    $Recordset_a = mysql_query($query_a, $mcl) or die(mysql_error());
    while($row_a=mysql_fetch_row($Recordset))
    {
    $id_libero=$row_a[0];
    }} [/PHP]

    Grazie e ciao a tutti 🙂


  • User Attivo

    Ciao leslie2016
    credo che il problema sia come hai strutturato le query. In questo tuo modo se l'ultimo utente della lista ha un'appuntamento il risultato sarà true di sicuro. Prova così: in questo modo con il break dovrebbe uscire se un utente non ha appuntamenti.

    
    $query= "SELECT * FROM utenti";
    $Recordset = mysql_query($query, $mcl) or die(mysql_error());
    while($row=mysql_fetch_row($Recordset)) 
    { 
     $id_utente_abilitato=$row[0]; 
     $query_a= "SELECT * FROM appuntamento where giorno_app='$data_appu' and ora_inizio<='$ora_cont' and ora_fine>='$ora_cont' and id_utente='$id_utente_abilitato'";
     $Recordset_a = mysql_query($query_a, $mcl) or die(mysql_error());
     $entrato = false;
     while($row_a=mysql_fetch_row($Recordset)) 
     {
        $entrato = true;
        $id_libero=$row_a[0];
     }
     if($entrato==false)
        break;
    }