Ankündigung

Einklappen
Keine Ankündigung bisher.

beliebige einträge eines Arrays abfragen

Einklappen

Neue Werbung 2019

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

  • beliebige einträge eines Arrays abfragen

    folgendes konstrukt habe ich:

    erstens ein array wo beliebig viele einträge stehen können
    $words = array("hurga","blabla","huhuhu");

    und zweitens die mysql tabelle, in der ich abfragen will, ob in einem bestimmten feld eines dieser wörter vorkommt.

    $query="select uid,start_date,start_time,end_date,end_time,title, place from tx_calendar_item where title LIKE '%$words%' order by start_date";

    gibts da einen trick??, damit dass so funktioniert.

  • #2
    Zum einen ginge es mit "IN" also where title in("hurga", "blabla", "huhuhu"). Allerdings findet der natürlich keine Ähnlichkeiten der Wörter.
    Die 2te Möglichkeit wäre jedes Wort mit OR abzufragen: where title like "hurga" OR title like "blabla" ...

    Könntest den SQL-Befehl in einer Schleife zusammenbauen.
    Jede Lösung verändert das Problem.

    Kommentar


    • #3
      Die dritte Möglichkeit wäre die Implementierung einer Volltextsuche.

      Kommentar


      • #4
        werde mal die zu fuss lösung probieren,
        vielleicht könnt ihr mich syntaktisch ein bischen unterstützen.
        werd die ratte78 version versuchen, also auf gehts:


        for($x=0;$x<sizeof($hauer);$x++)
        {
        // hier bitte helfen bei der syntax
        $string += 'title LIKE %$hauer[$x]% ';

        // und hier damit das OR nicht zu oft vorkommt
        if($x < (sizeof($hauer) -1))
        $string += 'OR';
        }

        // und hier bei der syntax
        $query="select uid,start_date,start_time,end_date,end_time,title, place from tx_calendar_item where category=11 and $string order by start_date";

        danke für eure hilfe
        gruss
        rocco

        Kommentar


        • #5
          Bitte die code-Tags benutzen.

          Hier eine schönere Lösung:

          Code:
          $words = array("hurga","blabla","huhuhu");
          $wordCount = count($words);
          $orArray = array();
          for($i = 0; $i < $wordCount; $i++) {
              $orArray[] = "title LIKE %".$words[$i]."%";
          }
          $orString = implode(" OR ", $orArray);
          
          $query = "SELECT ... WHERE category = 11 AND ($orString)";
          Es ist unbedingt nötig, die ORs in Klammern zu setzen, weil ein AND Vorrang vor OR hat!

          Kommentar


          • #6
            super, vielen dank,

            in der einen zeile
            PHP-Code:
            <?php
                $orArray
            [] = "title LIKE '%".$hauer[$i]."%'";
            ?>
            hab ich noch die apostroph hinzugefügt und nun funktionierts tadellos, hab einiges dazugelernt, danke.

            Kommentar


            • #7
              Ups

              Kommentar

              Lädt...
              X