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

    Dare un limite di tempo per effettuare un pagamento

    Ciao a tutti, sto realizzando un applicazione dove un utente cliccando su "acquista" viene mandato ad una pagina dove puo scegliere la modalità di pagamento. Io vorrei fare che quando esegue il click il prodotto prenda uno stato "prenotato" e quindi altri non possono acquistarlo (sono opere d'arte quindi pezzi unici). A questo punto vorrei dare un tempo limite all'acquirente per eseguire il pagamento, dopodichè se il pagamento non viene effettuato, il prodotto torna ad essere disponibile, ma non ho la più pallida idea di come fare a gestire la cosa...forse devo farlo manualmente?
    Grazie mille a chi mi aiuta

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    "manualmente"... in che senso? puoi aggiungere due campi "stato" e "tempo" al tuo db... settati su "libero" e "0"

    prenotazione:
    - stato: libero->prenotato; tempo: 0->timestamp

    aggiornamento (cancellazione acquisto, conferma acquisto, apertura pagina, mostra lista oggetti...):
    - per tutti gli oggetti con stato=prenotato e timestamp scaduto resetta i campi

  3. #3
    Manualmente intendo che memorizzando data ed ora della prenotazione poi puo dire "ok è scaduto il tempo rimetto disponibile l'oggetto"

    Intendi quindi che dovrei memorizzare la data e l'ora della prenotazione e quindi nella pagina che visualizza l'oggetto fare che se il tempo trascorso supera il tempo stabilito rimetto disponibile l'oggetto?
    Grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    il "controllo" del ripristino dello stato potresti farlo con una schedulazione periodica (es. ogni tot minuti o tot ore), ma in questo caso - come nella maggior parte - è sufficiente che fai il controllo ad ogni accesso, quindi - come hai capito bene - quando mostri l'elenco o cmq quando si accede al sistema

  5. #5
    Potresti mettere il controllo nella pagina che prevede la registrazione oppure nella pagina di ricerca degli articoli. Perché se il controllo lo metti, come dice eiyen, quando esegui il login potranno succedere dei casi che il prodotto NON è disponibile quando in realtà lo è.
    Quindi basta aggiungere una query nella pagina di ricerca che, se sono passati tot secondi da quando il prodotto è stato cliccato e non è ancora avvenuto il pagamento, allora passa il campo 'prenotato' da SI a NO (dipende dal tipo di campo che scegli di usare per dire che è prenotato o no).

  6. #6
    Si, penso proprio che metterò il controllo nella pagina che visualizza l'oggetto. Quindi per essere il più preciso possibile a calcolare il tempo limite devo usare un campo di tipo DATETIME? Perchè se uso il DATE ho solo il conteggio dei giorni giusto? quindi se uno prenota l'oggetto alle ore 23 mi mangia un giorno...giusto?

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    beh... in linea di massima sì... vedi tu che "limite" vuoi dare... puoi usare un campo datetime o timestamp o anche memorizzare la rappresentazione stringa di un tempo in formato php... dipende che scadenza esatta vuoi calcolare, cmq non solo date, direi

  8. #8
    Si io una volta memorizzata la data e l'ora della prenotazione, vorrei fare che nella pagina che visualizza l'oggetto ci sia un controllo del tipo:

    Se l'oggetto ha lo stato "prenotato" quindi non è stato effettuato il pagamento faccio il conteggio del tempo passato dalla data di prenotazione. Se il tempo è scaduto levo lo stato "prenotato" quindi l'oggetto torna ad essere disponibile.

    Se il pagamento è stato effettuato cambio lo stato in "venduto" o semplicemente cambio la categoria dell'oggetto in "archivio" in modo tale che non mi si visualizza più nella pagina che mi tira fuori i risultati.

    Il problema è che non so fare il conteggio

    Prelevo la data di prenotazione dal db che è di tipo datetime (yyyy-mm-dd 00-00-00)
    poi con PHP dovrei fare il calcolo (data di oggi - data di prenotazione) e trovo il tempo trascorso?
    Grazie ancora

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    puoi usare le funzioni di conversione, oppure più semplicemente usa come campo MySQL un VARCHAR e memorizza il timestamp che ti viene fornito in php, così quando fai i confronti hai sempre valori di questo formato

  10. #10
    Se il problema che incontri è solo nel conteggio allora non hai ben presente come implementare la query per la ricerca e quindi conteggio. Ti faccio quindi un esempio:
    codice:
    SELECT *
    FROM prodotti
    WHERE nome='nome' && disponibile='si'
    è una query molto rudimentale...ovviamente i criteri di ricerca devono essere ottimizzati grazie all'operatore LIKE o altri come quelli che usa google.. Per il resto la query estrae tutti i prodotti disponibili.
    Puoi organizzare come vuoi i campi che rendono il prodotto 'disponibile' o 'venduto' o 'prenotato'.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.