entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Algo similar a random

Buenas.

Ahora mismo tengo la siguiente query al momento de realizar cierta acción:

$sql = mysql_query("INSERT INTO posiciones (X, Y, Z, A, OX, OY, OZ, OA) VALUES ('1502.2727','2211.7234','13.2722','0.3562','1502.2727','2211.7234','13.2722','0.3562')");

Lo que estoy buscando hacer es establecer arriba de todo este código diversas posiciones, por ejemplo:

1) $pos1 == 2000.1 1400.2 5600.3 5400.4
2) $pos2 == 7653.1 2345.2 2363.3 1327.4
3) $pos3 == 1234.3 1277.2 1743.1 8471.2

El primer número sería X, el segundo Y, el tercero Z y el último A (el ángulo).
Y así con varias más (son solo ejemplos).

Necesito hacer algo que en ese INSERT INTO vaya agarrando 1), 2), 3) por orden y ubicándolos en X, Y, Z, A y después repitiéndolo en OX, OY, OZ, OA. Es decir, cuando una persona haga la acción para la query, a la primera persona le dará las posiciones del 1), a la segunda las del 2) y así sucesivamente, cuando se llegue al último y no haya más numeros para continuar, volvería a hacer la query con las posiciones del 1).

¿Sería posible? ¿Cómo?

Gracias.

0voto

Leyes comentado

¿Alguien tiene alguna idea?

0voto

Leyes comentado

Buenas tardes. Sigo necesitando hacer lo mismo. Agradeceré si alguien puede darme una mano. Saludos.

0voto

Leyes comentado

Si alguien puede darme una mano con esta pregunta sería genial. Gracias por el espacio. :)

2 Respuestas

1voto

cobasESP Puntos19650

Crear una variable contador con un 1, y cada vez que se llame a la acción esta haga los inserts y sume +1 a dicho contador.

También puedes coger el 1 de una base de datos, repetir el proceso y al acabar, sumar +1 y actualizarlo en la base de datos.

Segun he entendido tu pregunta sería algo así la solución

1voto

magarzon Puntos30650

Me faltan algunos datos en tu pregunta, pero voy a intentar darte una solución según lo que he entendido, que sería lo siguiente:

  • Tienes n posiciones determinadas guardadas en algún sitio (base de datos?)
  • Quieres asignar esas posiciones de forma secuencial (no random, a pesar de que en el titulo de tu pregunta pone "algo similar a random"), de manera que cuando se terminen las n posiciones, al siguiente usuario se le vuelve a dar la primera y así sucesivamente

Suponiendo que las posiciones tienen un id autoincrementado de 1 en 1 (vamos, que si son n, tienen un id de 1 a n sin saltos), lo más sencillo sería utilizar la operación módulo:

  1. Supongamos que llamamos posiciones_disponibles a la tabla de posiciones, y posiciones_asignadas a la tabla de posiciones asignadas a un usuario
  2. Insertamos la relación usuario-posición asignada SIN los valores aún de las posiciones, solo para obtener el id asignado a esa relación, llamando inmediatamente después del insert a mysql_insert_id()
  3. Utilizamos la operación módulo para obtener el siguiente id de la posición que le correspondería a esa relación: $idPosicion = ($idRelacion % n) + 1 (suponiendo que los id de posición empiezan en 1, si empiezan en 0 se puede quitar el +1)
  4. Obtenemos esa posición y hacemos un update de los campos de $idRelacion. Esto lo puedes hacer con una query y un insert, o directamente en el mismo insert.

El paso 2, de "pre-creación" de la fila, lo puedes sustituir si tienes otro mecanismo de generación de ids autoincrementados que sea seguro (no genere el mismo id para dos peticiones diferentes)

Si tienes alguna duda, repregunta

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta