Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] mit einer CHECKBOX feld nach mehreren wörtern durchsuchen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] mit einer CHECKBOX feld nach mehreren wörtern durchsuchen

    Hi,
    gut ^^
    mithilfe der checkboxen markiere ich wonach gesucht werden soll z.b. nach dir oder techn. die checkbox "fo" muss aber nach zwei wörtern suchen, die wären fo oder rez.
    da ich in die value ja nicht einen wert wie "%fo% oder %rez%" eingeben kann muss eine andere lösung her...
    PHP-Code:
    <input type="checkbox" name="depart1" value="Dir"  />Dir
    <input type="checkbox" name="depart1" value="techn"  />Tec
    <input type="checkbox" name="depart1" value="fo"  />Rez
    <input type="checkbox" name="depart1" value="bla"  />bla 
    ich bräuchte also so etwas:
    if ($depart1=='fo')
    {
    $depart1='%fo%' or '%rez%';} entweder fo oder rez
    else $depart1='*' <-- also das was angeklickt wurde z.b. dir oder dir und bla oder ...
    ...


    danke der hilfe

  • #2
    Da Du die Schlüssel wegen Manipulierbarkeit ohnehin nicht direkt im LIKE einsetzen solltest, böte sich sowas an:

    PHP-Code:
    $lookup = array (
      
    'Dir'   => '%Dir%' ,
      
    'techn' => '%techn%' ,
      
    'fo'    => array ('%rez%','%fo%')
      );

    ... 
    'WHERE abc LIKE "' implode ('" OR abc LIKE "' , (array) $lookup[$_POST['depart1']]) . '"'

    Kommentar


    • #3
      ach das geht? für fo einfach ein array erzeugen=?

      sieht gut aus werd ich gleich mal probieren

      Kommentar


      • #4
        Ist ja nicht erzeugt. Sondern ein Setting.

        Kommentar


        • #5
          mhh. will leider trotzdem noch nicht.
          die abfrage für dir,tech funktioniert. für die checkbox fo bringt er mir aber keine ergebnisse und auch keinen fehler :/ einfach eine leere tabelle

          PHP-Code:
          $lookup = array (
            
          'Dir'   => '%Dir%' ,
            
          'techn' => '%techn%' ,
              
          'EDV' => '%EDV%',
            
          'fo'    => array ('%rez%','%fo%') <-- daran liegt es ;-))
            );
          $sql "select......
            where t_kunden.f_kdname like '" 
          $sqlKunde "'              
                       and t_kunden.f_telefon like '" 
          $sqlPhone "' 
                       and zz_kette.f_value like '" 
          $sqlKette "'

                                  
           and t_kdansparts.f_depart like '" 
          implode ('" OR t_kdansparts.f_depart LIKE "' , (array) $lookup[$_POST['depart1']]) . "'
             order by 
          $sqlSort ";
          ?> 
          haste ne idee woran das liegen könnte?

          Kommentar


          • #6
            mysql_error () und var_dump ($sql) mal eingebaut?

            Kommentar


            • #7
              ja is drin... fehler == 0;
              bei anderen checkboxen stehen jede menge strings drin.. was macht vardump?
              PHP-Code:
              string(1423"select t_kunden.*, t_servicev.*, t_kdansp,....... 

              Kommentar


              • #8
                Die Query ausgeben. Poste mal das Ergebnis hier.

                Kommentar


                • #9
                  ich bezweifel das du da durchsteigst. geschweige den das du die zeit hast )
                  nochmal kurz: wähle ich "dir" gehts und ich bekomm das query auch ausgespuckt siehe unten.
                  weähle ich die checkbox "fo" gehts nicht. vardump spuckt mir hier rein gar nix aus

                  mal abgesehen davon dass ich es hinbekommen muss z.b. die checkbox dir und die tech auszwuählen und beides angezeigt zu bekommen *gg

                  PHP-Code:
                  string(1424"select t_kunden.*, t_servicev.*, t_kdansparts.*, zz_kette.f_value as f_hotelkette, zz_reseller.f_value as f_reseller, zz_inbetriebnahme.f_value as f_inbetriebnahme from t_kunden left outer join t_servicev on t_servicev.f_refkunde = t_kunden.f_idkunde left outer join t_kdansparts on t_kdansparts.f_refkunde = t_kunden.f_idkunde left outer join t_customer_datafields zz_kette on zz_kette.f_idkunde = t_kunden.f_idkunde and zz_kette.f_label = 'Hotelkette' left outer join t_customer_datafields zz_reseller on zz_reseller.f_idkunde = t_kunden.f_idkunde and zz_reseller.f_label = 'Verkäufer (Firma):' left outer join t_customer_datafields zz_inbetriebnahme on zz_inbetriebnahme.f_idkunde = t_kunden.f_idkunde and zz_inbetriebnahme.f_label = 'Datum Inbetriebnmahme:' where t_kunden.f_kdname like '%%' and t_kunden.f_telefon like '%%' and zz_kette.f_value like 'NH' and t_kdansparts.f_depart like '%Dir%' order by t_kunden.f_kdname ASC " string(1424"select t_kunden.*, t_servicev.*, t_kdansparts.*, zz_kette.f_value as f_hotelkette, zz_reseller.f_value as f_reseller, zz_inbetriebnahme.f_value as f_inbetriebnahme from t_kunden left outer join t_servicev on t_servicev.f_refkunde = t_kunden.f_idkunde left outer join t_kdansparts on t_kdansparts.f_refkunde = t_kunden.f_idkunde left outer join t_customer_datafields zz_kette on zz_kette.f_idkunde = t_kunden.f_idkunde and zz_kette.f_label = 'Hotelkette' left outer join t_customer_datafields zz_reseller on zz_reseller.f_idkunde = t_kunden.f_idkunde and zz_reseller.f_label = 'Verkäufer (Firma):' left outer join t_customer_datafields zz_inbetriebnahme on zz_inbetriebnahme.f_idkunde = t_kunden.f_idkunde and zz_inbetriebnahme.f_label = 'Datum Inbetriebnmahme:' where t_kunden.f_kdname like '%%' and t_kunden.f_telefon like '%%' and zz_kette.f_value like 'NH' and t_kdansparts.f_depart like '%Dir%' order by t_kunden.f_kdname ASC " string(1424"select t_kunden.*, t_servicev.*, t_kdansparts.*, zz_kette.f_value as f_hotelkette, zz_reseller.f_value as f_reseller, zz_inbetriebnahme.f_value as f_inbetriebnahme from t_kunden left outer join t_servicev on t_servicev.f_refkunde = t_kunden.f_idkunde left outer join t_kdansparts on t_kdansparts.f_refkunde = t_kunden.f_idkunde left outer join t_customer_datafields zz_kette on zz_kette.f_idkunde = t_kunden.f_idkunde and zz_kette.f_label = 'Hotelkette' left outer join t_customer_datafields zz_reseller on zz_reseller.f_idkunde = t_kunden.f_idkunde and zz_reseller.f_label = 'Verkäufer (Firma):' left outer join t_customer_datafields zz_inbetriebnahme on zz_inbetriebnahme.f_idkunde = t_kunden.f_idkunde and zz_inbetriebnahme.f_label = 'Datum Inbetriebnmahme:' where t_kunden.f_kdname like '%%' and t_kunden.f_telefon like '%%' and zz_kette.f_value like 'NH' and t_kdansparts.f_depart like '%Dir%' order by t_kunden.f_kdname ASC " string(1424"select t_kunden.*, t_servicev.*, t_kdansparts.*, zz_kette.f_value as f_hotelkette, zz_reseller.f_value as f_reseller, zz_inbetriebnahme.f_value as f_inbetriebnahme from t_kunden left outer join t_servicev on t_servicev.f_refkunde = t_kunden.f_idkunde left outer join t_kdansparts on t_kdansparts.f_refkunde = t_kunden.f_idkunde left outer join t_customer_datafields zz_kette on zz_kette.f_idkunde = t_kunden.f_idkunde and zz_kette.f_label = 'Hotelkette' left outer join t_customer_datafields zz_reseller on zz_reseller.f_idkunde = t_kunden.f_idkunde and zz_reseller.f_label = 'Verkäufer (Firma):' left outer join t_customer_datafields zz_inbetriebnahme on zz_inbetriebnahme.f_idkunde = t_kunden.f_idkunde and zz_inbetriebnahme.f_label = 'Datum Inbetriebnmahme:' where t_kunden.f_kdname like '%%' and t_kunden.f_telefon like '%%' and zz_kette.f_value like 'NH' and t_kdansparts.f_depart like '%Dir%' order by t_kunden.f_kdname ASC " 

                  Kommentar


                  • #10
                    ich bezweifel das du da durchsteigst
                    Dann solltest Du Dir angewöhnen
                    - hier im Board ausreichende Infos zu posten (DB Dumps/Strukturen)
                    - Dein SQL zu formatieren
                    mal abgesehen davon dass ich es hinbekommen muss z.b. die checkbox dir und die tech auszwuählen und beides angezeigt zu bekommen
                    Die Logik mußt Du schon selbst umsetzen. Keine Ahnung, ob das jetzt AND oder OR verknüpft wird, ob die Bedingung ins ON oder ins WHERE kommt. Das weißt nur Du. Mein Codebeispiel war nur ein grundlegendes Prinzip.

                    weähle ich die checkbox "fo" gehts nicht.
                    Von fo und gez sehe ich leider im obigen Dump nix.
                    vardump spuckt mir hier rein gar nix aus
                    Wenn ein var_dump der Query nichts ausspuckt, dann hast Du einen Syntaxfehler. Und seis NULL, var_dump spuckt immer etwas aus. Korrekt bleiben.


                    [edit]
                    Ähm sorry, Du mußt die Formularfelder natürlich als Array abbilden, wenn sie einen gemeinsamen Namen haben. Warum sie das aber haben weiß auch nur Du.

                    Kommentar


                    • #11
                      ausreichend infos gewöhn ich mir mal an.. die sql synthax schrieb ich nicht um is ja nich mein script deswegen hab ich auch so probleme mich reinzudenken.. das ganze neu zu schreiben würde mir zu lange dauern

                      wenn also var dump immer was ausspcutk müsste sich hier ein synthax fehelr verbergen:
                      PHP-Code:
                      and t_kdansparts.f_depart like '" . $sqldepart . "' OR '" . $sqldepart2 . "' 
                      findest du ihn? )

                      Kommentar


                      • #12
                        mh das mit den checkboxen mach ich morgen muss das nochmal überdenken...

                        Kommentar


                        • #13
                          Kurz:
                          Form : var_dump ($_POST) im Zielscript:

                          Fall 1/
                          Code:
                          <input type="checkbox" name="depart1" value="Dir"  />Dir
                          <input type="checkbox" name="depart1" value="techn"  />Tec
                          beide angekreuzt:
                          gibt nur depart1 => techn aus

                          Fall 2/
                          Code:
                          <input type="checkbox" name="depart1" value="Dir"  />Dir
                          <input type="checkbox" name="depart2" value="techn"  />Tec
                          beide angekreuzt:
                          depart1 => Dir
                          depart2 => techn


                          Fall 3/
                          Code:
                          <input type="checkbox" name="depart1[]" value="Dir"  />Dir
                          <input type="checkbox" name="depart1[]" value="techn"  />Tec
                          beide angekreuzt:
                          depart1 => array (0 => Dir , 1 => techn)

                          Kommentar


                          • #14
                            mh die mühe hättest dir nich machen brauchen, hab das schon hinbekommen
                            trotzdem danke... )

                            ein problem wäre noch..
                            markiere ich die checkbox "dir" zeigt er mir alle datensätze wo im feld f_depart "dir" drin vorkommt.
                            sinn von den checkboxen ist es alle datensätze anzuzeigen wo entweder "dir" oder "techn" drin vorkommt. markiere ich beide bekomm ich aber nur die datensätze in denen dir und techn vorkommt - nicht oder.
                            hab dir mal ein bild angefügt damit du weißt was ich meine.

                            ich habe in der query bereits versucht das and durch or zu ersetzen. dann aber zeigt er mir wieder alle datensätze, egal was in dem feld steht.
                            hier das bild: siehe "Abteilung" müsstest verstehn was ich mein )

                            irgendein ansatz parat?

                            Kommentar


                            • #15
                              Das Bild sagt gar nix. Das hättest Du Dir sparen können.

                              Klar - OR heißt ja auch Datensätze wo ... und Datensätze wo ...

                              Kommentar

                              Lädt...
                              X