Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    107

    problema confronto tra stringhe

    Salve a tutti

    ho la necessità di fare un sistema di prenotazione in cui l'utente può scegliere delle fasce orarie ed eventualmente di estendere la prenotazione da 1 a 3 h rispetto a quella scelta inizialmente.

    Le fasce orarie sono del tipo 09:00-10:00 ecc.. e le salvo in $_SESSION['orari']=$orari;

    siccome però con l'estensione dell'orario potrei avere prenotazioni che vanno a ricadere in fasce orarie parzialmente occupate, volevo mostrare all'utente un messaggio del tipo :" fascia oraria scelta 09:00-12:00 ma per le 10:00-12:00 è già occupata" come posso fare a fare questa cosa?

    Tutti i dati vengono ovviamente inseriti nel db e quindi pensavo di confrontare i dati che sono già presenti con quelli scelti dall'utente e fare una differenza ma non riesco a farlo..

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    107
    possibile che nessuno sappia aiutarmi? devo spiegarmi meglio?

  3. #3
    Si forse non ti sei spiegato "egregiamente".. Ho solo capito che il cliente decide di prenotare per una fascia oraria, tu vuoi gestire dinamicamente la disponibilità di tale richiesta tramite le prenotazioni che hai già immagazzinato nel db e restituirgli l'esito.. Giusto? Oppure ho perso pezzi strada facendo?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    107
    Ok mi scuso per non essermi spiegato bene..


    Un utente può selezionare una fascia oraria di prenotazione(da menu a tendina con orari memorizzati in file html) del tipo 09:00-10:00, 10:00-11:00 ecc.. siccome c'è la possibilità di estendere la prenotazione con un +1,+2,+3 rispetto alla fascia oraria scelta, avrei il problema di gestire queste fascie orarie, ovvero potrebbe succedere che

    user 1 effettua la prenotazione 09:00-10:00 +3 ovvero diventa 09:00-13:00
    user 2 vuole effettuare la prenotazione da 10:00-11:00
    user3 vuole effettuare la prenotazione da 10:00-14:00
    essendo la fascia oraria di user 2 interna a quella di user1 dovrò stampare un messaggio di avviso per comunicare che è impegnata la fascia oraria scelta e a user3 che ha a disposizione solo quella da 13:00 a 14:00 perchè la precedente è impegnata..

    Come si può fare? l'idea iniziale era questa:

    codice:
    $prova = mysql_query("SELECT `Ora_In` FROM `prenotazione` "); 
          while ($result = mysql_fetch_array($prova) ) {                     
             
             $or_db=explode(",",$result[0]);   
             list(,$val)=each($or_db);      //lista fascia oraria presente nel db
             echo $val;
             $_SESSION['val']=$val;      
          }   
             $val=$_SESSION['val'];
             $campi=explode(" " ,$orari);
             list(,$valore)=each($campi);   //lista fascia oraria scelta dall'utente                  $diff=($val[0]-$valore[0]);

    $diff contiene la differenza tra i valori delle variabili contenenti le fascie orarie nella posizione 0 e quindi se ho gli orari 09:00-10:00 e 09:00-10:00 mi fa la differenza tra il primo zero della prima e il secondo 0 della seconda fascia oraria..

    Non riesco però a trovare un modo di fare in maniera corretta questa operazione, potete aiutarmi?

    grazie
    marshall86

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    107
    possibile che nessuno sappia aiutarmi?

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    (non devi prendertela... le risposte sono date su base volontaria se e quando si ha tempo)

    Secondo me ti conviene rivedere i parametri... come sono memorizzati gli orari nel db? Se converti tutto in "timestamp", ad esempio... inoltre non ho ben capito una cosa: una volta che un utente seleziona una fascia e un "delta" (es. +1, +2, etc...) il form viene inviato e basta? Cioè è come se avesse selezionato una fascia più ampia o ti è necessario tenere traccia della fascia originale e del delta separatamente?

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    107
    Si mi scuso.. il fatto è che ci sto sbattendo la testa da qualche giorno ..

    Al momento nel db ho una tabella (prenotazione) con questi campi:

    id_pren user_code Postazione Giorni Mesi Ora_In prenotato id_utente

    dove i campi postazione,mesi e giorni sono estratti da un file html (ad ora)

    e per gli orari ho un'altra tabella (orari_pren) con i seguenti campi:

    id_orari_pren Ora_in prenotato

    gli orari inviati nel form quindi vengono salvati nel db con il delta compreso, ovvero:

    se scelgo da orari_pren 09:00-10:00 con un delta di +2 in prenotazione , nel campo Ora_in, viene salvato 09:00-12:00.

    Mi era venuto in mente che potrei in qualche modo estrarre dalla tabella orari_pren soltanto gli orari non prenotati, ma come? visto che ad ogni fascia oraria deveno corrispondere tanti parametri, cioè quelli presenti in prenotazione?? sono in standby ..

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    mmh... è un po' complicato come hai posto la cosa... se hai modo di rivedere la struttura ti consiglierei alcune cose:
    - per gli orari puoi anche usare un formato "letterale" volendo, anche se usando un timestamp si agevolano i controlli, quindi sarebbe meglio convertirli (p.es. come numero di secondi dalla mezzanotte, per cui le 9:00 sarebbe rappresentato da 32400)
    - dovresti memorizzare separatamente inizio e fine, quindi due campi... se p.es. hai la fascia 9:00-12:00 dovresti avere due campi 32400 e 43200

    Una volta fatto questo è tutto più facile... puoi farlo?

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    107
    grazie per la risposta!

    inizialmente inizio e fine erano separate però poi pensavo che così fosse più facile invece.. :S

    Trasformando in timestamp gli orari, come posso poi controllare che le fasce orarie non si accavallino? ovvero

    se user1 sceglie la fascia dalle 09:00 alle 12:00 e user2 quella dalle 10:00 alle 13:00 vorrei dire a user2 che fino alle 12:00 il posto è impegnato ed ha a disposizione solo la fascia oraria dalle 12:00 alle 13:00?

    questo è essenzialmente il mio problema, una cosa da poco vero??

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    107
    avevo pensato di confrontare tutti gli orari facendo la differenza tra gli orari ovvero:

    codice:
    $val=$_SESSION['val'];
    $campi=explode(" " ,$orari);
    list(,$valore)=each($campi);	//lista fascia oraria scelta dall'utente
    			
    $diff_entrata=($val[0].$val[1])-($valore[0].$valore[1]);
    $diff_uscita=($val[6].$val[7])-($valore[6].$valore[7]);
    					
    $ora_1aparte=$valore[0].$valore[1];  //orario iniziale scelto dall'utente
    $ora_2aparte=$valore[6].$valore[7];		//orario finale scelto dall'utente			
    			
    $val_1aparte=$val[0].$val[1];	//orario iniziale presente nel db		
    $val_2aparte=$val[6].$val[7];		//orario finale presente nel db
    				
    if(($diff_entrata <='0') && ($diff_uscita>='0')){ 
    //orario di ingresso e di uscita scelto in fascia oraria prenotata ->> dB: 09:00-13:00 utente: 09:00-12:00
     		$errore="la fascia oraria scelta è interna ad una già stata prenotata"." orario nel db ".$val_1aparte.":00 ".$val_2aparte.":00"." orario scelto dall'utente ".$ora_1aparte.":00 ".$ora_2aparte.":00";	
    		$_SESSION['errore']=$errore;	
    				header("location:../php/postazione.php?scritta=".$errore);
    }
     if(($diff_entrata <='0') && ($diff_uscita<'0')){	
    //DB: 09:00-12:00 utente: 09:00-13:00
    // se l'orario d'ingresso scelto è uguale a quello presente nel db ma quello di uscita è maggiore
    				
    $errore="la postazione è libera dalle ".$val_2aparte;		
    $_SESSION['errore']=$errore;	
    header("location:../php/postazione.php?scritta=".$errore);	
      }

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.