Datenbankabfrage optimal?

Alles, was nicht in die anderen Foren passt, kannst du hier loswerden.
Antworten
D347h
Beiträge: 30
Registriert: 15. Jun 2011, 18:34
Wohnort: Linz
Kontaktdaten:

Datenbankabfrage optimal?

Beitrag von D347h »

Moinsen :)

Ich habe mal eine Frage zum Auslesen von Daten aus der Datenbank.

Folgendes Szenario:
Ich mache gerade einen Spielplan fuer einen Fussballverein, und mein groesstes Hindernis derzeit ist eine Select-Box in der der Inhalt eines Feldes aller Spieler sein soll, die einer Gewissen Rolle angehoeren.
(Rolle und Feld sind einstellbar, dies ist aber kein Problem)

Und irgendwie kommt mir der Code mehr als umstaendlich vor:

Code: Alles auswählen

    public function createInput ($game_id, $cnt)
    {
        global $gPreferences;
        
        // ID des Spielers, welcher das aktuelle Tor geschossen hat, auslesen:        
        $player_id = $this->getGoalPlayerID($game_id, $cnt);
        
        // "Select-Kopf" schreiben
        $return = '<select name="player'.$cnt.'">';
        // alle User mit der, in den Einstellungen eingestellten Rolle, auslesen:
        $sql = 'SELECT `mem_usr_id` FROM '.TBL_MEMBERS.' WHERE `mem_rol_id` LIKE '.$gPreferences["spielplan_group"];
        $result = $this->db->query($sql);

        while($row = $this->db->fetch_object($result))
        {
            // fuer jeden User den Namen ermitteln und ausgeben:
            $sql1 = 'SELECT `usd_value` FROM '.TBL_USER_DATA.' WHERE
                        `usd_usf_id` LIKE '.$gPreferences["spielplan_field"].' AND
                        `usd_usr_id` LIKE '.$row->mem_usr_id;
            $result1 = $this->db->query($sql1);
            $row1 = $this->db->fetch_object($result1);
            $return .= '<option value="'.$row->mem_usr_id.'"';
            // falls ID des Torschuetzen u. ID des aktuellen Users uebereinstimmen, diesen Markieren.
            if ($row->mem_usr_id == $player_id)
            {
                $return .= ' selected="selected"';
            }
            $return .='>'.$row1->usd_value.'</option>';
        }
        $return .= "</select>";
        return $return;
    }
*) Zuerst wird mit einer Funktion der aktuelle Torschuetze ermittelt,
*) danach der "Kopf" fuer den Select-Teil in die Rueckgabevariable geschrieben.
*) dann eine Liste der ID's der User mit der gewaehlten Rollenmitgliedschaft aus der Tabelle "TBL_MEMBERS" ausgelesen.
*)Anhand dieser Liste wird das eingestellte Feld aus der Tabelle "TBL_USER_DATA" ausgelesen.
*)Und dies dann zwischen "<option>" und "</option>" geschrieben.
*)Am Ende "</select>" wieder geschlossen und das ganze zurueckgegeben.

Ich vermute das dies noch viel einfacher geht und ob mir hier eventuell jemand einen Tip geben koennte?
(ich vermute das es mit JOIN gehen sollte, nur blick ich da noch nicht zu 100% durch :( )

MfG & schoenes WE
D347h

PS:
Dieses Wochenende kann ich hier leider nicht mehr nachsehen, Rock im Park ruft :)
Antworten