php / myql problem bei einer Formularsuche

  • Hi!

    Ich hab folgendes Problem..

    Es gibt ein Formular wo man mehere eingaben tätigen kann, nach diesen Eingaben soll dann in einem Table gesucht werden und dann wieder ausgegeben.

    Nun hab ich aber das Problem, dass der Nutzer Felder freilassen kann oder nur ein Feld ausfüllen oder wie auch immer. Wie er eben will. Wenn ich aber nun direkt über die $_GET variablen suche, wird in der mysql db nach sätzen gesucht wo ein wert NULL sein soll nur weil der User im Formular nichts eingegeben hat.

    Nicht der Fehler des Users, er soll ja suchen koennen nach was er will aber wie mach ich php klar dass er nur das aus der mysql db holen soll nachdem auch wirklich gesucht wurde?


    lg

  • leider nicht, da das alles firmenintern laeuft...

    aber muesste doch so auch verstaendlich sein - ein Suchformular welches man abschicken kann und das dann die entsprechenden sätze aus der mysql db holt.

  • hm - ich kann ja verstehen, dass bestimmte Informationen firmenintern bleiben müssen, aber wenn du uns nicht zumindest den standart SQL Select string lieferst müssen wir mühleelig ein Beispiel konstruieren.

    Wie dringend ist die Frage denn?

    Ich hatte hier im Forum schonmal irgendwo nen Formular mit MySQL Datenbank und abfragen etc. und Quelltext veröffentlich, aber gegen ein paar mehr infos kann ich dir auch ein individuelles beispiel zusammenstellen. Zu not auch via PN - nachdem du dich hier angemeldet hast.

  • ja das select soll ja dann erst "gebaut" werden mit den eintraegen aus dem formular...

    beim formular sind 8 felder, sagen wir 5 davon hat der kunde ausgefuellt und klickt auf suchen. nun soll der select befehl so lauten: Select ka,ka2,ka3 from r0 where bla1=feld1 and bla2=feld2 and bla3=feld3 and bla4=feld4 and bla5=feld5 etc...

    es geht einzig und allein darum dass nicht immer alle felder ausgefuellt werden bzw immer ganz verschiedene.

  • gut man hat ein formular aber kannst du nicht sagen was z.b. in feld1 verlangt wird? und in feld2? z.b. Name, password oder soll das ein suchbefehl werden der nach stichpunkten sucht? ich check den sinn nicht so ganz...
    und zu dem das das firmenintern ist ok aber den formular code müsstest du schon rausrücken können weil den kann ja theoretisch jeder nachbauen...

  • dann mußt du, bevor du die datenbankabfrage durchführst ein script ausführen.
    In diesem werden die übergebenen formulardaten ausgewertet. also je nachdem, ob eine variable einen wert hat oder nicht. und danach gestaltest du dann die suchbegriffe in deiner abfrage.

    das bedeutet aber auch das du dann nicht mehr direkt über $_GET suchen kannst. damit müßtest du dann leben.

  • http://modula.mo.funpic.de/mysql/where/

    Zur einsicht des Quelltextes den Downloadlink auf der seite benutzen.

    Die Textfelder die in den Wherestring aufgenommen werden sollen nach diesem musster benennen:

    dbsearch_<mysqlfeldname>_<beliebig>
    das musster kann bei bedarf unter $suchmuster angepasst werden, ich verwende preg.

    Das wäre meiner meinung nach eine recht einfache methode :)

  • aber nun das nächste problem..

    bei 2 feldern (sollten diese benutzt worden sein) soll mit like gesucht werden nicht mit "=". Wie koenntet ihr euch denn das vorstellen umzusetzen?

  • also soll dan z.b. so rauskommen feld1 like feld2 AND feld3 like feld4
    oder?
    also ich denke das müsste für modula kein problem sein ;) aber ich checke dem seinen code sowieso net so ganz aber ich denke das macht der ;)

  • So, habe fertig - script kannst du wieder auf der gleichen seite ( http://modula.mo.funpic.de/mysql/where/ ) downloaden.

    Wenn du einen anderen vergleich wie = benutzen möchtest musst du die felder nun so benennen:

    dbsearch_<feldname>_OP<vergleich>_<beliebig>

    Möglichkeiten für <vergleich>:
    LIKE
    SAME
    NOTLIKE
    NOTSAME

    ergibt dann jeweils:
    LIKE
    =
    NOT LIKE
    NOT =

    Demo auf der Seite ;)

    cookie:
    wenn du möchtest kann ich dir den Code an einer stelle wo du ihn nicht verstehst erklären,
    das ganze Prinzip baut auf Reg_Ex auf ...

  • das geht mir genau so - ich kann sie auch nicht leiden und sie arbeiten eigentlich nie so wie ich will..

    aber ich hatte irgendwann einfach kein bock mehr hunderte von str_replace zu schreiben...

    Und dann hab ich halt mit Reg_Ex angefangen - mag da nicht mal wer nen Tutorial zu schreiben? *lieb schaut*

    Also einfache Mustersuche sind leicht...

    (.*) steht z.B. für jedes beliebige Zeichen . beliebig oft * .

    (.*)_(.*) findet dementsprächend alle strings die irgendwo einen unterstrich enthalten :)

  • ok also z.b. um zum beispiel wenn man sich registrieren muss zu checken ob der user beim e-mail feld überhaupt eine halbwegs gültige eingibt also das ein @ zeichen vorhanden ist...