Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    18

    Sistema per Concorso a premi

    Salve vorrei realizzare un sistema per un concorso a premi in php -mysql - flash, che permetta ai partecipanti di inserire un codice scritto su una scheda data dall'esercente nell'interfaccia realizzata in flash e tramite php fare il controllo sul db in tempo reale controllando se ha vinto o meno.

    Le cose che non riesco a fare sono:

    1.Assegnare un numero massimo di giocatori che possono vincere giornalmente e gli intervalli di tempo tra le vincite.

    2. Utilizzare premi diversi per ogni vincita.

    Qualcuno sa darmi un consiglio su come svilupparlo!?

    Grazie in anticipo!

  2. #2
    Flash a parte che non sopporto affiancato alla parola dinamico...
    Potresti creare una tabella nel database con tutti i premi.
    Per ogni premio metti un immagine, la descrizione e un campo boleano.
    Quando un utente si aggiudica il premio, quello viene cambiato in 1 e non è più disponibile.
    Oppure puoi metterti un timestamp quando viene vinto e per, che sò, 2 ore non è disponibile.
    Oppure con lo stesso campo timestamp detto sopra, puoi fare così:
    Se viene vinto aggiorni il campo del premio aggiungendo il timestamp di quel momento.
    Quindi SE il campo timestamp non è vuoto, allora vuol dire che è stato vinto e non è più disponibile E devono passare almeno 7200 secondi (2 ore) da quel timestamp per poter vincere un altro premio.
    Così con un campo solo ti risolvi due problemi.
    Riassunto:
    nella tabella dei premi aggiungi un campo testo.
    Quando un utente vince, ad esempio, l'ipod, il sistema aggiorna il campo testo timestamp con il timestamp del momento della vincita.
    Quando un altro utente cerca di vincere l'ipod, quello non sarà più disponibile in quanto il campo timestamp non è vuoto e quindi è già stato vinto.
    Può vincere un altro premio SE sono passati più di 7200 secondi dall'ultimo premio vinto.

    Per il numero massimo di giocatori, metti in palio tanti premi quanti sono i giocatori che vuoi far vincere.
    Se ci sono più premi di quanti giocatori vuoi far vincere, ci sono due modi:
    O crei un campo boleano che, se è 1 vuol dire che è in palio, oppure 0 non è in palio,
    oppure selezioni tutti i campi il cui timestamp è compreso in quella giornata.
    Conti quanti campi ti sono venuti fuori e se sono più di 20, allora non vince più nessuno.
    Ce l'ho fatta! - ItalianPixel -

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    18
    Grazie sei stato veramente chiaro nella spiegazione .

    Ma non riesco a capire come fare il random dei premi.Cioè il premio deve cambiare per ogni vincita e ad esempio decidere che al giorno si possono vincere massimo 3 ipod ongi 2 ore dalla vincita e se sono passate le due ore dalla prima vincita che succede..??

    Non consoco come funziona i timestamp riusciresti a farmi un esempio.

  4. #4
    Allora, il timestamp è la cosa più facile di php, una volta capito il concetto.
    Il timestamp è il valore in secondi del tempo passato dal 1 gennaio 1970.
    Attualmente, nel momento in cui scrivo, il valore di timestamp è 1267080108 , il quale equivale alle 07:42 del 25.02.2010 (i secondi non li so )
    Molto affascinante.
    La cosa più affascinante è che esiste una funzione per visualizzare quel numero sotto forma di data!
    date()
    Con H:i ottieni l'ora 00 e i minuti 00, nel mio caso 07:42 (non 7:42, se metti maiuscolo o minuscolo cambia il formato!) mentre con d.m.Y si ottiene 25.02.2010. Se avessi messo la Y minuscola avremmo ottenuto 10, il formato ridotto dell'anno in questione.
    L'unica cosa che devi fare tu è quella di pensare in secondi.
    60=1 minuto (60*1)
    3600=1 ora (60secondi*60 minuti in un'ora)
    86400=1 giorno(60secondi*60minuti in un'ora*24 ore in un giorno)
    e così via.
    Ti fai i tuoi calcoli e ottieni quello che vuoi con precisione al secondo!

    Per la vincita massima crei un campo in più nel premio dove metti il numero massimo di premi.
    Se vuoi far vincere 3 ipod, metti 3 nel campo vincita_massima.
    Dal campo di inserimento del codice (o quello che permette di fare vincere) rimandi alla pagina di controllo.
    Nella pagina di controllo metti delle condizioni.
    SE il premio è stato vinto allora continua, altrimenti aggiungi il tempo di adesso e diminuisci di 1 il campo vincita_massima
    SE il premio è gia stato vinto, calcola il tempo di adesso (timestamp() ) meno il tempo dell'ultima vincita. Se il risultato è maggiore di 7200 (2 ore) allora fai vincere l'utente, aggiorna il campo timestamp con quello di quel momento e togli uno da vincita_massima.
    Dall'ultimo punto ho tolto volontariamente un passaggio:
    Devi controllare SE il numero vincita_massima è maggiore di 0 altrimenti vuol dire che è stato raggiunto il numero massimo disponibile di vincite per quel prodotto.

    Facile no? più a farsi che a scriversi, fidati.

    Se vuoi i premi random, aggiungi al campo vincita_massima il numero massimo dei premi che vuoi far vincere, così sei sicuro che non ti viene contato il frigorifero, in quanto quel giorno si vincono solo magliette, ipod e dvd.
    Nella stessa query aggiungi RAND() dopo l'ORDER BY
    "SELECT * FROM premi WHERE vincita_massima>'0' AND tempovincita>'(time()+7200)' ORDER BY RAND() LIMIT 1"
    Così facendo selezioni tutti i premi con un numero di vincita massima superiore a 0, con il tempovincita superiore al tempo di adesso +7200 (ovvero due ore), ne scegli uno a caso tra quelli rimasti e ne estrai solo uno.
    Quello sarà il premio.

    Capito il concetto?
    Ce l'ho fatta! - ItalianPixel -

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    18
    Ok...Benissimo !! Fin qui tutto ok.. Ma forse mi sono spiegato male io sul concetto perchè appunto se il campo vincita_massima diventa 0 una volta che è 0 il giorno successivo mi tocca reinserire il numero di vincite massime ..no?

  6. #6
    Beh, direi di si. A meno che tu non voglia che ogni giorno ci sia lo stesso iPod per massimo 3 al giorno.
    A quel punto ti crei un controllo sulla data. Se il giorno è diverso da quello salvato nel db, allora setta il valore_massimo a 3...
    Ce l'ho fatta! - ItalianPixel -

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    18
    Sapresti dirmi se è possibile creare una soluzione del genere?

    Allora creo una tabella come prima cn i seguenti campi:

    Tabella: Premi

    Campi: id - nome -qnt - immagine - data

    Dopo inserisco ad esempio

    600 premi al mese :

    520 premi da 5 euro
    50 da 10 euro
    15 da 20 euro
    2 televisori
    3 navigatori
    10 ipod


    Dopo creo un pannello impostazioni dove setto che un premio random deve essere vinto ogni 20 persone ma questo premio puo essere vinto sia dalla prima persone che inserisce il coupon o dalla ventesima ad estrazione ma sempre ogni 20. Ad esempio se metto 10 anziche 20 avro raddoppiato le probabilità di vincita. Scusami se non e molto chiaro.. Grazie ancora



    Esempio ogni 20 persone

  8. #8
    Beh, in teoria puoi creare una seconda tabella con un campo id, uno tempo e l'altro numero.
    Quando un utente inserisce un coupon inserisci un record dentro questa tabella inserendo il time() al momento dell'aggiunta e un numero che, ad ogni coupon, si aggiungi di 1.
    Così hai un numero crescente che ti indica quante persone hanno utilizzato il coupon e, se il numero è 20 o 40 o 60 o 80 o 100 (magari c'è un modo, tipo multiplo di 20, poi si trova) allora l'utente va alla pagina di vittoria, altrimenti viene reindirizzato ad una pagina con scritto: mi spiace, non hai vinto.
    Potresti aggiungere anche un campo "codice" che salva il numero del coupon, così se è già stato usato lo "annulli".
    Ce l'ho fatta! - ItalianPixel -

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2004
    Messaggi
    18
    Ops ! mi sono spiegato male scusami..

    Io ho tutti i codici scritti su i coupon caricati in un db online. Il cliente inserisce il codice e controlla in tempo reale se ha vinto o meno ma non deve essere per forza il 20 esimo ma soltanto uno tra 20.
    Riassumendo inserisce il codice ma non deve vincere uno ogni 20 ma su 20 persone che giocano puo capitare che vinca il primo che ha inserito il codice o uno qualsiasi tra i 20 .

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.