Ver Mensaje Individual
  #17 (permalink)  
Antiguo 08/07/2013, 20:04
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: insertar 10.000 campos a una tabla, como?

Cita:
Iniciado por guardarmicorreo Ver Mensaje
... vamos a pensar un poco entre todos. ...


Cita:
Iniciado por guardarmicorreo Ver Mensaje
necesitas que dos usuarios no puedan escoger el mismo número no?

bueno, puedes generar 10000 registros con números con un simple bucle while o for, como gustes y esperar a que el ordenador no se cuelgue o puedes hacerlo con eficiencia.

crea en php una función o clase que genere un número aleatorio con la función nativa mt_rand para que el usuario pueda obtener un número al azar, si decide quedarse con ese número consulta en la base de datos si el número que el usuario escogió está ya repetido. por otro lado deja que el usuario escriba el número que desee y comprueba si ya está repetido entre los usuarios que ya escogieron número.

cualquier cosa que te evite tener 10000 registros en una tabla que cada usuario consultará como mínimo una vez, haría la aplicación realmente lenta.
...
Técnicamente la mejor forma es guardar los 10,000 registros en la base de datos. Tanto sea que el sistema genere el número al azar como que la persona pueda seleccionar el número de forma manual. La situación es la siguiente,

1. El sistema genera el número de forma automática.

El sistema genera un número de entre los números que queden libres, es decir, expresado en terminos pseudo SQL: "SELECT numero WHERE comprado = FALSE ORDER BY RAND() LIMIT 1". Así consecutivamente hasta que el usuario se decida por el número que desea comprar. El hecho es que solamente se le va a mostrar una opción entre los que no han sido comprados. Imagina si dice 8,586 y yo selecciono "comprar" y el sistema me dice "no puede comprar ese número porque ya fue comprado". Mi pregunta sería "¿entonces para que me lo ofrece?".

2. El usuario selecciona un número manualmente.

El usuario ingresa un número manualmente y el sistema busca entre los 10,000 si ese ya fue comprado. Si ya fue comprado pues tendrá que optar por otro número y así sucesivamente hasta que el número seleccionado sea válido. Imágina que están vendidos 9,999 números, ¿cuantas veces tendría que probar para pegarle al único que hace falta? El sistema debería mostrar los números válidos y poder seleccionarlos de una lista o algo parecido, ya sea cuando falten pocos números o siempre.

En cualquiera de los dos casos, una base de datos con un índice en el campo 'número' y en el campo 'comprado' será sumamente eficiente con 10,000 números solamente, aunque la demanda de números sea muy alta, por supuesto el programa deberá optimizar las consultas para hacer uso eficiente de los índices y no realizar mas consultas de las necesarias.

Cita:
Iniciado por guardarmicorreo Ver Mensaje
... si aún así quieres registrar 10000 números ya te digo, usa un bucle y suerte.
Exactamente, básicamente tendría que utilizar la respuesta anterior,

Cita:
Iniciado por carlos_belisario Ver Mensaje
me da terror preguntar como para que esto pero soy curioso y me gustaría saber??, sin embargo puedes hacer algo como esto
Código PHP:
Ver original
  1. for($i = 1; $i <= 10000; $i++) {
  2.     echo $i . " " . sprintf("%1$05d", $i);
  3.     echo "<br />";
  4. }
Pseudocódigo:

Código PHP:
Ver original
  1. for($i = 1; $i <= 10000; $i++) {
  2.     mysqli_query($connection, "insert into tabla1 (número, comprado) values ($i, false)");
  3. }

Saludos

Última edición por HackmanC; 08/07/2013 a las 20:12