MySQL et PHP - sélectionner / listes option et montrant des données aux utilisateurs qui me permet encore de générer des requêtes

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

  •  23-09-2019
  •  | 
  •  

Question

Désolé pour le titre peu claire, un exemple va éclaircir les choses:

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 et timestamp sont insertions automatiquement par la base de données lorsque les 4 autres champs sont ajoutés.

La première chose à noter est qu'un utilisateur peut enregistrer plusieurs playings du même scénario (scenid) à la même date (playdate) peut-être avec le même résultat (côté = gagnant). D'où la nécessité pour l'ID unique et horodatages pour faire bonne mesure.

Maintenant, sur leur page d'utilisateur, j'afficher leur histoire de jeu enregistrée sous forme de liste <select><option>... avec 2 boutons à la fin - Delete Record et Go to Scenario

Mon script prend la scenid et après avoir frappé quelques autres tables revient avec quelque chose de plus convivial comme:

  (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>

Maintenant, si vous deviez mettre en évidence le premier enregistrement et cliquez sur Go to Scenario il y a assez d'informations là pour moi pour analyser et produire le scénario exact que vous voulez voir. Toutefois, si vous deviez choisir Delete Record il n'y a pas -. Je le playdate et je peux analyser le scenid et side de ce qui est énuméré, mais dans cet exemple les trois documents aurait le même résultat

Je me apparais avoir peint dans un coin. Quelqu'un at-il une suggestion quant à la façon dont je peux obtenir des données uniques d'identification (ID et / ou timestamp) pour monter le long de ce formulaire sans montrer à l'utilisateur?

PHP uniquement s'il vous plaît, je dois être conforme NoScript!

Était-ce utile?

La solution

Vous pouvez définir un attribut value sur vos options et faire contenir la ID (qui est unique) de vos données:

<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>

Ensuite, lors de la réception des données qui a été affiché, $_POST['history'] contiendra les ID qui correspondent à l'entrée choisie par l'utilisateur.

Et, comme ce ID est unique, vous pouvez utiliser pour identifier, sans aucun doute, vos données.


Le contenu de l'attribut value, lorsqu'il est réglé, est transmis au serveur lorsque le formulaire est soumis -. Il n'est pas affiché à l'utilisateur

Si aucun value est défini pour une option, le navigateur passera le contenu de cette option sur le serveur, lorsque le formulaire est soumis -. Qui est ce que vous obtenez

En sidenote: comme avec tout soumis d'un utilisateur, vous devez vérifier que la valeur reçue pour $_POST['history'] est valable, sûr, et tout ce qui - il doit être un entier, il devrait être une une des valeurs que l'utilisateur peut accès, ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top