Ankündigung

Einklappen
Keine Ankündigung bisher.

in where-klausel like und AND kombinieren, geht das nicht ?

Einklappen

Neue Werbung 2019

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

  • in where-klausel like und AND kombinieren, geht das nicht ?

    Hi Leute

    hab da nen kleines Problem... ich hab mir ne suche erstellt, in der man nach artikeln suchen kann...
    ich hab aber auch artikel in der DB die deaktiviert sind.
    um die bei der suchabfrage nicht miteinzubeziehen hab ich einfach
    das active=1 in die where-klausel geschrieben :
    WHERE active='1' AND name LIKE '%$suchbegriff%'

    jedoch wird das ignoriert und es werden auch artikelt mit active=2 angezeigt...

    kann man da nicht kombinieren ? und wenn nicht, wie muss ich das umgehen ?

  • #2
    Doch das geht, der Syntax deines Querys hier im Board ist soweit korrekt, der Fehler muss wo anders in dem Script liegen. Poste es hier oder such den Fehler selber, in dem du Schritt für Schritt die Variablen auf ihren Inhalt hin überprüfst.

    Kommentar


    • #3
      ich find den fehler nicht

      hier meine kompletetr query :

      PHP-Code:
      <?php
      $sql_products
      =mysql_query("SELECT * FROM $language WHERE name LIKE '%$suchbegriff%' OR info LIKE '%$suchbegriff%' AND active=1 LIMIT $start,$resultsperPage"
      ?>
      und hier meine tabelle :
      CREATE TABLE `en` (
      `id` int(11) NOT NULL default '0',
      `text_id` int(11) NOT NULL default '0',
      `name` text NOT NULL,
      `info` text NOT NULL,
      `active` tinyint(4) NOT NULL default '1',
      PRIMARY KEY (`id`),
      FULLTEXT KEY `name` (`name`),
      FULLTEXT KEY `info` (`info`)
      ) TYPE=MyISAM;

      #
      # Daten für Tabelle `en`
      #

      INSERT INTO `en` VALUES (0, 1001, 'starter kit 1 en', 'starter kit 1 en description', 1);
      INSERT INTO `en` VALUES (1, 1002, 'starter kit 2 en', 'starter kit 2 en description', 2);
      INSERT INTO `en` VALUES (2, 1003, 'starter kit 3 en', 'starter kit 3 en description', 1);
      INSERT INTO `en` VALUES (3, 1004, 'starter kit 4', 'starter kit 4 en description', 1);

      Kommentar


      • #4
        Wende bitte mal folgende Funktion an, statt dem gewöhnlichen mysql_query().
        Das könnte klarheit verschaffen.

        PHP-Code:
        <?php
        function debug_query($query) {
                
        $result mysql_query($query);
                
        $error $result == false mysql_error() : '';
                echo 
        '

        <pre>' 
        htmlspecialchars($query) . '</pre></p>

        $error '</p>';
                
                return 
        $result;
            }

        ?>

        Kommentar


        • #5
          Klammern würden helfen.
          Der Ausrdruck wird von links nach rechts ausgewertet. Deswegen würde dieser Part
          PHP-Code:
          info LIKE '%$suchbegriff%' AND active=
          ausgewertet und dann mit diesem
          PHP-Code:
          name LIKE '%$suchbegriff%' 
          ver"or"t.
          Also:

          PHP-Code:
          <?php
          "SELECT * FROM $language WHERE (name LIKE '%$suchbegriff%' OR info LIKE '%$suchbegriff%') AND active=1 LIMIT $start,$resultsperPage"
          ?>

          Kommentar


          • #6
            die Lösung war eine andere !

            das active=1 muss 2 mal eingesetzt werden ! wegen dem OR
            also jeweils nach : LIKE '%$suchbegriff%'

            dan funtz es !

            Kommentar


            • #7
              Zitat von ways2web
              die Lösung war eine andere !

              das active=1 muss 2 mal eingesetzt werden ! wegen dem OR
              also jeweils nach : LIKE '%$suchbegriff%'

              dan funtz es !
              Das mag eine andere Lösung sein, aber diejenige von MarkusHausB ist ebenso korrekt und erst noch eleganter (und wahrscheinlich schneller).
              Gruss
              L

              Kommentar


              • #8
                Zitat von ways2web
                die Lösung war eine andere !

                das active=1 muss 2 mal eingesetzt werden ! wegen dem OR
                also jeweils nach : LIKE '%$suchbegriff%'

                dan funtz es !
                lol

                Kommentar

                Lädt...
                X