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

doppeltes <li> - Element ausblenden

_R_A_L_F_

Mitglied
Hallo,

ich möchte gerne über einen AJAX Request Suchergebnisse aus einer Datenbank ausgeben.

Die Ergebnisse werden unter dem input Feld als <li> mittels Javascript aufgelistet.

Das Problem ist aber das die Einträge mir dann doppelt angezeigt werden falls in der Suchespalte zwei mal das selbe drinsteht:
Beispiel:
1. Datensatz Bereich Bla
2. Datensatz Bereich XY
3. Datensatz Umgebung TZ


Beim suchen möchte ich das wie im Beispiel oben nur einmal "Bereich" angezeigt wird unter dem input Feld. Also sprich doppelte Inhalte von dem <li> ausblenden.

Wie funktioniert das?

JS-Code bisher:
HTML:
/ Textfeld 1
// autocomplet : bei jeder Texteingabe AJAX senden
function autocomplet_first() {
    var min_length = 1; // mindest Eingabe an Character
    var keyword = $('#textfeld1_id').val();
    if (keyword.length >= min_length) {
        $.ajax({
            url: 'ajax/ajax_textfeld1.php',
            type: 'POST',
            data: {keyword:keyword},
            success:function(data){
                $('#textfeld1_list_id').show();
                $('#textfeld1_list_id').html(data);
            }
        });
    } else {
        $('#textfeld1_list_id').hide();
    }
}
 
// set_item : Wenn Wert ausgewählt wird
function set_item_first(item) {
    // Ändere Input Variable
    $('#textfeld1_id').val(item);
    // verberge Ausgabeliste
    $('#textfeld1_list_id').hide();
}
 
Also auf dem Bild sieht man ganz gut die Ausgabe / das Problem:

upload_2015-8-6_21-46-4.png

2 Datensätze haben in der selben Spalte den gleichen Inhalt z.B. Bereich. Ich will aber falls dies vorkommt, das nur einmal Bereich dort steht unter dem Input Feld und das zweite ausgeblendet wird.
 
Falls beide Datensätze aus dem AJAX-Request stammen, würde ich serverseitig filtern, damit keine Duplicates zurückgeliefert werden. Clientseitig würde es darauf hinauslaufen, für alle List-Elemente mit 'Bereich' Idntifikatoren zu schaffen (bsw. CSS-Klassen) und alle mit Ausnahme des ersten zu entfernen. So etwas wie $('.foo').length sagt dir, ob es mehr als einmal vorkommt, $('.foo').eq(0) selektiert das erste Element und .remove() löscht Elemente.
 
Da ich in PHP fitter bin als in Javascript und ich eh nur den AJAX auf eine Spalte beziehe habe ich das ganze über die SQL - Abfrage abgefangen mit DISTINCT

Also z.B. SELECT DISTINCT Spalte1 FROM Tabelle1 ....

Trotzdem Danke Trojaner für die Hilfe Tipps
 
Zuletzt bearbeitet:
Zurück
Oben