MySQL y PHP - Seleccionar / listas de opciones y mostrar datos a los usuarios que todavía me permite generar consultas

StackOverflow https://stackoverflow.com/questions/2541643

  •  23-09-2019
  •  | 
  •  

Pregunta

Lo siento por el título claro, un ejemplo será aclarar las cosas:

TABLE: Scenario_victories

ID  scenid        timestamp      userid side    playdate
1   RtBr001   2010-03-15 17:13:36   7     1     2010-03-10
2   RtBr001   2010-03-15 17:13:36   7     1     2010-03-10
3   RtBr001   2010-03-15 17:13:51   7     2     2010-03-10

ID y timestamp son auto-inserciones por la base de datos cuando se añaden los otros 4 campos.

Lo primero a destacar es que un usuario puede grabar múltiples playings del mismo escenario (scenid) en la misma fecha (cita de juegos), posiblemente con el mismo resultado (lado = ganador). De ahí la necesidad de que el identificador único y marcas de tiempo para una buena medida.

Ahora, en su página de usuario, que estoy mostrando su historial de reproducción grabada en forma de lista <select><option>... con 2 botones en la parte final - Delete Record y Go to Scenario

Mi script toma el scenid y después de golpear una mesas otras pocas vueltas con algo más fácil de usar como:

  (playdate)   (from scenid)        (from side)
#########################################################
# 2010-03-10  Road to Berlin #1 -- Germany, Hungary won #
# 2010-03-10  Road to Berlin #1 -- Germany, Hungary won #
# 2010-03-10  Road to Berlin #1 -- Soviet Union won     #
#########################################################
     [Delete Record]              [Go To Scenario]

en HTML:

<select name="history" size=3>
  <option>2010-03-10  Road to Berlin #1 -- Germany, Hungary won</option>
  <option>2010-03-10  Road to Berlin #1 -- Germany, Hungary won</option>
  <option>2010-03-10  Road to Berlin #1 -- Soviet Union won</option>
</select>

Ahora, si tuviera que destacar el primer registro y haga clic en Go to Scenario hay suficiente información allí para mí para analizar y producir el escenario exacto que desea ver. Sin embargo, si tuviera que seleccionar Delete Record no es -. Tengo la playdate y puedo analizar el scenid y side de lo que está en la lista, pero en este ejemplo los tres registros tendría el mismo resultado

Parece que he pintado yo mismo en una esquina. ¿Alguien tiene una sugerencia en cuanto a cómo puedo obtener algunos datos de identificación únicos (ID y / o timestamp) para montar a lo largo de este formulario sin mostrarlo al usuario?

PHP-sólo por favor, que debe ser compatible con NoScript!

¿Fue útil?

Solución

Se puede configurar un atributo value sobre sus opciones, y hacer que contiene el ID (que es único) de sus datos:

<select name="history" size=3>
  <option value="1">2010-03-10  Road to Berlin #1 -- Germany, Hungary won</option>
  <option value="2">2010-03-10  Road to Berlin #1 -- Germany, Hungary won</option>
  <option value="3">2010-03-10  Road to Berlin #1 -- Soviet Union won</option>
</select>

A continuación, al recibir los datos que se han contabilizado, $_POST['history'] contendrá el ID que corresponden a la entrada seleccionado por el usuario.

Y, ya que esto ID es único, se puede utilizar para identificar, sin lugar a dudas, sus datos.


El contenido del atributo value, cuando se establece, se pasa al servidor cuando se envía el formulario. - no se muestra al usuario

Cuando hay value se establece para una opción, el navegador pasará el contenido de esa opción para el servidor, cuando se envía el formulario -. Que es lo que estaba recibiendo

Como nota al margen: al igual que con todo el material enviado a un usuario, se debe comprobar que el valor recibido por $_POST['history'] es válida, segura, y todo lo que - debe ser un número entero, que debe ser uno de los valores que el usuario puede acceso, ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top