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

    Problema inserimento automatico campi in successione

    Salve,
    E' diversi giorni che ho questo problema che non mi riesce proprio risolvere. Premetto che forse ho strutturato ciò che sto facendo in maniera poco idonea ma oramai sono ad un punto del lavoro per cui non posso tornare indietro.
    Devo fare un form di prenotazione on-line per prenotare il parrucchiere.
    DOpo aver scelto la data in cui desidero prenotare, a seconda del servizio richiesto (taglio, shampo etc..) devo occupare da 15 minuti a 1 ora.
    Una volta scelto la data devo fare in modo che visualizzando un calendario della giornata con tutti gli orari divisi per 15 minuti, possa selezionare l'ora in cui desidero l'appuntamento e a seconda del servizio occupare solo un campo di 15 minuti o 4 campi da 1 ora.
    Ho già fatto il calendario che mi visualizza tutti gli orari liberi o occupati di una data.
    Ho creato questa tabella:
    id int(11)
    data varchar(255)
    idparrucchiere varchar(255)
    800 varchar(255) che sta per le 8:00
    815 varchar(255)
    830 varchar(255)
    845 varchar(255)
    900 varchar(255)
    915 varchar(255)
    930 varchar(255)
    945 varchar(255)
    1000 varchar(255)
    1015 varchar(255)
    1030 varchar(255)
    1045 varchar(255)
    etc..
    Fino alle 20:00

    I campi sono di defoult on se occupati il valore è off.
    Devo fare in modo che se clicco sul campo 900 ovvero le 9:00 e seleziono taglio (che occupa 45 minuti) mi metta su off i campi 900, 915, 930, 945.
    A qualcuno viene qualche idea?
    Anche un orologio rotto una volta al giorno c'ha ragione...

  2. #2

    Re: Problema inserimento automatico campi in successione

    Originariamente inviato da LeonardoS82
    A qualcuno viene qualche idea?
    Si, ripartire da zero con un DB progettato decentemente.
    Fai prima così che cercare di sistemare l'accrocchio che hai realizzato.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3

    Come lo dovrei strutturare?

    Come mi consiglieresti di strutturarlo il DB? sono un pò alla deriva.
    Anche un orologio rotto una volta al giorno c'ha ragione...

  4. #4
    oh mamma! hai avuto un coraggio a scrivere quello che hai scritto
    magari una tabella PRENOTAZIONI con campi DALLE/ALLE, oltre a tutto il resto che ti serve,
    non sarebbe più pulito e funzionale? (oltre che corretto)

  5. #5

    Coraggioso

    Bhè non pensavo di essere coraggioso...
    Forse nemmeno offensivo...
    Chiedo solo un aiuto!!!
    Una sola tabella prenotazione Dalle/Alle mi sembra un pò poco come aiuto...
    Intendi che avresti fatto una sola tabella con
    idparrucchiere
    data
    orainizio
    orafine
    ?
    Mi puoi dare qualche altra informazione?
    Grazie anticipatamente
    Anche un orologio rotto una volta al giorno c'ha ragione...

  6. #6
    perchè idparrucchiere? ce ne sono molti?
    Dovresti mettere l'id del cliente. Visto che è una relazione tra prenotazioni e clienti del tipo uno a molti. Quindi va inserita la chiave esterna nella tabella prenotazioni.
    Se ci sono più parrucchieri nel salone devi inserire anche idparrucchiere.
    E poi il campo data/ora per ORAINIZIO e data/ora per ORAFINE.
    Per il resto non so come hai strutturato tutto e cosa ti serve fare oltre alla prenotazione, quindi questo è quello che ti posso dire con le info che hai dato.

  7. #7

    Intanto Grazie Longo8

    Si ci sono più parrucchieri con una propria scheda parrucchiere quindi nella tabella prenotazioni devo mettere un campo di riconoscimento diciamo idparrucchiere, il problema che mi sorge è anche se ho un'ora di inizio e un'ora di fine come fare a far riempire più di un campo di seguito. Diciamo che una persona selezioni l'orario di inizio appuntamento e secondo il servizio che scegie si possa sapere l'ora di fine. Chiaramente l'arco di tempo tra inizio e fine deve essere salvato in un db come occupato in modo che non possa essere rioccupato. Il problema è come faccio a fare occupare o un solo campo di un DB o più di uno a seconda del servizio. Esite un modo?
    Ancora molte grazie
    Anche un orologio rotto una volta al giorno c'ha ragione...

  8. #8
    In quale caso vorresti occupare più di un campo?
    Se non ho capito male andrebbe bene la soluzione che ti dicevo aggiungendo idparrucchiere visto che sono di più.
    Ma vuoi dire che un utente ci può mettere 15 minuti e un altro 45? (per esempio)
    Basta salvare in ORAFINE l'ora in cui vuoi che finisca. Ma non dovresti farlo scegliere a lui. Te lo calcoli tu in base a quello che lui sceglie di fare.
    Ti faccio un esempio:
    -un utente sceglie di fare solo il taglio: 15 minuti.
    -un utente fa taglio e colore: 45 minuti.
    etc...etc...

    Ma devi solo fargli scegliere quello che deve fare, non l'orario in cui vuole che finisca.
    Sarebbe poco sicuro e ovviamente non può sapere quanto il parrucchiere ci mette per fare quello che lui chiede.
    Ovviamente devi mettere un controllo quando sceglie l'ora di inizio e quello che vuole fare. Dovresti dirgli se è libero oppure no facendo una semplice query nella tabella prenotazioni.

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    142
    io partendo da quello che hai già realizzato farei così

    1 definisco le durate
    es:
    taglio = 15
    colore = 60


    dopo di che nel momento in cui ho il dato relativo al servizio e alla durata consulto il db

    *il problema fondamentale è che se ogni parrucchiere ha la giornata libera come dato base, se ho ben capito uno sceglie parrucchiere "tonio" , "colore" , 9:00
    allora solo tonio non tutti i parrucchieri, avranno occupati i minuti dalle 9 alle 10:00 giusto?

    se ho un'ora di inizio e un'ora di fine come fare a far riempire più di un campo di seguito
    il programma dovrà calcolare quanti spazi occupare , in questo caso tu hai costruito blocchi da 15 min quindi saranno 4

    poi prenderà il campo 900 lo setterà a occupato
    e ripeterà la cosa con il campo 915, 930, 945.

    magari dando ad una variabile il nome del campo
    ed incrementandola ad ogni passaggio
    di 15 a meno che non finisca per 45 allora la incrementerà di 55
    *oddio è una brutalità orrenda*
    e setterà il campo ad occupato

    il tutto come dicevo la fa per il numero di volte che hai calcolato prima
    in base al servizio.


    ahh assolutamente prima di tutto questo, dovrebbe fare la stessa cosa e salvarsi una flag se tutti i campi sono settati a liberi , se questa flag è verificata allora può essere occupato quel tempo, se no direi che deve restitutire un errore dicendo che non è possibile prenotare

    cmq io rifarei il db se possibile

  10. #10
    Io farei così:

    tabella:
    idparrucchiere
    orainizio
    durata

    Le ore le gestisci come date-ora/unixtimestamp per cui il campo data non ti serve, sarà il frontend (la pagina) a gestire le date

    La gestione del programma gionaliero la fai direttametne sulla pagina che userai come "agenda", calcolando al volo "orafine" usando "orainizio+durata". In questo modo hai una gestione "al minuto" della tua agenda giornaliera. Nella pagina tu avrai una tabellina ordinata per parrucchiere dove ogni parrucchiere ha poi la sua agenda. Se la fai con i DIV+CSS invece che con una TABLE puoi anche fare i riquadri colorati di quando ciascuno è occupato.

    A te poi eventualmente inserire controlli del tipo "verifica che idparrucchiere non sia già impegnato a quell'ora" e cose del genere

    Poi per praticità aggiungerei un campo note dove mettere il nome del cliente e annotazioni varie ("la Lella per la tinta, 20 minuti solo per scegliere il colore") ecc.... :P

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.