Re: [PHP-ES] Consulta sobre php y mysql

[email protected] (Ricardo Vila) Wed, 14 Mar 2012 11:01:26 -0500
Newsgroups php.general.es
Message-ID <CAM9wsNUo7QGPp=5eYceUeV=NkCnqupmgEGSvZCqrDE2KLwN1NA@mail.gmail.com>
Bueno estoy usando innodb, el tema es que quiero ver como prevenir que un
premio se entregue a dos personas.

porque el proceso como lo mencione es:
- veo si hay premios (una consulta a la bd)
- genero un arreglo de 10 posiciones (el # de posiciones puede cambiar,
solo a modo de ejemplo puse 10)
- Si hay premios (en este caso se asume que solo queda 1 premio), lo agrego
al arreglo
teniendo : $arrpremio = array(0,0,0,1,0,0,0,0,0,0)
- Luego obtengo un random de 0 a 9,(asumo que me manda 3)
- Ese valor es el indice del arreglo, entonces obtengo su valor, es decir
$gano = $arrpremio[3] ( y esto es igual a 1)
- aca pregunto si valor es 1, gano si no que siga intentando
- Entonces bajo este esquema, se puede dar que a dos usuarios jugando
simultaneamente les muestre el premio.

Agradezco de antemano sus respuestas

Saludos,
Ricardo Vila



2012/3/14 Ricardo Martinez <[email protected]>

> Mmm, en mi opinión:
>
> entiendo que como motor estás usando MyIsam. En caso contrario
> especificalo.
>
> Todas las consultas que dices que haces y acciones, deberías de hacerlas
> todas la vez dentro de un
>
> try
>    {
>     sentencias
>   }
>
> Un saludo!!!
>
>
> On Wed, Mar 14, 2012 at 12:14 AM, Ricardo Vila <[email protected]>wrote:
>
>> Buenas listeros,
>>
>> La presente es para consultarles respecto a como podría hacer para evitar
>> que un registro se muestre igual a dos usuarios distintos, me explico con
>> un ejemplo
>>
>> Tengo una tabla premios, con los campos idpremio, cantidad
>>
>> entonces como puedo prevenir que si tengo un registro que tenga en el
>> campo
>> cantidad = 1, y dos usuarios ingresan a la vez, el sistema lo que hace es
>> ver si hay premios, en este caso, obtiene 1, luego genero un arreglo de 10
>> posiciones y coloco este id dentro, genero un random y luego obtengo un
>> indice y con esto veo si gano o no, entonces, si dos usuarios estan a la
>> vez ingresando, hay la posibilidad de que a ambos le salga que ganaron el
>> premio cuando en realidad solo hay un premio.
>>
>> Como podría evitar este problema, estuve pensando en bloquear las tabla
>> hasta que termine de jugar un usuario, pero eso tomaría tiempo por cada
>> usuario, de ser así, sería factible usar colas, para poder procesar esta
>> información
>>
>> agradezco de antemano su respuesta
>>
>> Saludos,
>> Ricardo Vila
>>
>
>
>
> --
> Ricardo
> _______________________________________________
> IT Architect
> website: http://www.pulsarinara.com
>