Ankündigung

Einklappen
Keine Ankündigung bisher.

MYSQL Datenbank filtern?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MYSQL Datenbank filtern?

    Sehr geehrte Community,

    auf einer Shopseite können User Restpostenangebote hinzufügen, die in der Unterseite restposten.php angezeigt werden. Die Tabelle mit den Angeboten setzt sich aus Bezeichnung, Abmessung, Qualität, FEFCO, Menge und Preis zusammen.

    *FEFCO ist ein Code für Versandverpackungen

    Das Auslesen und die Anzeige der Datenbank unter Berücksichtigung des Statuses (User kann bestimmen ob Angebot sichtbar ist oder nicht) habe ich bereits fertig. Nun muss ich die Datenbank bzw. die Anzeige so filtern können, dass nur die entsprechend gefilterten Angebote angezeigt werden. Also der Nutzer der Seite der Angebote sucht soll diese Anzeige filtern können!

    Folgende Filter benötige ich:

    - Abmessungsfilter (min und max Wert für Höhe, Breite, Länge eingeben können, der dann nur die Produkte mit den Maßen in den eingegebenen Wertbereichen anzeigt, bsp: Breite min 50 Breite max 100 -> nur Angebote mit Breite zwischen 50-100)

    - FEFCO Filter (soll überprüfen ob Angebote mit FEFCO Code oder ohne gesucht werden sollen)

    - Qualitätsfilter (Qualität setzt sich aus 3 Spalten in der Datenbank zusammen. qualitaet1 ist eine Zahlenangabe wie 1.01 , qualitaet2 ein Buchstabe [A,B,C,D,E,F,G,K], und qualitaet3 ebenfalls ein Buchstabe [A,B,C,D,E,F,G,K]

    - Freitextsuche (sucht das eingegebene Wort in der Bezeichnung)

    ---------

    Es wäre schon extrem hilfreich wenn ich erstmal einen oder zwei Filter fertig bekomme. Das Problem ist, dass ich vorwiegend mit C C++ C# programmiere. Dort würde ich logischerweise einfach eine if Abfrage mit den verschiedenen Bedingungen machen, in php bin ich aber leider ein völliger Anfänger was die Syntax betrifft.

    Ich hoffe ihr könnt mir einige Denkanstöße oder Hilfen geben, wie ich diese Datenbank am besten mit einem Filtersystem ausstatte. In Youtube finde ich auch kein nützliches Tutorial dafür. Die Filter können (wenn es nicht anders geht) auch unabhängig voneinander arbeiten.


    Mit freundlichen Grüßen

    Daniel


  • #2
    Abmessungsfilter: BETWEEN

    FEFCO-Filter: Je nachdem, wie das in der DB angelegt ist ( bspw. NULL )

    Qualitätsfilter: Je Qaulitäts-Merkmal ein Dropdown, aus denen sich die Qualität am Ende zusammensetzt
    ( Dein Beispiel: Dropdown1: 1.01; Dropdown2: A; Dropdown3: K => 1.01AK )

    Freitextsuche: Lt. Deiner Definition mit LIKE machbar


    EDIT:
    Das Problem ist, dass ich vorwiegend mit C C++ C# programmiere.
    Je öfter Du das erwähnst, desto unglaubwürdiger wird das!
    Dort würde ich logischerweise einfach eine if Abfrage mit den verschiedenen Bedingungen machen, in php bin ich aber leider ein völliger Anfänger was die Syntax betrifft.
    Gerade die solltest Du mit Deinem selbst angegebenen Background leicht verstehen!
    Aber all diese Filter kannst Du auch direkt über SQL machen!
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Du musst die Datenbankabfrage anpassen, einfach ein paar WHERE-Klauseln zusammenbasteln.
      Freitextsuche (sucht das eingegebene Wort in der Bezeichnung)
      PHP-Code:
      // einfache Abfrage
      $sql 'SELECT zeug FROM tabelle WHERE Bezeichnung LIKE "%$Freitext%"';

      // ganz ganz grob in Richtung deines Usecases
      // nix getestet, nur der ungefähre Ablauf
      $datenbank = new pdo(); //...

      // angegebene Filterkriterien raussuchen und die entsprechenden WHERE Klauseln in ein Array laden
      // Suchbegriff fürs prepared Statement vorbereiten
      if(isset($_POST['freitext'])){
          
      $where['Freitext'] = 'Bezeichnung LIKE ?';
          
      $params['Freitext'] = '%'.$_POST['freitext'].'%';
      }
      // Whereklauseln per implode über keyword AND verbinden
      $whereString implode('AND'$where);
      // mit substring() das letzte AND rausnehmen
      $statement $datenbank->prepare('SELECT zeug FROM tabelle WHERE '.$whereString );
      $statement->execute($params); 
      Wenn du kannst, solltest du "Abmessung" in mehrere Felder aufteilen, Höhe, Länge Breite... sonst machst du dir das Handling mit dem Feld unnötig kompliziert.
      Relax, you're doing fine.
      RTFM | php.de Wissenssammlung | Datenbankindizes | Dateien in der DB?

      Kommentar

      Lädt...
      X