Suchparameter .....an select aber wie ?

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

  • Suchparameter .....an select aber wie ?

    guten morgen !!!

    ich hab da auch mal nen Problem, mit dem ich nicht zurecht komme..... ich hab nun schon einige foren abgeklapptert in der hoffnung auf nen thread der mi hilft......

    aber leider sind die threads zu speziell oder die gestellten fragen gehen von vonerein zu weit *lächel*

    zu meinem Problem..... ich hab ne tabelle voller userdaten..... was muß ich anstellen, wenn ich dem suchenden mehrere suchoptionen anbieten möchte....
    z.b ob er nach alter zwischen 16 und 21 sucht, nach usern aus bestimmten städten, plz usw

    hat da jemand nen gutes Tutorial oder codeschnipsel die mir ne Idee näher bringen könnten ?

    wäre wirklich toll !!!
    Coder never die, they just GOSUB without RETURN

    Mein System

  • #2
    Re: Suchparameter .....an select aber wie ?

    naja,

    was muß ich anstellen, wenn ich dem suchenden mehrere suchoptionen anbieten möchte....
    z.b ob er nach alter zwischen 16 und 21 sucht, nach usern aus bestimmten städten, plz usw
    zuersteinmal mußt du dem user ein paar input-felder anzeigen, damit er die gewünschten optionen aussuchen kann ... oder auch nicht.
    dann prüfst du, was er gesendet hat, und suchst danach ...

    PHP-Code:
    $sql =  "SELECT * FROM user_data WHERE (stadt LIKE '%".$_POST["stadt"]."%' OR plz LIKE '%".$_POST["plz"]."%') AND alter >= ".$_POST["min_alter"]." AND alter <= ".$_POST["max_alter"]." ORDER by nickname" 
    ...

    du könntest deine angaben mal konkretisieren, denn diese antwort hättest du dir auch selbst geben können ...
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Re: Re: Suchparameter .....an select aber wie ?

      Original geschrieben von derHund
      naja,



      zuersteinmal mußt du dem user ein paar input-felder anzeigen, damit er die gewünschten optionen aussuchen kann ... oder auch nicht.
      dann prüfst du, was er gesendet hat, und suchst danach ...

      PHP-Code:
      $sql =  "SELECT * FROM user_data WHERE (stadt LIKE '%".$_POST["stadt"]."%' OR plz LIKE '%".$_POST["plz"]."%') AND alter >= ".$_POST["min_alter"]." AND alter <= ".$_POST["max_alter"]." ORDER by nickname" 
      ...

      du könntest deine angaben mal konkretisieren, denn diese antwort hättest du dir auch selbst geben können ...
      okay :-) da hast du recht..... ich war schon so müde, dass ich nicht mal mehr ne anständige problembeschreibung auf die reihe bekommen habe ;-)

      und zur sache selbst :

      ich hab ja nen formular....is klar..der rest der seiten funktioneirt ja schon, nur die Usersuche nicht :-( .. sind 12 verschiedene optionen zwischen den mal wählen kann alter, sterzeiche, stadt, alter, geschlecht, status uswusw

      mir ist nur noch unklar, wie ich die nötigen selectwerte einfügen....
      das formular und die ausgabe habe ich schon.... funktioniert auch alles recht schön....... allerdings kann ich mir derzeit einfach nur alle einträgeauf ein mal ausgeben lassen :-(
      Coder never die, they just GOSUB without RETURN

      Mein System

      Kommentar


      • #4
        Re: Re: Re: Suchparameter .....an select aber wie ?

        mir ist nur noch unklar, wie ich die nötigen selectwerte einfügen....
        das formular und die ausgabe habe ich schon.... funktioniert auch alles recht schön....... allerdings kann ich mir derzeit einfach nur alle einträgeauf ein mal ausgeben lassen :-(
        poste doch mal bitte folgendes

        print_r ($_POST) bzw. print_r ($_GET) nach dem absenden des formulars
        und den dump (nur die struktur) deiner tabelle.

        du brauchst doch nur schauen, welche werte der user übergeben hat, und dir dein SELECT dementsprechend basteln ........

        was ich sogar noch bevorzugen würde wäre für jedes kriterium eine einzelne anfrage, so daß man dann auch nach relevanz sortieren kann.
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          ich hoffe, dass ich dich richtig verstandenhabe ;-)

          aber nutzen dir die angaen was, ist ja derzeit nur code drin, der auch funktioniert ...

          nach dem absenden des formulars erhalte ich :
          Array ( ) Array ( [PHPSESSID] => de66cf79a82992603db72bf1a08b1de0 [username] => olli [language] => de [searching] => true )

          PHP-Code:
          CREATE TABLE daten (
            
          id tinyint(4NOT NULL auto_increment,
            
          typ mediumtext NOT NULL,
            
          zodiac mediumtext NOT NULL,
            
          name mediumtext NOT NULL,
            
          vorname mediumtext NOT NULL,
            
          first_name mediumtext NOT NULL,
            
          large mediumtext NOT NULL,
            
          haircolor mediumtext NOT NULL,
            
          intention mediumtext NOT NULL,
            
          search tinytext NOT NULL,
            
          zipcode mediumint(9NOT NULL default '0',
            
          city mediumtext NOT NULL,
            
          ort mediumtext NOT NULL,
            
          state mediumtext NOT NULL,
            
          gebdatum mediumtext NOT NULL,
            
          birth mediumtext NOT NULL,
            
          telefon mediumtext NOT NULL,
            
          phone mediumtext NOT NULL,
            
          mail mediumtext NOT NULL,
            
          beschreibung text NOT NULL,
            
          description text NOT NULL,
            
          handy mediumtext NOT NULL,
            
          bild mediumtext NOT NULL,
            
          picture mediumtext NOT NULL,
            
          user mediumtext NOT NULL,
            
          pass mediumtext NOT NULL,
            
          online tinyint(2NOT NULL default '2',
            
          logged_time mediumtext NOT NULL,
            
          activate tinyint(4NOT NULL default '0',
            
          PRIMARY KEY  (id)
          TYPE=MyISAM
          Coder never die, they just GOSUB without RETURN

          Mein System

          Kommentar


          • #6
            naja,

            lustige tabellen struktur haste ... was ist der unterschied zwischen city und ort? warum alles als mediumtext, birth ... warum unterschiedliche felder für verschiedene sprachen?

            vor dem print_r immer nen <pre>, die ausgabe sieht nicht unbedingt nach ner suchanfrage aus, außer das searching = true ...

            du mußt doch nur folgendes machen:

            PHP-Code:
            $sql "SELECT * FROM daten WHERE 1";
            if (
            $_POST["stadt"] != ""
              
            $sql .= "AND city = '".$_POST["city"]."' ";
            if (
            $_POST["plz"] != ""
              
            $sql .= "AND plz = '".$_POST["plz"]."' ";
            etcpp 
            bzw. würde ich die daten vorher checken und meine suchabfrage würde dann anders aussehen, aber prinzipiell ....
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              Original geschrieben von derHund
              naja,

              lustige tabellen struktur haste ... was ist der unterschied zwischen city und ort? warum alles als mediumtext, birth ... warum unterschiedliche felder für verschiedene sprachen?

              vor dem print_r immer nen <pre>, die ausgabe sieht nicht unbedingt nach ner suchanfrage aus, außer das searching = true ...
              he,he..ja stimmt...... ich war grad dabei, alle spalten auf english umzustellen, ..in englisch ist es besser......
              meine seite mach ich mit multilanguage......daher find ich die zeilen un spalten namen in internationaler sprache treffender.......

              und zu deinem code...... im ansatz versteh ich ja was du mir sagen willst,
              aber was passiert wenn ich alleuser einer ebstimmten stadt anzeige..
              dann ist das AND doch falsch oder ?

              ich hock jetzt scho 3 tage an dem script.... und komm keinen schritt weiter *heul*
              Zuletzt geändert von ways; 18.12.2003, 14:05.
              Coder never die, they just GOSUB without RETURN

              Mein System

              Kommentar


              • #8
                nee,

                aber was passiert wenn ich alleuser einer ebstimmten stadt anzeige. dann ist das AND doch falsch oder ?
                mal angenommen, ich gebe in deinem form als plz 061 an, weil ich alle chicks aus meiner stadt haben will .... also noch nen radio für gender ...
                dann steht im $_POST:
                zip = 061
                gender = f

                die anderen 20 felder sind leer (ich teste mal nur auf isset ...)

                PHP-Code:
                    $sql "SELECT * FROM wie_war_der_name_doch_gleich WHERE 1 ";
                  if (isset(
                $_POST["nick"]) 
                    
                $sql .= "AND nick = '".$_POST["nick"]."' ";
                  if (isset(
                $_POST["zip"]) 
                    
                $sql .= "AND zip LIKE '".$_POST["zip"]."%' ";
                  if (isset(
                $_POST["gender"]) 
                    
                $sql .= "AND gender = '".$_POST["gender"]."' ";
                  if (isset(
                $_POST["für alle anderen bedingungen"]) 
                    
                $sql .= "AND ...= '".$_POST["..."]."' ";
                  if (isset(
                $_POST["am besten in einer schleife"]) 
                    
                $sql .= "AND ... = '".$_POST["..."]."' ";
                  if (isset(
                $_POST["spart tipparbeit"]) 
                    
                $sql .= "AND ... = '".$_POST["..."]."' "
                das generierte statement enthält dann nur die WHEREs, für die auch ein wert übergeben wurde.
                Die Zeit hat ihre Kinder längst gefressen

                Kommentar


                • #9
                  Original geschrieben von derHund
                  nee,

                  mal angenommen, ich gebe in deinem form als plz 061 an, weil ich alle chicks aus meiner stadt haben will .... also noch nen radio für gender ...
                  dann steht im $_POST:
                  zip = 061
                  gender = f

                  die anderen 20 felder sind leer (ich teste mal nur auf isset ...)

                  das generierte statement enthält dann nur die WHEREs, für die auch ein wert übergeben wurde.
                  okay...... diesen ansatz kann ich schon mal lesen.... und denke es auch anwenden z ukönnen.. aber was mach ich in dem fall WHERE alter von bis ?

                  oderr plz von bis ?
                  Coder never die, they just GOSUB without RETURN

                  Mein System

                  Kommentar


                  • #10
                    überprüfen ob 2 Inputfelder voll sind
                    dann >= Alter1 and <=Alter2
                    wenn nur 1 Inputfeld ausgefühlt erlauben wir nur das von Alter feld1
                    und die SQL macht ein like = feld1

                    War das jetzt das Problem?
                    [color=blue]MfG Payne_of_Death[/color]

                    [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
                    [color=red]Merke:[/color]
                    [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

                    Murphy`s Importanst LAWS
                    Jede Lösung bringt nur neue Probleme
                    Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
                    In jedem kleinen Problem steckt ein großes, das gern raus moechte.

                    Kommentar


                    • #11
                      Original geschrieben von Payne_of_Death
                      überprüfen ob 2 Inputfelder voll sind
                      dann >= Alter1 and <=Alter2
                      oder
                      Code:
                      WHERE alter BETWEEN alter_von AND alter_bis
                      nehmen.
                      wenn nur 1 Inputfeld ausgefühlt erlauben wir nur das von Alter feld1
                      und die SQL macht ein like = feld1
                      das finde ich ungünstig.

                      wenn ich als user nur das feld "alter von" ausfülle, erwarte ich, dass mir nicht nur die "chicks" mit exakt diesem alter angezeigt werden, sondern alle die so alt oder älter sind, andersherum analog.

                      also, wenn "alter von" ausgefüllt ist, WHERE alter >= alter_von, wenn "alter bis" ausgefüllt ist, WHERE alter <= alter_bis.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        so,

                        man könnte ja ne select-box hinzufügen, die mir die wahl zwischen 'ungefähr so alt', 'nicht älter als', 'nicht jünger als'' etc. läßt

                        oder altergruppen in der select, auch mit multiple
                        oder ...

                        ich schweife ab
                        Zuletzt geändert von derHund; 18.12.2003, 18:36.
                        Die Zeit hat ihre Kinder längst gefressen

                        Kommentar


                        • #13
                          schön, wenn man scho soweit ist, dann man abschweifen kann ! ;-)

                          ich hatte es bisher so
                          PHP-Code:

                          $strSQL   
                          "SELECT user, typ, birth, state, bild, online FROM $table WHERE "
                          $blnAND false
                            if (isset(
                          $typ))   #    abfrage zum Geschlecht
                             

                             if(
                          blnAND$strSQL .= "AND "
                             
                          $strSQL   .= "typ = '".$typ."' "
                             
                          $blnAND true
                             }
                             if (isset(
                          $state))   #    abfrage zum Bundesland
                             

                             if(
                          blnAND$strSQL .= "AND "
                             
                          $strSQL   .= "state = '".$state."' "
                             
                          $blnAND true
                             } 
                          habs so probiert, aber dann kommt nen fehler, der wohl in zeile 5 ist
                          mach ich statt (blnAND) das ganze so ! blnAND)
                          kann ich wenigstes testen... aber dann muß ich natülrich beide optionen angeben... aber dann ists ja nicht mehr optional ;-)
                          Coder never die, they just GOSUB without RETURN

                          Mein System

                          Kommentar


                          • #14
                            Original geschrieben von wahsaga
                            oder
                            Code:
                            WHERE alter BETWEEN alter_von AND alter_bis
                            nehmen.

                            das finde ich ungünstig.

                            wenn ich als user nur das feld "alter von" ausfülle, erwarte ich, dass mir nicht nur die "chicks" mit exakt diesem alter angezeigt werden, sondern alle die so alt oder älter sind, andersherum analog.

                            also, wenn "alter von" ausgefüllt ist, WHERE alter >= alter_von, wenn "alter bis" ausgefüllt ist, WHERE alter <= alter_bis.
                            ich dachte bisher vorgesorgt zu haben, in dem ich bei "alter_bis" gleich den wert 99 gesetzt ( unter egal angabe)
                            Coder never die, they just GOSUB without RETURN

                            Mein System

                            Kommentar


                            • #15
                              Original geschrieben von ways
                              ich dachte bisher vorgesorgt zu haben, in dem ich bei ""alter_von den wert 1 und "alter_bis" gleich den wert 99 gesetzt
                              der wert ist hinter der angabe egal im auswahlmenü

                              mach mir allerdings auch noch grad den kopf, wie ich das mit der alterssache überhaupt mache ?

                              anmeldung -> gebdate wird in xx.xx.xxxx gespeichert
                              Profilansicht -> alter aus gebdatum errechnen ( kann ich )

                              suchmaske -> alter von, alter bis werden in XX angeben
                              was tun ?..... aktuelle datum minus alter_von und alter_bis umrechnen lassen in xx.xx.xxxx ? und so an sqlanfrage schicken ?
                              werden xx.xx.xxxx auch verglichen wie beim timestamp 123456789 ?
                              Coder never die, they just GOSUB without RETURN

                              Mein System

                              Kommentar

                              Lädt...
                              X