MySQL & PHP - wähle / Optionslisten und Daten für Nutzer, die noch erlaubt mir Abfragen zu generieren
-
23-09-2019 - |
Frage
Es tut uns der unklaren Titel, ein Beispiel werden die Dinge klären:
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
und timestamp
sind auto-Einfügungen von der Datenbank, wenn die anderen vier Felder hinzugefügt werden.
Das erste, was zu beachten ist, dass ein Benutzer mehr playings des gleichen Szenarios (scenid) am selben Tag (Playdate), die möglicherweise mit dem gleichen Ergebnis aufzeichnen kann (Seite = Sieger). Daraus ergibt sich die Notwendigkeit, dass die eindeutige ID und Zeitstempel für eine gute Maßnahme.
Nun, auf ihrer Benutzerseite, ich bin ihre aufgezeichnete Spielgeschichte in einer <select><option>...
Listenform mit 2 Tasten am Ende der Anzeige - Delete Record
und Go to Scenario
Mein Skript nimmt die scenid
und nach ein paar anderen Tabellen kehren mit etwas benutzerfreundlicher wie das Schlagen:
(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>
Nun, wenn Sie waren der erste Datensatz zu markieren, und klicken Sie auf Go to Scenario
gibt es genügend Informationen für mich, es zu analysieren und produzieren, die genaue Szenario, das Sie sehen wollen. Allerdings, wenn Sie wählen waren Delete Record
gibt es nicht. - Ich habe die playdate
und ich kann die scenid
und side
aus analysieren, was aufgeführt ist, aber in diesem Beispiel alle drei Datensätze würde das gleiche Ergebnis
erscheinen ich mich gemalt haben in eine Ecke. Hat jemand einen Vorschlag, wie ich einige einzigartige identifizierende Daten erhalten können (ID
und / oder timestamp
) auf diesem Formular mitfahren, ohne sie dem Benutzer angezeigt?
PHP-only bitte, ich muss NoScript-konform sein!
Lösung
Sie können ein value
Attribut auf Optionen gesetzt, und machen es den ID
enthält (was einzigartig ist) Ihre Daten:
<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>
Dann, wenn die Daten empfangen, die geschrieben worden ist, wird $_POST['history']
enthalten die ID
dass entsprechen dem Eintrag durch den Benutzer gewählt.
Und wie diese ID
eindeutig zuzuordnen sind, können Sie zu identifizieren, nutzen, ohne jeden Zweifel, Ihre Daten.
Der Inhalt des value
Attribut, wenn es gesetzt ist, an den Server übergeben wird, wenn das Formular abgeschickt wird -. Es ist dem Benutzer nicht angezeigt
Wenn kein value
für eine Option festgelegt ist, wird der Browser den Inhalt dieser Option an den Server übergeben, wenn das Formular abgeschickt wird -. Das ist, was Sie bekommen
Als Nebenbemerkung: wie mit allem, was von einem Benutzer eingegeben werden, müssen Sie prüfen, ob der Wert für $_POST['history']
erhalten gilt, sicher und all das - es eine ganze Zahl sein sollte, sollte es ein man die Werte der Benutzer kann sein Zugang, ...