• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

2x Dropdown dynamisch füllen + Submit + Ergebnis

DjMG

Neues Mitglied
Hallo liebe User!

Ich bräuchte eure Expertenhilfe zu folgendem Problem:
Es gibt 2 Dropdownfelder die gefüllt werden sollen, 1x "Mapname" und 1x "Levelname". Der User wählt also eine Map, dann das passende Level aus und klickt "Submit" - danach erscheint eine Highscoreliste zur Auswahl eben.

Hier der Auszug von unserem Programmierer
Ich werd in die „highscores.php“-Datei zwei Routinen implementieren:
- writeHgihscores()
- readHighscores()

Wobei zweiteres für dich relevant ist.
Übergabeparameter MAPNR + LEVELNR, jeweils als Integer (über Post auslesen vom DropDown).
Der Funktionsaufruf für dich ist also:
myVar = readHighscores(mapNr, levelNr);

Du musst mir nur sagen, welchen Rückgabeparameter du haben möchtest.
Am besten wär wahrscheinlich ein zweidimensionales Assoziatives Array a lá
ARRAY = (
0: Array(
name: Fritz
scores: 100)
1: Array(
name: Sepp
scores: 50))

Also im ersten Array sind die User gespeichert, die wiederum ein Array sind und aus Name + Punkte bestehen.

Wie kann ich das am Besten realisieren?
Ich würde mich über eure Hilfe wirklich freuen - danke schon im Voraus!

lg DjMG
 
Die Frage betrifft nicht nur HTML, sondern übergreift halt auch mit PHP/vielleicht auch JavaScript.

Wie kann ich das Dropdown eben wie gewünscht befüllen,
und nach erfolgter Auswahl die Ergebnisse anzeigen lassen?

lg
 
Das Beste wäre wohl ersteinmal sich mit HTML und anschließend mit CSS auseinanderzusetzen. Dann weißt du wie man eine Liste aufbaut und diese gestaltet.

Als nächstes kommt wohl dann eine serverseitige Programmiersprache (z.B. PHP), damit du User-Daten / -Eingaben speichern und abrufen kannst.

Um den ganzen noch etwas "Bewegung" und "Interaktivität" zu geben, kommt ganz zum Schluss JavaScript ins Spiel.


Gruß
Loon3y
 
Unter Berücksichtigung der ANleitungen Deines Programmierers machst Du ein einfaches Formular in HTML (Reine Formsache - Barrierefreie Formulare mit HTML, CSS & JavaScript : Einfach für Alle) und schickst das an Dein PHP-Script.
Das Script ruft dann die Funktion readHighscores() mit den richtigen Parametern (aus $_POST, $_GET oder $_REQUEST) auf und baut die Ergebnisseite auf.

Reicht Dir das, oder hast Du mit speziellen Teilen davon Probleme?

Eine Anwendung für JavaScript sehe ich im Moment nicht, es sei denn, je nach Map gibts unterschiedliche Auswahlmöglichkeiten für das Level. Das könnte man dann mit Ajax anwenderfreundlich realisieren. Eine serverseitige Überprüfung wird aber dennoch nötig sein, da Ajax ja clientseitig JavaScript ist und das abschaltbar ist.
 
Hallo!

Danke für die Hilfe soweit.
Die Anforderungen wurden etwas geändert/vereinfacht:

Hi!

Werd den Highscore anders gestalten. Irgendwie is es blöd, wenn man Map und Level auswählt. Jede Level hat eine eindeutige ID ( = Nr), weil in Map2 wird’s nicht wieder eine Level1 geben. Intern zur Berechnung bleibt alles gleich.

Für dich relevant ist nun:
Die Datei, die einzulesen ist, heißt dann „highscore_x.txt“, wobei x die Levelnr ist, ohne vorstehenden Nullen, also
highscore_1.txt
highscore_2.txt
highscore_10.txt
highscore_100.txt

[FONT=&quot]Der Inhalt dieser Dateien bleibt wie gehabt[/FONT]
[FONT=&quot]

Derzeit sieht die Auswahl so aus:
Code:
    <div id="chooseMap">
        <img src="images/map_title.jpg" alt="title" />
        <form name="jump" action="index.php?page=highscores_print" method="post">
        <select name="map">
        <option selected value="0"> ----- W&auml;hlen Sie aus: -----
        <option value="1">Map 1</option>
        <option value="2">Map 2</option>
        <option value="3">Map 3</option>
        </select>
                
        <input type="submit" value="Los!">
        </form>

    </div>
Die Auswahl wird also an die Datei highscores_print.php weitergeleitet,
welche die POST-Daten verarbeitet und anzeigt.
Wie mache ich das aber nun?
Code:
<div id="highscores">
    <img src="images/highscores_title.jpg" alt="title" />
    <div id="printHighscores">
        AUSGABE
    </div>

</div>

Die richtige .txt muss also ausgewählt werden. Darin dann das Array (2x?) aufsplitten
und die Inhalte anzeigen? Danke für eure wertvollen Tipps!

lg Uli
[/FONT]
 
Ich denke ich hab's grad selbst gelöst :)

Code:
<?php
    
    function printHighscores()    {
        
        $level = $_POST["level"];
        $fname = "data/highscores/highscore_" . $level . ".txt";
        
        $fileItems = file($fname);
            
        echo "<ul>";
        $counter = 1;  
        foreach ($fileItems as $fileItem) {
                     
            $fileItemInfos = explode("|",str_replace("\r\n",'',$fileItem));
                              if (count($fileItemInfos) == 2)
                              {
                                    echo '<li>';
                                    echo '<span class="name">' . $counter . '. ' . $fileItemInfos[0] . '</span>';
                                    echo '<span class="score">' . $fileItemInfos[1] . '</span>';
                              } 
            $counter++;  
        }    
        echo "</ul>";    
    }
    
?>

Funktioniert auch bereits :)
Danke trotzdem für all' die Tipps,
lg Uli
 
Zurück
Oben