Ausgabe filtern mit 2 Listboxen

Hallo Leute,
Ich schon wieder :slight_smile: … Sry
Mir wurde durch super Hilfe hier im Forum geholfen dafür danke ich mich bei euch.
Ich habe nun eine kleine Frage, ist das möglich mit meinem Jetzigen Code einen kleinen Filter zu bauen?
Ich gebe mir momentan durch eine Listbox meine Mysql Daten aus.
Es werden mir nur die angezeigt die in der Spalte „Name“ z.B ein „BMW“ vorzufinden ist.
Funktioniert alles wunderbar.

Nun möchte ich aber das diese Ausgabe noch mit der Spalte „Farbe“ gefiltert wird, dass ich schlussendlich nur noch blaue BMW’s habe.

Wie kann ich das machen?

mein Code
html:

                <select name="select" value="Auto">
                <option selected value="bmw">Bmw<option/>
                <option value="audi">Audi</option>
                <option value="merc">Mercedes</option>
                </select>
                <select name="select2" value="Farbe">
                <option selected value="blau">Blau<option/>
                <option value="rot">Rot</option>
                <option value="gr">Gruen</option>
                </select>

js

$(document).ready(function(e){
      $("select").change(function(e)
    {
        $("#here").show();
        var x = $(this).val();
       $.ajax(
        {
            type:'GET',
            url:'http://web-d.ch/best/fileadmin/sys/private/templates/name.php',
            data:'q=' + x,
            success:function(data)
            {
               $("#here").html(data);       
            }
            ,
        });
});
});

php

if(!empty($_GET['q']))
{
    include 'garage.php';
    $q=$_GET['q'];
    $query="SELECT * FROM Autoliste WHERE Marke LIKE '%$q%'";
    $result=mysqli_query($conn,$query);
    while($output=mysqli_fetch_assoc($result))
{
}

vielen dank für eure Hilfe

In dem du dein HTML in ein Formular packst und beim Ändern des Formular nicht nur die marke an das PHP- Skript schickst, sondern auch die farbe. Das PHP kann dann alle Datensätze raussuchen, wo die Farbe genauso ist wie die ausgewählte Farbe

ok.
Ich muss doch auch meine PHP anpassen richtig?
Kann ich nicht einfach einen genau gleichen Code in der JS File machen, nur das ich nicht an „q“ schicke sondern z.B „b“ und dann die in der PHP einfach definieren?

$q=$_GET['q'];
$q=$_GET['b'];
 $query="SELECT * FROM Autoliste WHERE Marke LIKE '%$q%' AND Farbe LIKE '%$b%' ";

Wenn es vernünftig werden soll, nicht mit diesem Ansatz und - mangels Kenntnissen - wahrscheinlich auch nicht alleine. Falls es sich um ein wichtiges oder gar kommerzielles Projekt handeln sollte, würde ich mir Hilfe suchen.

Konzeptionell sollte es so aussehen: Du sendest eine Anfrage zum Server, die alle KFZ vom Typ BMW liefern soll. Da es sich theoretisch um eine große Anzahl handeln könnte, sollte die Anfrage beinhalten, wieviele Datensätze pro Request gefetched werden sollen. Dafür sendet man normaler Weise keys wie ‚page‘ und ‚per_page‘ mit.

Der Server wiederum sollte die Daten als Collection von JSON-Objekten zum Success-Handler des Get-Requests zurückliefern:

[ {"type": "Z4", "color": "blau"}, {"type": "530d", "color": "red" }, {.................} ]

Dort könnte man aus dem Objekt die blauen Autos filtern, oder man macht es direkt innerhalb des HTML-Templates, wo über die Autos iteriert wird:
[HTML]

  • {{car.type}} : {{car.color}}
[/HTML]

Die Farbe lässt sich natürlich auch dem Request anhängen. Aber darüber hinaus gilt das oben Gesagte, und jQuery ist für eine richtige Artikelverwaltung nach heutigen Maßstäben suboptimal.

Danke euch beiden.
Ich dache es währe einfacher eine zweite Listbox einzubauen doch leider ist es nich der Fall.
Naja ich muss halt mit einem zurecht kommen.
Sollte eigentlich nur etwas einfaches werden, für einen bekannten eine kleine Homepage mit der er seine Autos die er verkauft da reinstellen kann.

Danke trozdem
Mit freundlichen Grüßen duti

ich glaube du solltest dich nicht abhalten lassen, denn auch wenn jquery nicht dafür geeignet ist, kann man es trotzdem verwenden. vor allem wenn es nur für ein kleines projekt ist. häng doch bei einer änderung einer box den wert der farbbox an den request an, in dem du

$(document).ready(function(e){ $("select").change(function(e) { $("#here").show(); var x = $("#auto").val(); var y = $("#farbe").val(); $.ajax( { type:'GET', url:'http://web-d.ch/best/fileadmin/sys/private/templates/name.php', data:'q=' + x + "&farbe=" + y, success:function(data) { $("#here").html(data); } , }); }); });

dazu der html code
[HTML]
Bmw
Audi
Mercedes


Blau
Rot
Gruen
[/HTML]
jetzt kannst du die farbe in php über $_POST[„farbe“] abfragen und die datenbank dementsprechend durchsuchen

Der Ansatz ist ungeeignet. Es gibt nämlich keine roten, grünen oder schwarzen Autos. Bei Audi heißt das Mythosschwarz und bei BMW nennt es sich Diamantschwarz. Bei 20 Marken x 10 Farben kommt man bereits auf 200, und natürlich gibt es noch weitere Merkmale, wie Typ, Motorisierung, etc.

Wenn der POST Request ein Ergebnis liefern soll, müssen die übergebenen Werte valide sein. Was bedeutet, dass die Select-Listen dynamisch mit den Attributen der jeweiligen Marke befüllt werden sollten.

Nachfolgend ein Plunkr zu Veranschaulichung. Mangels Datenbankanbindung habe ich das Model hier gemockt und die Ergebnisse gefiltert.
http://plnkr.co/edit/lAYuItnEP6Yo0a56szN9?p=preview