wie bekomme ich ein "AND/OR" hinzu?

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

  • wie bekomme ich ein "AND/OR" hinzu?

    Bitte mal um hilfe:

    im mom sieht es so aus bzw der fehler liegt hier:
    PHP-Code:
    echo "$where 
    "

    // das gibt mir aus: WHERE (left(suche.ort,1) = 's' ) // was ja richtig ist

    dann:
    if (
    $_POST['kat'] && count($_POST['kat'])>0){
    foreach(
    $_POST['kat'] as $v) {
    $abc[] = 'checkbox'.$v.' = 1'; }
    $where .= implode(' AND '$abc);}

    hier der fehler:
    echo 
    $where ;
    //ausgabe: 
    WHERE (left(suche.ort,1) = 's' )checkbox1 AND checkbox2 
    wie krieg ich nun das fehlende AND da rein??
    cu
    Gwolf


    Gwolf learning by doing

  • #2
    PHP-Code:
    if (is_array($_POST['kat']) && count($_POST['kat'])>0){
      foreach(
    $_POST['kat'] as $v) {
        
    $where .= ' AND checkbox'.$v.' = 1'
      }

    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      danke
      wunderbar...
      cu
      Gwolf learning by doing

      Kommentar


      • #4
        erst AND dann OR - Problem?

        Hallo,
        ich möchte bei einer Abfrage erst mit AND dann mit OR abfragen,
        es sollen aber irgendwie das 1. AND immer Vorrang haben -

        anders ausgedrückt:
        d.h. Ortsabfrage AND Checkboxen und
        Ortsabfrage AND CHeckbox1 OR
        Ortsabfrage AND Checkbox2 usw...


        PHP-Code:
        $where "WHERE (left(suche.ort,$zif) = '".$_REQUEST['eingabe']."' )" ;
        if (
        is_array($_POST['kat']) && count($_POST['kat'])>0){
             foreach(
        $_POST['kat'] as $v) {
             
        $where .= ' AND checkbox'.$v.' = "1"';   }

             foreach(
        $_POST['kat'] as $v) {
             
        $where .= 'OR (checkbox'.$v.' = "1")';   }
             }

        $kdabfrage "SELECT suche.kdnr FROM suche 
        INNER JOIN kategorie ON (kategorie.kdnr = suche.kdnr) 
        $where ";
        $kdergebnis mysql_query($kdabfrage);
           if (
        mysql_num_rows($kdergebnis) < 1)
               {require(
        'includes/meldung3.php'); }
           else    {
               while(
        $row mysql_fetch_object($kdergebnis))
               {   include(
        "kundeninc/".$row->kdnr.".inc");    }} 
        das klappt soweit, dass alle checkboxen abgefragt werden und nur
        die Datensätze ausgegeben werden, wo alles zutrifft,
        nur die OR-Abfrage berücksichtigt die Orts-suche nicht

        wie kann ich das machen?


        cu
        Gwolf, learning by doing


        zusatz-frage:
        wi ekann ich sortieren, dass erst alle AND-ERgebnisse, dann alle OR-Ergebnisse ausgegeben werden?
        Zuletzt geändert von Gwolf; 22.01.2005, 16:00.

        Kommentar


        • #5
          es sollen aber irgendwie das 1. AND immer Vorrang haben -
          ganz normal mit klammern, wie du es von PHP gewöhnt bist.

          es ist nicht nötig für alles nen neuen thread aufzumachen.

          Kommentar


          • #6
            okay, mit dem neuen thread - aber da die , die das alte gelesen haben
            evtl kein interesse oder keine antwort haben - habe ich eben das neue prob neu geschildert..

            aber:
            logo mit klammer -
            aber wie? wie krieg ich das in den code? also in die schleife?

            cu
            Gwolf

            Kommentar


            • #7
              das wäre dann ein PHP-Problem?

              Wie würdest du es machen, was klappt nicht?

              Kommentar


              • #8
                hallo TobiaZ,
                muss mal meine tabellen checken -
                aber mal eine grundsätzliche frage:
                macht es einen großen unterschied ob ich eine breite tabelle mache
                mit 100 spalten oder diese in 9 tabellen aufteile à 7 bis 40 spalten?

                bei zweitem beispiel muss ich ja mit inner join ...
                was ist effektiver?
                bei ca 1000 datensätzen mal als beispiel, die durchsucht werden müssen...

                cu
                Gwolf

                Kommentar


                • #9
                  beides wahrscheinlich totaler schwachsinn.

                  was möchtest du bitte in 100 Spalten reinschreiben?

                  wenn du alle hundert braucst, dann natürlich eine tabelle,
                  wenn du nicht alle auf einmal brauchst, dann wahrscheinlich mehrere tabellen.

                  letzendlich machst du dir aber mal gedanken über das grundlayout, und ob du das ganze auch deine Kunden zutrauen kannst.

                  Kommentar


                  • #10
                    und wieso? gibts dazu auch eine erklärung?
                    oder besser einen Tipp vom Profi, wie dann machen?

                    Kommentar


                    • #11
                      1,2,3 Normalform beachten i.d.R.......

                      Mysql sollte träge bei einer Menge von Attributen als auch sehr vielen Tabellen werden.....

                      Abgesehen davon spielt z.B. eine Rolle wenn ich 3 Zimmer habe die ich dann 3 unterschiedlichen Leuten vermiete aber häufig die Mieter wechsele...Und ich auch neue Immobilien laufend erwerbe....

                      dann wäre beim Löschen eines Vermieters meine Immobilie bzw. das Mietobjekt weg......

                      mieter 1 zimmer 1
                      mieter 3 zimmer 2
                      mieter 2 zimmer 3

                      mal davon abgesehen das man so nicht mehr wissen würde welcher Mieter das letzte Mal Zimmer 2 gehabt hat......

                      Weiterhin spielt eine Rolle wie Tables designed werden......

                      Bzw. manchmal benötige ein Haufen Attribute nicht aber hab es trotzdem in einer Table, z.B. viele umfangreiche Textfelder.....

                      Daher kann man sagen nicht immer kann man in der Realität alle Normalformen beachten, denn hier spielen wirtschaftliche Faktoren eine große Rolle.....
                      [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


                      • #12
                        meine erklärung:
                        was möchtest du bitte in 100 Spalten reinschreiben?

                        Kommentar


                        • #13
                          okay, kam irgendwie nur der erste satz bei mir an?

                          das grundlayout ist klar, und was ich brauche ist abhängig welche felder der user anklickt - er kann mal eine checkboxgruppe leer lassen, mal 4 oder 20 anklicken,

                          in der hauptsache gehts um checkboxen, also sind die db-felder klein, dachet an enum, vorgabe 0, wenn geklickt ist 1..

                          ist das falsch?

                          zuerst soll in einer plz/ort tabelle gecheckt werden ob PLZ gibt, wenn ja, dann ob kdnr(n) zu der PLZ vorhanden, wenn ja, was ist angeklickt, und daraus werden dann entsprechende datensätze includiert...

                          quasi so ein vermietungsportal
                          cu Gwolf

                          Kommentar


                          • #14
                            somit hatte ich recht.

                            du brauchst sicher nicht für jede checkbox ein eigenes feld...

                            Kommentar


                            • #15
                              kann es sein das du überhaupt keine einträge für die Checkboxen benötigst und es sich nur ein Formularhandling handelt ?
                              [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

                              Lädt...
                              X