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

Frage Ausgabe filtern mit 2 Listboxen

duti

Mitglied
Hallo Leute,
Ich schon wieder :) .. 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:
Code:
                <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
Code:
$(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
Code:
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
 
Werbung:
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?
Code:
$q=$_GET['q'];
$q=$_GET['b'];
 $query="SELECT * FROM Autoliste WHERE Marke LIKE '%$q%' AND Farbe LIKE '%$b%' ";
 
Werbung:
Wie kann ich das machen?

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:
Code:
[
  {"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:
<ul>
  <li ng-repeat="car in cars" ng-if="car.color === 'blue'">{{car.type}} : {{car.color}}</li>
</ul>
 
Das PHP kann dann alle Datensätze raussuchen, wo die Farbe genauso ist wie die ausgewählte Farbe

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
 
Werbung:
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
Code:
$(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:
                <select name="select" value="Auto" id="auto">
                <option selected value="bmw">Bmw<option/>
                <option value="audi">Audi</option>
                <option value="merc">Mercedes</option>
                </select>
                <select name="select2" value="Farbe" id="farbe">
                <option selected value="blau">Blau<option/>
                <option value="rot">Rot</option>
                <option value="gr">Gruen</option>
                </select>
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
 
Zurück
Oben