MySQL e PHP - selezionare / opzione di liste e mostrando dati agli utenti che consente ancora di me per generare query

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

  •  23-09-2019
  •  | 
  •  

Domanda

Ci scusiamo per il titolo chiaro, un esempio sarà chiaro le cose:

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 e timestamp sono auto-inserimenti dal database quando vengono aggiunti gli altri 4 campi.

La prima cosa da notare è che un utente può registrare più playings dello stesso scenario (scenid) alla stessa data (playdate) possibilmente con lo stesso risultato (lato = vincitore). Da qui la necessità per l'ID univoco e timestamp per buona misura.

Ora, sulla loro pagina utente, sto mostrando la loro storia di gioco registrati in forma lista <select><option>... con 2 pulsanti alla fine - Delete Record e Go to Scenario

Il mio script prende il scenid e dopo aver colpito un paio di altri tavoli torna con qualcosa di più user-friendly come:

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

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

Ora, se si dovesse evidenziare il primo record e fare clic Go to Scenario c'è abbastanza informazioni lì per me per analizzare e produrre lo scenario esatto che si desidera vedere. Tuttavia, se si dovesse selezionare Delete Record non c'è -. Ho la playdate e posso analizzare il scenid e side da ciò che è elencato, ma in questo esempio tutti e tre i record avrei lo stesso risultato

mi sembra di essermi dipinto in un angolo. Qualcuno ha un suggerimento su come posso ottenere alcuni dati identificativi unici (ID e / o timestamp) per cavalcare lungo su questa forma senza mostrare all'utente?

PHP-solo per favore, devo essere NoScript compatibile!

È stato utile?

Soluzione

È possibile impostare un attributo value sulle opzioni, e renderlo contenere il ID (che è unico) dei suoi dati:

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

Poi, quando si ricevono i dati che è stato pubblicato, $_POST['history'] conterrà la ID che corrispondono alla voce scelto dall'utente.

E, in quanto questo ID è unico nel suo genere, è possibile utilizzare per identificare, senza alcun dubbio, i vostri dati.


Il contenuto dell'attributo value, se impostato, viene passato al server quando il modulo viene inviato -. Non è visualizzato per l'utente

Se non value è impostato per un'opzione, il browser passerà il contenuto di tale opzione per il server, quando il modulo viene inviato. - che è quello che si stavano diventando

Come sidenote: come con tutto presentato da un utente, è necessario verificare che il valore ricevuto per $_POST['history'] è valida, sicura, e tutto ciò che - dovrebbe essere un numero intero, dovrebbe essere uno uno dei valori che l'utente può accesso, ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top