artikel-suche , bloss wie ?

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

  • artikel-suche , bloss wie ?

    Guten abend ! ,

    ich wollte mir nachträglich eine artikelsuche in meine webseite einsetzem, aber weiß nicht so recht, wie und wo ich ansetzen muss und hoffe ihr könnt mir da tipps, threads oder codeschnipsel zur hilfe posten ..? hab erst vor 2 monaten mit php&mysql angefangen

    zum aufbau :
    ich hab ne tabelle mit 3 spalten
    id - headline - text

    wie schaffe ich es, die spalten headline und text nach einem wort zu durchsuche ? und falls das suchwort in headline und text mit der gleichen id vorkommt, nciht doppelt ausgegeben wird
    ..geht das vielleicht direkt mit einem sql SELECT ?
    aber doch nicht, wenn mehr als ein wort in der spalte steht oder ?

    für hilfe wäre ich sehr dankebar !

  • #2
    Probiers mal mit

    Code:
    SELECT * FROM tabelle MATCH (spalte1) AGAINST ('suchwort') OR
                          MATCH (spalte2) AGAINST ('suchwort') ...
    Vorher einen FULLTEXT-Index bei den entsprechenden Spalten anlegen.
    So hab ich das jedenfalls mal gemacht
    "...vielleicht stehe ich vor dir und du erkennst mich nicht. Spielt das eine Rolle? Wir sah'n ins gleiche Licht..."

    Kommentar


    • #3
      ich habe mal dein vorschlag umgesetzt :

      PHP-Code:

      $sql 
      mysql_query("SELECT * FROM $table MATCH (name) AGAINST ('$suchbegriff') OR MATCH (info) AGAINST ('$suchbegriff')  LIMIT $start,$resultsperPage"); 
      und versuche dann, das ergebnis in einer schleife auszugeben...
      jedoch sagt mir php dann :
      Supplied argument is not a valid MySQL result resource

      hab ich da was falsch gemacht ?

      Kommentar


      • #4
        Hm... mysql_error(); ?

        Und bitte Code einrücken


        Gruß

        Kommentar


        • #5
          hab das error so hinten an den query angefügt:

          or die ( "Konnte Datenbank nicht öffnen: ".mysql_error() );

          erhalte aber keine fehlermeldung !?

          Kommentar


          • #6
            Mach mal print_r($sql); bzw echo $sql;


            Danke dass du die 2. Zeile ignorierst...

            Kommentar


            • #7
              sorry, nicht ignoriert ! ich hab nicht gewußt, was du damit meinst : code einrücken....

              fortschritte mit der suche hab ich jedenfalls noch nicht machen können, ich hoffe, dass mir da noch wer helfen kann ???

              wäre echt klasse.

              muss eigentlich außer de passenden query auch noch was an der tabelle bzw. an den spalten eingestellt werden ?

              Kommentar


              • #8
                Weiss nicht, ob ich gerade was falsch verstehe (vllt. bin ich schon zu müde), aber du schreibst in deinem ersten post, deine Spalten heissen id, headline und text - fragst aber dann die Spalten name und info ab ??

                Abgesehen davon : Poste mal deine Schleife, vllt. liegt der Fehler ja dort.

                Kommentar


                • #9
                  sorry, die spaltennamen hab ich nachträglich umbenannt ! und die spalte active ist noch dazugekommen
                  active = 1 # artikel aktiv
                  active = 2 # artikel nicht aktiv

                  hab das problem aber gefunden..... es fehlten die zeichen '%$suchbegriff%' vor und nach $suchbegriff !!

                  aber jetzt tritt ein anderes problem auf... ich hab auch artikel 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 ?

                  Kommentar


                  • #10
                    Teste es mal ohne '

                    Also einfach nur WHERE active=1

                    Meines Wissens nach brauchst du die ' nur, wenn du eine Variable einsetzt.

                    Kommentar


                    • #11
                      gesagt, getan...aber leider mit dem gleichen ergebnis.

                      die active=1 option wird einfach ignoriert !???

                      Kommentar


                      • #12
                        Hmmm....poste doch bitte mal deine komplette Abfrage an die Datenbank.

                        Kommentar


                        • #13
                          na klar, kein Problem :

                          hier der query :
                          PHP-Code:
                          $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);


                          hilft das ?

                          Kommentar


                          • #14
                            Dein AND bezieht sich nur auf das, was nach OR kommt.

                            Das hier

                            info LIKE '%$suchbegriff%' AND active=1

                            gehört zusammen. Wenn du dein active auf beide Suchbegriffe beziehen willst, musst du es zweimal einfügen. Also so :

                            PHP-Code:
                            $sql_products=mysql_query("SELECT * FROM $language 
                            WHERE name LIKE '%
                            $suchbegriff%' AND active=1 
                            OR info LIKE '%
                            $suchbegriff%' AND active=1 
                            LIMIT 
                            $start,$resultsperPage"
                            Ob es dein Problem löst oder ob es andere Möglichkeiten gibt, weiss ich momentan nicht....würde ich mir dann morgen mal ansehen

                            Kommentar


                            • #15
                              jupp.........scheint so, als hat diese tip mein problem gelöst !

                              *verneig*

                              Kommentar

                              Lädt...
                              X