• User

    Tabella/calendario per impostare la disponibilità di un campo sportivo: punti chiave

    Buogiorno a tutti!!
    Vi scrivo per sottoporvi il seguente rompicapo. Cercherò di essere schematico e preciso e... speriamo in bene che esista una soluzione semplice 😉

    Contesto: creazione sito web per prenotazione campo da tennis online. Utilizzo ***Dreamweaver CS5.5.


    Tabella utenti/username/password, e strutture login già create.

    1° Scoglio: creare una pagina dove l'admin imposta la disponibilità del campo nei vari giorni e nelle varie ore di ciascuna giornata.

    Ho pensato che il modo più semplice è quello di creare una tabella di questo tipo:

        ------data oggi       |        data domani       |       data + 2        |        data +3      |      ........        |      data+6       |
    

    8 ----menu-------- menu ------ ....etc...

    9 ----menu -------...........

    10

    etc.

    In ogni cella "menu" indica un menu a tendina dove si può scegliere tra due opzioni: "libero" (il campo da tennis si potrà allora prenotare) e "non disponibile" (ad esempio per motivi di manutenzione)

    Domanda1: come far sì che nelle celle th (ovvero nelle varie entrate di colonna) compaia la data "dinamica" in quel modo?

       Ho trovato questo sul web... è giusto? Se sì come modificarlo per ottenere data+1/2/3..?
    

    <?php

    $data =(date("d-m-y"));
    echo "$data";

    ?>

    Domanda2: all'incrocio tra ogni riga e colonna pensavo di inserire un menu con due scelte "libero" oppure "non disponibile" con valore predefinito "libero". Alla fine della tabella un pulsante "Invia" fa sì che per ogni cella venga inserito un record in una tabella del database. In particolare:

    • tabella "prenotazioni_campo1": i vari campi sono "giorno", "ora","username" (colui che ha inserito il record),"stato" (può essere libero/non disponibile/occupato)
    • quando si preme "Invia" se nella prima cella in alto a sinistra è stato selezionato "libero" dal menu a tendina, viene inserito nella tabella il record "data odierna d/m/Y", "8", "admin", "libero"
    • se nella seconda cella della prima riga si seleziona "non disponibile" il record inserito sarà "data domani", "8", "admin", "non disponibile"

    Si può realizzare una cosa simile? In particolare la cosa difficile mi sembra creare un pulsante che inserisca non uno ma tanti record quante sono le celle della tabella.... Ditemi voi...
    Ovviamente se avete altre idee per raggiungere lo stesso scopo in modo più semplice dite pure...

    Domanda3: Ultima cosa... gli utenti (quindi NON admin) accedono alla pagina di prenotazione dove selezionano da due menu a tendina la data e l'ora in cui vogliono prenotare il campo. Un tasto "Prenota" in questo caso dovrebbe fare due cose:

    • verificare che il record corrispondente a quello specifico "giorno" e "ora", riporti valore "libero" nella colonna "stato"
    • sostituire nella tabella di prima i campi "username" e "stato" rispettivamente con lo "username dell'utente" che effettua la prenotazione e con la dicitura "occupato".

    Per fare un esempio pratico:

    si passa da "10/09/2012" "8" "admin" "libero" --------> "10/09/2012" "8" "username_utente" "occupato"

    Si può fare una cosa simile? Quale è la struttura dello script per verificare se un record ha un dato valore e poi sostituirlo?

    Spero di ricevere buone notizie.... A presto


  • User

    Non ho capito praticamente nulla di tutto quello che hai chiesto (forse il discorso è troppo lungo e ho appena pranzato) però posso darti uno spunto:

    Premesso che non ho neanche presente come hai strutturato i dati io farei così:

    una tabella per gli utenti e le relative informazioni
    una tabella per la parte amministrativa con i vari permessi etc...
    una tabella che gestisce il calendario con data e ora e un campo VER (che può essere o 1 o 0)

    ora, tralasciando le prime due la parte interessante è data dalla terza tabella; un modo molto utile è utilizzare jquery datapicker (da parte del client) in quanto - l'utente potrà selezionare la data da un calendario (come ad esempio può accadere per gli hotel) poi metterei più opzioni sugli orari che l'utente può scegliere ed infine un pulsante con verifica disponibilità (magari tramite ajax). a quaesto punto se disponibile il campo VER andrà su 1 altrimenti su 0.
    così il prossimo utente che prenoterà eventualmente su quella data e quella ora se riscontrerà un campo VER =1 non potrà prenotare viceversa se il campo VER è 0 potrà essere prenotato.


  • User

    Grazie per la risposta....

    Ora mi sto informando su jQery Datepicker... E' davvero interessante ma non riesco a capire se può rispondere appieno alle mie esigenze. **Semplifico in 2-3 righe e chiedo a voi...

    Partiamo dall'esempio del calendario Datepicker. Non mi serve visualizzare tutto un mese, ma solo 7 giorni. Poi in ogni giorno devo visualizzare l'elenco delle ore prenotabili (es. 8-9 poi 9-10 poi 10-11... etc.). Infine il gestore del campo da tennis deve poter impostare le ore e i giorni disponibili (capite bene che se un campo da tennis il giorno "x" è in manutenzione per tutto il pomeriggio, l'utente non deve poter selezionare le ore pomeridiane ma potrà prenotare solo le ore fino alle 12).**
    Tutto chiaro?

    P.s. Io ho avuto l'impressione che Datepicker mi permetta solo di facilitare l'inserimento di una data in un modulo per evitare errori di formato. Se è così purtroppo non risolve nulla.. ma certamente potrò utilizzarlo nella pagina di prenotazione del campo in modo che l'utente non debba inserire manualmente la data.

    Aspetto vostre news... per favore....


  • User

    Allora puoi vedere un altro plugin di jquery timepicker - in tal modo che l'utente può selezionare anche l'ora.
    a questo punto nella parte alta (prima del datatimepicker) potresti inserire tutte le ore che sono state già occupate.


  • User

    Pian piano sto risolvendo i singoli problemi... grazie per il consigno sul datapicker e timepicker.... davvero utili!!
    Appena avrò terminato il lavoro posterò la soluzione che ho trovato... (speriamo in bene 😉 )


  • User

    ok sarebbe una buona risorsa. ti aspettiamo!


  • User

    Ciao!!
    Ho provato ad utilizzare jquery datepicker... Ho inserito con successo un campo di testo in una pagina web.. se si clicca sul campo di testo compare il calendario popup... cliccando su una data questa viene inserita automaticamente nel campo testo.

    Problema: FORMATO della DATA.

    ATTENZIONE: LEGGERE PRIMA DI RISPONDERE.

    1. La data verrà inviata ad un database mysql quindi il formato della data dovrà essere "yy-mm-dd" per esempio 2012-09-17.

    2. Ho già letto sul web che il calendario in questione prevede la possibilità di campiare data. Questo è ciò che viene riportato:

    *Initialize a datepicker with the dateFormat option specified.

    $( ".selector" ).datepicker({ dateFormat: "yy-mm-dd" });

    Get or set the dateFormat option, after init.

    //getter var dateFormat = $( ".selector" ).datepicker( "option", "dateFormat" ); //setter $( ".selector" ).datepicker( "option", "dateFormat", "yy-mm-dd" ); *

    Purtroppo ho provato ma non ha funzionato... molto probabilmente ho sbagliato qualcosa io nell'installazione/configurazione del calendario. Vorrei ripercorrere con voi i passi necessari:

    • nella sezione download del sito ho selezionato solo datepicker --> automaticamente è stato selezionato anche "core" --> effettuato il download
      -estraggo il file compresso (3 cartelle + 1 file index.txt)---> copio tutte le cartelle nella root del mio sito --> apro index.txt e copio tutto il contenuto del tag <head> e lo incollo nella mia pagina .php
      -nella pagina .php creo (sempre con dreamweaver) un campo di testo e imposto id=datepicker.
      -lancio l'anteprima con il browser e tutto funziona: cliccando sul campo compare il calendario popup.

    -in modalità codice mi sposto nell'head e inserisco

    $(function() {

                  $("#datepicker").datepicker({dateFormat : "yy-mm-dd"});
            
            });
    
    • datepicker continua a inserire la data con il formato mese/giorno/anno.
      P.s. magari c'è un plugin apposta per il formato data da installare?

  • User

    Ciao, dal sito si possono vedere i sorgenti degli esempi e, c'è anche quello che fa al caso tuo:

    
        <script>
        $(function() {
            $( "#datepicker" ).datepicker();
            $( "#format" ).change(function() {
                $( "#datepicker" ).datepicker( "option", "dateFormat", $( this ).val() );
            });
        });
        </script>
    
    
    
    
    
    
    <div class="demo">
    
    
    <p>Date: <input type="text" id="datepicker" size="30"/></p>
    
    
    <p>Format options:<br />
        <select id="format">
            <option value="mm/dd/yy">Default - mm/dd/yy</option>
            <option value="yy-mm-dd">ISO 8601 - yy-mm-dd</option>
            <option value="d M, y">Short - d M, y</option>
            <option value="d MM, y">Medium - d MM, y</option>
            <option value="DD, d MM, yy">Full - DD, d MM, yy</option>
            <option value="'day' d 'of' MM 'in the year' yy">With text - 'day' d 'of' MM 'in the year' yy</option>
        </select>
    </p>
    
    
    </div><!-- End demo -->
    
    
    
    
    
    
    <div class="demo-description">
    <p>Display date feedback in a variety of ways.  Choose a date format from the dropdown, then click on the input and select a date to see it in that format.</p>
    </div><!-- End demo-description -->
    

  • User

    Ciao!! Grazie per la risposta...

    Ma il codice sopra non mi inserisce anche il il menu a tendina con le possibili scelte del formato-data? Io vorrei semplicemente che venisse usato il formato yy-mm-dd sempre, senza possibilità di scelta da parte dell'utente...

    Ovviamente può darsi che mi sbaglio... è solo che non vorrei inserire del codice non strettamente necessario....altrimenti rischio di non capirci più niente :mmm:

    Ti ringrazio ancora per il tuo aiuto... buona giornata 🙂