Array-Problem

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

  • #16
    Original geschrieben von Azadoras
    Ich habe auch mal ein paar Titel eingegeben, wo "das" mehrfach drin vorkommt, es scheint also zu langen das array_search da in der foreach-Schleife zu haben. Wüsste auch nich, wie ich das da jez in ne While-Schleife noch reinwursten sollte.
    glauber ich dir nicht, dass das geht.

    aber im manual zu array_search steht noch eine alternative:
    Code:
    If needle is found in haystack more than once, the first matching key is
     returned. To return the keys for all matching values, use array_keys() with
     the optional search_value parameter instead.

    EDIT:
    achso, geht doch, das array wird ja vergrößert - naja, eher unfreiwillig
    Zuletzt geändert von 3DMax; 10.11.2007, 14:31.

    Kommentar


    • #17
      Also ich habs jez nochmals getestet, das funktioniert schon so.

      Allerdings habe ich ein anderes Problem nun noch.

      Ich habe z.B. den Beitrag "Das Dorf".

      Gibt man bei Suche ein: "Das Dorf" oder "klmsdjasbäüdknmasbödnkbas Dorf", dann findet er den Eintrag.

      Gibt man lustigerweise aber ein "Dorf". Dann findet er nix. :>

      Ich kapier ehrlichgesagt nicht warum das so ist.

      Hiernochmal der komplette Code:

      PHP-Code:
      $forbidden = array('ich''du''er''sie''es''wir''ihr''sie''der''die''das''eine''ein''einer');
             
      $suchbegriff strtolower($suchbegriff);

             
      $suche explode(" "$suchbegriff);



              foreach(
      $forbidden as $f)
                {
                 
      $key[] = array_search($f$suche);

                 foreach(
      $key as $key)
                    {
                     unset(
      $suche[$key]);
                    }
                }



             echo 
      "<center>";

             foreach(
      $suche as $such_element)
               {
               
      $such_element mysql_real_escape_string($such_element$sql);
               
      $query "SELECT title, id, fach, type FROM eintraege WHERE title LIKE '%$such_element%' AND state = '2'";

               echo 
      "<br>";
               
      $res mysql_query($query);
               
      $count mysql_num_rows($res);






               
      $found = array(" ");

               echo 
      "<font size=\"5pt\"><b>Suchergebnis:</b></font><br><br>";
               while(
      $row mysql_fetch_object($res))
                  {
                   
      $id $row->id;
                   
      $title $row->title;
                   if(!
      in_array("$title"$found))
                    {


                    echo 
      "<br><a href=\"index.php?site=Hausarbeiten&action=showentry&id=$id\">$title&nbsp;-&nbsp;[$row->fach$row->type]</a><br>";


                    
      $found[] = $title;
                    }
                  }

               } 

      Kommentar


      • #18
        Vergleich doch einfach mal die beiden Queries und lass nicht immer alles die anderen machen!

        Kommentar


        • #19
          Was ich selber hinkriege, das mache ich ja auch selber. Aber es kommt ja nichtmals bis zum Query, und ich kapier nicht warum.

          Ich habe in die foreach-Schleife, in der das Query ist einfach mal echo 'bla'; geschrieben um zu schauen ob das überhaupt ausgeführt wird. Da tut sich garnix. :>

          Nach



          PHP-Code:
           foreach($key as $key)
                        {
                         unset(
          $suche[$key]);
                        } 
          ist $suche leer, wenn in der Sucheingabe nur ein Wort vorhanden war. :>

          Mach ich davor print_r($suche); dann kommt sowas raus:
          Array ( [0] => dorf ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( ) Array ( )

          mach ichs hinterher kommt nur Array ( ) Array ( ) Array ( ) Array ( ).... :>

          Kommentar


          • #20
            warum gehst du nicht $suchbegriff durch und prüfst ob der wert in_array() $forbidden ist und löschst ihn dann raus? Das dürfte sauberer sein, als dein jetziger Code.

            Kommentar


            • #21
              Arg, bin ich doof. Jo, danke, ich prüfe jez einfach vor dem rauslöschen aus dem array, ob überhaupt eines der forbidden-Wörter in dem Array drin ist und lass es nur dann löschen.

              Das funktioniert.

              Sorry, ich bin noch nich ganz so erfahren im Coden, daher hab ich gelegentlich mal ein Brett vorm Kopf und komm nicht auf sowas.

              Danke dir für die Hilfe!

              Kommentar


              • #22
                OffTopic:
                Nicht, wenn man Soll- und Ist-Zustand regelmäßig prüft.

                Kommentar

                Lädt...
                X