MySQL y PHP - Seleccionar / listas de opciones y mostrar datos a los usuarios que todavía me permite generar consultas
-
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!
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, ...