[gelöst] Dropdown befüllen

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
TLoD
Mitglied
Beiträge: 161
Registriert: 04.08.2007 14:57
Wohnort: Nürnberg
Kontaktdaten:

[gelöst] Dropdown befüllen

Beitrag 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!
Zuletzt geändert von TLoD am 15.11.2008 13:16, insgesamt 2-mal geändert.
LG Marc

Wir leben alle unter dem gleichen Himmel, aber wir haben nicht alle den gleichen Horizont.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

"SELECT DISTINCT" könnte helfen. Oder "GROUP BY Feind"
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

Code: Alles auswählen

$sql = "SELECT DISTINCT Feind FROM " . PROFILE . " ORDER BY Feind ASC;"; 
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
TLoD
Mitglied
Beiträge: 161
Registriert: 04.08.2007 14:57
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von TLoD »

Habe es mal mit GROUP BY Feind gemacht.
Funzt 1a danke!

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

Wir leben alle unter dem gleichen Himmel, aber wir haben nicht alle den gleichen Horizont.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag von Miriam »

In Deinem Fall ist das Ergebnis dasselbe. Also kein Unterschied.
Zuletzt geändert von Miriam am 09.11.2008 19:20, insgesamt 1-mal geändert.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Benutzeravatar
TLoD
Mitglied
Beiträge: 161
Registriert: 04.08.2007 14:57
Wohnort: Nürnberg
Kontaktdaten:

Beitrag von TLoD »

Miriam hat geschrieben:In Deinem Fall ist das Ergenbnis dasselbe. Also kein Unterschied.
Danke!
LG Marc

Wir leben alle unter dem gleichen Himmel, aber wir haben nicht alle den gleichen Horizont.
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag 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).
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Benutzeravatar
TLoD
Mitglied
Beiträge: 161
Registriert: 04.08.2007 14:57
Wohnort: Nürnberg
Kontaktdaten:

Beitrag 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
LG Marc

Wir leben alle unter dem gleichen Himmel, aber wir haben nicht alle den gleichen Horizont.
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Beitrag 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
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Antworten

Zurück zu „Coding & Technik“