[MySQL 3.23.X] Suchstring in SQL-DB

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

  • [MySQL 3.23.X] Suchstring in SQL-DB

    Hallo Leuts,

    habe hier schon etwas gesucht aber mal wieder nicht das richtige gefunden.

    Folgendes Prob:

    Ich möchte per Formular in meiner User-DB suchen, wäre nicht wirklich ein Problem, wenn ich aber nach mehreren Voraussetzungen suchen möchte.

    BSP:

    Ich habe ein Formular mit bis zu 7 möglichen Ergebnisseinschränkungen wie Alter (von - bis), Geschlecht, online, etc.)

    Eine einzelne Abfrage wäre ja nun kein Problem. Wenn sich die Suchabfrage aus mehreren Bedingungen zusammensetzt müßte der SELECT-String ja auch irgendwie zusammengesetzt werden, nur habe ich da noch nicht wirklich eine Lösung.

    Abfragebeispiel:

    Ich suche nun alle Frauen die online sind und ein Bild in ihrem Profil hochgeladen haben, dann sollte der STRING ja irgendwie so ausschauen:

    Aus dem Formular kommen die werte:
    $ges (geschlecht)
    $bild (suche nach datensätzen mit bild, 1 oder 0)
    $online (suche nach datensätzen mit aktuellem sessioneintrag, 1 oder 0)

    irgendwie sollte das nun so verknüpft werden:

    PHP-Code:
    SELECT FROM user WHERE geschlecht '$ges' AND bild '1' AND usersess <>'Null' 
    - wobei ich glaube dasdiese verkettung mit ANDs auch irgendwie nooblike is


    mit abfragen und schleifen finde ich es irgendwie sehr umständlich, vielleicht reicht da aber mein wissen noch nicht ganz aus.

    im prinzip will ich erkennen wieviele einschränkungen vom user gesetzt werden und aus solchen einen string zusammenbasteln.

    für tipps oder ideen wäre ich sehr dankbar...

  • #2
    ich denke, dass wird nur so gehen, wie du es versucht hast ... das mit den vielen ands ist nicht nooblike - anders bekommst du keine Verknüpfung mehrerer Kriterien hin. Höchstens, wenn du auf ein Ergebnis immer wieder ein neues Select ausführst - und das ist erstrecht nooblike.

    Ich würde folgendermaßen vorgehen:
    Post-Array mit each durchlaufen und für jedes Formularfeld eine Erweiterung an das bestehende Select anhängen.

    Z.B.:

    $query="select * from user where";
    while (list ($key, $val) = each ($_POST['rechte'])) {
    $query .= "and $key=$val")
    }

    Dazu sollten allerdings die Felder der Datenbank so heißen wie die im Form - oder andersrum.

    Kommentar


    • #3
      hmm,

      patricks lösung ist auch nicht noon-un-liker

      mal abgesehen davon, daß das thema erst vorgestern durchgekaut (ausführlich) wurde.

      - prüfe alle post werte auf existenz, etc.
      - die zu überprüfenden werden ala 'spalte = wert' in ein feld gepusht
      - implode (" AND ", $feld)

      dann tritt nicht wie bei patricks lösung das problem auf, daß du where 1 schreiben müßtests, um zu verhindern , daß and auf where folgt.
      Die Zeit hat ihre Kinder längst gefressen

      Kommentar


      • #4
        ja, das hat natürlich was ... aber ganz weit war ich da ja auch nicht von entfernt - oder ?!

        Kommentar


        • #5
          hm... vielleicht schickt ihr mal den link wo es ausführlich beschrieben wurde...


          soweit habe ich die abfrage hinbekommen, habe aber noch nen kleinen fehler:

          hier meine abfrage:

          PHP-Code:
          $var var_dump ($_POST);
              
          $query="select * from user where";
              while (list (
          $key$val) = each ($_POST))
              {
                  
          $query .= " and $key=$val";
                  
              }
              echo 
          "test: $query"
          klar, ist erstmal zum testen...

          der query sieht aber noch nicht optimal aus, er liest alle übergebenen variablen aus :
          PHP-Code:
          select from user where and geschlecht= and altervon= and alterbis= and suche= and rubrick= and [b]online=1[/b] and Submit=Suche starten 
          hatte auch nur einen wert übergeben. er müßte also die leeren vars überspringen bzw. auslassen. hinter dem where würde ich eine standardabfrage einbauen.

          danke übriegens für die schnelle hilfe
          Zuletzt geändert von tedman72; 03.02.2004, 17:11.

          Kommentar

          Lädt...
          X