Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    Esludere risultati e visualizzarne altri

    Ciao raga ho un grossissimo dilemma

    da una ricerca per "intervallo di data" voglio escludere i tutor impegnati in quel periodo
    e far visualizzare quelli disponibili.........come fosse 1 agenda.


    Ho fatto cosi:

    !) prima eseguo la ricerca per ogni giorno nell'intervallo.

    for ($i=$dal; $i<=$al; $i+=86400)
    {
    $giorno = "$i";

    $query= mysql_query("SELECT * FROM tutor_impegnati WHERE dal <= '$giorno' && al >= '$giorno'");
    $tot=mysql_num_rows($query);

    while ($a_row = mysql_fetch_array($query))
    {
    print "$a_row[id_tutor] - $a_row[nome]"; //qui ottengo quelli impegnati per ogni giorno
    }
    }

    ma ora come faccio a escludere quelli impegnati e far ricercare i tuto disponibili???
    Gestionale Strutture Ricettive...http://www.celexdesign.it

  2. #2
    Ciao, immagino che tu abbia due tabelle, una che contiene tutti i tutor ed una che ne segna gli impegni?
    Se cosi' fosse
    SELECT tg.tutor_id, tg.name FROM tutor_generale AS tg, tutor_impegnati AS ti WHERE tg.tutor_id=ti.tutor_id AND (ti.dal>'$giorno' OR ti.a<'$giorno')

    oppure usi due select:
    SELECT tutor_id, name FROM tutor_generale WHERE tutor_id NOT IN (SELECT * FROM tutor_impegnati WHERE dal <= '$giorno' && al >= '$giorno')

    Nota, non conosco i nomi esatti dei tuoi campi.
    Nota2, non ne ho assolutamente la certezza, ma ad occhio direi che la prima strada č piu' performante
    =======================
    http://www.abidibo.net

  3. #3
    purtroppo non funzionano ne la prima ...ne la seconda


    la prima di dā un errore come seci fosse un problema di carattere "ortografico"


    la seconda mi dā:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL............

    eppure i campi sono esatti...



    quale puō essere l'intoppo???
    Gestionale Strutture Ricettive...http://www.celexdesign.it

  4. #4
    Per risponderti avrei bisogno della struttura delle 2 tabelle, se puoi postarla ti scrivo meglio le query
    =======================
    http://www.abidibo.net

  5. #5
    ecco le due tabelle.....

    - TB tutor

    | id_tutor | nome | email |

    ----------------------------------------

    - TB tutor_impegnati

    | id_tutor | nome | dal | al |

    ----------------------------------------
    Gestionale Strutture Ricettive...http://www.celexdesign.it

  6. #6
    Prova cosi'
    Codice PHP:
    $table_tutor "nome_tabella_tutor";
    $table_impegnati "nome_tabella_tutor_impegnati";
    $query "SELECT tg.id_tutor AS tid, tg.id_name AS tname FROM $table_tutor AS tg WHERE tg.id_tutor NOT IN(SELECT id_tutor FROM $table_impegnati WHERE dal<='$giorno' AND al>='$giorno')";
    $querymysql_query($query);
    $tot=mysql_num_rows($query);

    while (
    $a_row mysql_fetch_array($query))
    {
    print 
    "$a_row['tid'] - $a_row['tname']"//qui ottengo quelli disponibili per ogni giorno
    }

    Il primo metodo che ti avevo postato prima in effetti andava bene solo se avevi record unici per tutor nella tabella impegnati, ma immagino che non sia cosė.
    =======================
    http://www.abidibo.net

  7. #7
    perfetto funziona correttamente

    ora fcendo 1 ricerca dal 11/05 al 13/05 ottengo questi risultati
    praticamente ho stampato (data - id - nome)

    2009-05-11 - 5 - Giulio Lo Presti
    2009-05-11 - 1 - Mario Calavā

    2009-05-12 - 5 - Giulio Lo Presti
    2009-05-12 - 1 - Mario Calavā
    2009-05-12 - 4 - Giuseppe Grosso
    2009-05-12 - 2 - Salvo Di Pane

    2009-05-13 - 5 - Giulio Lo Presti
    2009-05-13 - 1 - Mario Calavā


    quello che vorrei ottenere č che mi si venga dato come risultato finale
    il nome dei tutor disponibili in questo intervallo:
    (in questo caso... Giulio Lo Presti e Mario Calavā che sono disponibili tutti e tre i giorni!!!)

    come posso impostarlo??
    Gestionale Strutture Ricettive...http://www.celexdesign.it

  8. #8
    Usa DISTINCT nella query:

    Codice PHP:
    $table_tutor "nome_tabella_tutor";
    $table_impegnati "nome_tabella_tutor_impegnati";
    $query "SELECT DISTINCT(tg.id_name) AS tname FROM $table_tutor AS tg WHERE tg.id_tutor NOT IN(SELECT id_tutor FROM $table_impegnati WHERE dal<='$giorno' AND al>='$giorno')";
    $querymysql_query($query);
    $tot=mysql_num_rows($query);

    while (
    $a_row mysql_fetch_array($query))
    {
    print 
    "$a_row['tname'] - "//qui ottengo l'elenco dei nomi dei tutor disponibili
    }

    =======================
    http://www.abidibo.net

  9. #9
    si giā provato

    ma forse visto che siamo all'interno del ciclo for...mi porta tutti gli altri risultati.

    for ($i=$dal; $i<=$al; $i+=86400)
    {
    $giorno = "$i";
    .....................................



    forse si dovrebbe fare qualksa ke ti dia solo quelli che sono sempre liberi....all'esterno del ciclo.....
    Gestionale Strutture Ricettive...http://www.celexdesign.it

  10. #10
    Be certo, avevo trascurato il ciclo for, chiaramente il DISTINCT fa si che i risultati siano unici per QUEL GIORNO, ma poi cicli quindi si ripetono. Allora fai un controllo all'interno del ciclo, metti in un array gli id che sono giā saltati fuori e prima di scrivere un nome controlla che il suo id non sia giā dentro a questo array
    =======================
    http://www.abidibo.net

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.