Seite 1 von 1

[gelöst] Dropdown befüllen

Verfasst: 09.11.2008 17:49
von TLoD
Hallo Ihr,

könnt Ihr mir bitte eben kurz weiterhelfen.

Ich möchte ein Dropdown Auswahlfeld befüllen und da aber immer nur einen Eintrag drin haben. Ich lese also eine Table aus, in der mehrere Einträge pro User drin sind und möchte, um nach User zu sortieren, in einem Dropdown, den User wählen können. Das ganze funzt soweit auch schon alles, nur listet es mir zur Zeit noch die User mehrfach. Sprich ein User hat 10Eeinträge, so erscheint sein Name auch 10 mal in dem Dropdown, ich möchte aber das er nur einmal drin steht. Ich habe das ganze schon mit LIMIT 1 probiert, aber dann listet er mir nur noch einen User, statt alle User nur ein mal.
Ich hoffe, es hat jeder verstanden was ich will ;)

Hier mal meine Code:

Code: Alles auswählen

$sql = "SELECT
                                Feind
                   FROM
                                ".PROFILE."
                   WHERE
                                1
                   ORDER BY
                                Feind ASC;";
    $result = mysql_query($sql) OR die(mysql_error());

        echo "<select size=\"1\" name=\"FID\" id=\"name\">\n";
        echo "<option value=\"0\" selected=\"selected\">Bitte w&auml;hlen</option>\n";
    while($row = mysql_fetch_assoc($result)) {
        echo "<option value=\"".$row['Feind']."\">".$row['Feind']."</option>\n";
    }
Schon mal besten Dank für Eure Hilfe!

Verfasst: 09.11.2008 18:36
von gn#36
"SELECT DISTINCT" könnte helfen. Oder "GROUP BY Feind"

Verfasst: 09.11.2008 18:44
von Miriam

Code: Alles auswählen

$sql = "SELECT DISTINCT Feind FROM " . PROFILE . " ORDER BY Feind ASC;"; 

Verfasst: 09.11.2008 18:59
von TLoD
Habe es mal mit GROUP BY Feind gemacht.
Funzt 1a danke!

Was denn da fürn Unterschied zwischen den beiden Lösungen?

Verfasst: 09.11.2008 19:10
von Miriam
In Deinem Fall ist das Ergebnis dasselbe. Also kein Unterschied.

Verfasst: 09.11.2008 19:16
von TLoD
Miriam hat geschrieben:In Deinem Fall ist das Ergenbnis dasselbe. Also kein Unterschied.
Danke!

Verfasst: 09.11.2008 20:34
von gn#36
GROUP BY macht das was es vom Wortlaut her schon aussagt: Gruppieren. Das ist hilfreich wenn du versuchst Statistiken aus Datenbankeinträgen zu erstellen. Sagen wir mal du hast eine Tabelle in der du für jeden Klick nach Usern sortiert jeweils einen Eintrag hast (also in der Datenbank z.B. dann date und user_id als Spalten) Wenn du jetzt z.B. diese Abfrage machst:

Code: Alles auswählen

SELECT user_id, count(*) as anzahl FROM tabelle GROUP BY user_id
dann bekommst du als Ergebnis eine Liste wo jede User Id in der Tabelle ein mal Vorkommt und in der zweiten Spalte steht die Anzahl der Klicks jedes Users.

Mit

Code: Alles auswählen

SELECT DISTINCT user_id FROM tabelle
könntest du dagegen nur nachsehen welche User überhaupt in der Tabelle vorkommen, denn das sorgt dafür, dass jede User_id im Ergebnis nur ein einziges mal vorkommt (man könnte sich jetzt auch konstellationen überlegen in der die gemeinsame Nutzung sinnvoll ist, aber die Funktion ist eigentlich so auch schon erklärt).

Verfasst: 09.11.2008 20:48
von TLoD
ah ok danke - dann hätte ich zweiteres auch verwenden können aber gut zu wissen denn ersteres brauch ich gleich noch :D

Verfasst: 10.11.2008 17:22
von Miriam
Zumal das GROUP BY in dieser Query

Code: Alles auswählen

SELECT user_id, count(*) as anzahl FROM tabelle GROUP BY user_id;
zwingend notwendig ist, weil COUNT() eine Aggregatfunktion ist und Du noch user_id dabei hast...
Klick & Klack