ilch Forum » Ilch Clan 1.1 » Module und Modifikationen » Suche in allen Bereichen

Geschlossen
  1. #1
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Morgen lächeln
    Ich Arbeite gerade mal wieder an der Suchfunktion und würde gerne machen das ich in alle Kategorien suchen kann wie es zb hier auf Ilch ist so kann man ja anklicken ob man in den Downloads, Faq und Forum suchen will und dann gibt er es einen ja untereinander aus.

    Ich habe die Suchfunktion zwar auf die Artikels und dem zweiten Forum erweitern können aber ich bekomm es nicht hin wie ich alles Verbinden kann sodass er wenn ich alles auswähle er im Forum, Downloads und Artikel sucht.

    Wenn ich zb einfach nur alle datenbank tabellen Verknüpfe dann mag vllt sein das er es mir ausgibt aber ja nicht wie hier auf ilch untereinander in den Kategorien.

    also
    Forum
    - Treffer
    - Treffer
    - etc..

    FAQ
    - Treffer
    - Treffer
    - etc...

    Downloads
    - Treffer
    - ...

    Kann man bzw muss man es anscheinend wohl irgendwie anders lösen?

    Grüße
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    387 Beitragspunkte
    In der Suche ist es bisher zwar mit einem UNION gelöst, aber es wäre in dem Fall sicher kein Problem, für alles eine eigene Abfrage zu machen, dann kannst du auch bessere Ergebnisse erzielen bzw. bessere Informationen.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    hm dh? Also bisher ist es Ja alles Einzeln aber ich würde gerne machen das man auch via checkbox Alles auswählen kann und man dann in Alle bereiche Suchen kann oder ich würde es wie Ilch hier machen das man es so anklickt und es dann Fett wird wenn Aktiv aber dies laeuft ja irgendwie via Javascript?

    also bisher ist es ja alles so in der .php
    1
    2
    $str_forum  = '';
    $str_forum_a = '';


    1
    2
    3
    4
    5
    }elseif($_GET['in'] == 7) {
     
        $str_forum .= "txt LIKE '%".$str."%' AND ";
     
    }


    1
    2
    3
    4
    5
    }elseif($_GET['in'] == 7) {
     
        $str_forum_a .= "c.erst LIKE '%".$autor."%' AND ";
     
    }


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    // 7 = forum
      if($_GET['in'] == 7) {
        $q = "SELECT DISTINCT a.fid as fid, a.name as titel, 'foru' as typ, a.id as id, `time`, c.erst as autor, c.erstid as autorid, c.txt as besch
     
             FROM prefix_posts c
             LEFT JOIN prefix_topics a ON a.id = c.tid
             LEFT JOIN prefix_forums b ON b.id = a.fid
             LEFT JOIN prefix_groupusers vg ON vg.uid = ".$_SESSION['authid']." AND vg.gid = b.view
             LEFT JOIN prefix_groupusers rg ON rg.uid = ".$_SESSION['authid']." AND rg.gid = b.reply
             LEFT JOIN prefix_groupusers sg ON sg.uid = ".$_SESSION['authid']." AND sg.gid = b.start
     
          WHERE (((b.view >= ".$_SESSION['authright']." AND b.view <= 0) OR
                (b.reply >= ".$_SESSION['authright']." AND b.reply <= 0) OR
                (b.start >= ".$_SESSION['authright']." AND b.start <= 0)) OR
                (vg.fid IS NOT NULL OR rg.fid IS NOT NULL OR sg.fid IS NOT NULL OR ".$_SESSION['authright']." = -9))
     
          AND (".$str_forum." 1 = 1)
          AND (".$str_forum_a." 1 = 1)
          GROUP BY a.id
          ORDER BY time DESC";
    }


    Dies mal so als bsp fürs Forum aber wie verknüpfe ich dies alles mit News, Artkile, Downloads, Forum das er mir dies so ausgibt wie hier bei Ilch zb.

    In der search.htm gibs ja nicht viel zu ändern der den inhalt des ergebnises von der php ausliest


    Zuletzt modifiziert von Siggi am 08.02.2013 - 10:22:40
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    387 Beitragspunkte
    Naja da ist ein elseif das ja sagt entweder oder für die Bedingungen die dazu gehören, ich an deiner Stelle würde nun für jedes eine eigene Abfrage schicken und entsprechend ausgeben.

    Alternativ kannst du die verschiedenen Abfrage mit einem SQL UNION zusammmenfassen, auf jeden Fall darf dafür in keinem Fall ein elseif benutzt werden.

    Wenn du mit PHP programmieren willst empfehle ich dir, dich mal mit den Kontrollstrukturen vertraut zu machen zwinker

    de2.php.net/manual/de/language.control-structures.php
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Ich kanns auch gern anders versuchen zu Programmieren nur bräuchte ich da wenigstens ein bsp um es zu verstehen oder wie ich es anfangen könnte weiteres koennte ich nach den Probieren dann ja immer noch fragen lächeln

    Aber ich sagmal wenn man fast garkeine ahnung hat weiß man auch nicht wie wo man anfangen soll lächeln
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Wie ist dies von Ilch den? Javascript oder?

    Das was ich ja oben gepostet habe ist das Standart Ilch script was ich ja erweitern möchte auf die ganze suche

    Mit Union wäre dies so? Jedoch gibt er da nur fehler aus da sucht er normal im Forum 1 und Forum 2



    Zuletzt modifiziert von Siggi am 13.02.2013 - 16:26:39
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    387 Beitragspunkte
    Hier ist die von ilch.de, wie du siehst sind das auch einzelne Abfragen und ohne Union.

    Noch als Hinweis, ilch.de arbeitet mit der Volltextsuche Funktion von MySQL MyISAM Tabellen, was dann erst für die jeweiligen Spalten "eingstellt" werden muss.

    Auch die $hmenu Belegung ist bei ilch.de anders, also da ggf. auch noch nachbessern.






    Zuletzt modifiziert von Mairu am 15.02.2013 - 08:24:06
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    1 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Hui lächeln

    Scheint vom Code her zu gehen aber dies passt mit meiner search.htm nicht nehm ich an und da eure Ja via Javascript ist? es erscheint zumindest wenn man mit maus drüber geht deswegen dachte ich dies.


    Zuletzt modifiziert von Siggi am 14.02.2013 - 11:05:57
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    387 Beitragspunkte
    Hab das Template mal mit in den obigen Post eingefügt.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Hoi

    musste die htm ein wenig ändern bzw zumindest ein type="hidden" einfügen ansonsten hat er überall die Felder angezeigt mit 1 aktiv und 0 inaktiv.


    Nun gibt er mir Fehler aus
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    MySQL Error:
    1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE (ic1_forums.view >= -9 OR ic1_forums.reply >= -9 OR ic1_forums.start >= -9' at line 1
    in Query:
     WHERE (ic1_forums.view >= -9 OR ic1_forums.reply >= -9 OR ic1_forums.start >= -9) AND ic1_posts.time > UNIX_TIMESTAMP(TIMESTAMPADD(YEAR, -1, NOW())) AND match(txt) against ('Axis' IN BOOLEAN MODE) GROUP BY ic1_topics.id ORDER BY match(txt) against ('Axis') DESC LIMIT 100
    Debug backtrace:
        @ mysql.php:32 -- debug_bt()
        @ mysql.php:50 -- db_check_error(...)
        @ search.php:263 -- db_query(...)
        @ search.php:349 -- search_forum(...)
        @ index.php:52 -- require_once(...)


    Da das ilch ja auch Standard ic1_forums etc hat sowie ich auch denk ich das es an der MyISAM liegt? aber die Tabellen sind doch alle MyISAM oder muss man die jeweilige spalte wie txt auch ändern irgendwie?
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    387 Beitragspunkte
    Wie gesagt, alle Spalten die mit match verwendet werden müssen als Volltext indiziert werden, das geht mit phpmyadmin eigentlich recht einfach.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Ja aber wie mach ich dies? Also die Tabelle ist MyISAM wie du oben sagtes und FULLTEXT suche lesen ich

    ALTER TABLE ic1_news ADD FULLTEXT (news_title) ? aber dabei passiert ja nix oder sieht man dies nur nicht? bzw ist es so falsch verstanden?
    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    Mikro Mitglied
    Registriert seit
    05.10.2011
    Beiträge
    237
    Beitragswertungen
    21 Beitragspunkte
    Ob FULLTEXT bei ic1_news gesetzt ist kannst du mit,
    SHOW KEYS FROM ic1_news
    auslesen, zeigt dir dann die spalten an wo was gesetzt ist und das geht auch mit INDEX und INDEXES.
    Wer Rechtschreibfehler findet darf sie behalten!
    0 Mitglieder finden den Beitrag gut.
  14. #14
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Ah lächeln

    Ist erledigt trotzdem gibt er mir noch Fehlermeldungen aus bzw die gleichen wie vorher zb. gibt es im Downloadbreich zu 100% ein Programm was TNG heißt aber finden tut er dies nicht.

    Im Forum habe ich nix geändert bzw wenn ich es richtig seh müsste ich dort auch nix ändern da es ganz normal auf das ilch forum zugreift.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    MySQL Error:
    1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE (ic1_forums.view >= -9 OR ic1_forums.reply >= -9 OR ic1_forums.start >= -9' at line 1
    in Query:
     WHERE (ic1_forums.view >= -9 OR ic1_forums.reply >= -9 OR ic1_forums.start >= -9) AND ic1_posts.time > UNIX_TIMESTAMP(TIMESTAMPADD(YEAR, -1, NOW())) AND match(txt) against ('TNG' IN BOOLEAN MODE) GROUP BY ic1_topics.id ORDER BY ic1_posts.time DESC LIMIT 100
    Debug backtrace:
        @ mysql.php:32 -- debug_bt()
        @ mysql.php:50 -- db_check_error(...)
        @ search.php:263 -- db_query(...)
        @ search.php:385 -- search_forum(...)
        @ index.php:52 -- require_once(...)
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE (ic1_forums.view >= -9 OR ic1_forums.reply >= -9 OR ic1_forums.start >= -9' at line 1


    Bei News auch folgendes
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    MySQL Error:
    1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY time DESC' at line 1
    in Query:
     ORDER BY time DESC
    Debug backtrace:
        @ mysql.php:32 -- debug_bt()
        @ mysql.php:50 -- db_check_error(...)
        @ search.php:215 -- db_query(...)
        @ search.php:412 -- search_news(...)
        @ index.php:52 -- require_once(...)
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY time DESC' at line 1
    0 Mitglieder finden den Beitrag gut.
  15. #15
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    387 Beitragspunkte
    Wenn in Query die ganze Query ist, dass sieht man ja, dass die Queries unvollständig sind, das eine ist lediglich der WHERE Teil, beim 2. nur das ORDER BY.

    Du musst da eigentlich irgendwas "verhauen" haben.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  16. #16
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Oeh also ich hab dies ALTER TABLE ic1_news ADD FULLTEXT (news_title) etc gemacht

    Ich hab ganz normnal die search.php wie du sie gepostet hast hochgeladen und nix geaendert da die tabellenfunktion etc ja alle gleich sind.

    die search.htm habe ich auch nix geaendert da ich erstmal will das es funktioniert und dann etwas aender zwinker

    Also kA wo müsste ich den angeblich was verhauen haben? denke mal wenn dann in der .php?
    0 Mitglieder finden den Beitrag gut.
  17. #17
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    387 Beitragspunkte
    Der sagt ja was von einem Syntaxfehler, wenn die Tabelle nicht indiziert wäre, wäre das kein Syntaxfehler.

    Und die search.php die ich gepostet habe hat keine 400 Zeilen, wie soll dann ein Fehler in Zeile 412 auftreten können, wie in deine Fehlermeldung geschrieben steht.

    In den Fehler steht ja -> in Query:, danach müsste ja die vollständge Query kommen, bei dir sind da aber immer nur "Schnipsel".

    Nehmen wir mal den Fehler mit WHERE ...

    im Code steht ja eindeutig $var .= ... also wird angefügt, bei dir wird er aber ersetzt und nicht angefügt, deswegen ist die Query zu kurz.

    Das ist zumindest das, was ich aus den Fehlern rauslesen kann.
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  18. #18
    User Pic
    Siggi Hall Of Fame
    Registriert seit
    08.02.2007
    Beiträge
    6.558
    Beitragswertungen
    327 Beitragspunkte
    Habs nun nochmal kopiert und eingefügt sowie auf leerzeichen geschaut trotzdem ändert sich nix :/

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    MySQL Error:
    1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE (ic1_forums.view >= -9 OR ic1_forums.reply >= -9 OR ic1_forums.start >= -9' at line 1
    in Query:
     WHERE (ic1_forums.view >= -9 OR ic1_forums.reply >= -9 OR ic1_forums.start >= -9) AND ic1_posts.time > UNIX_TIMESTAMP(TIMESTAMPADD(YEAR, -1, NOW())) AND match(txt) against ('TNG' IN BOOLEAN MODE) GROUP BY ic1_topics.id ORDER BY ic1_posts.time DESC LIMIT 100
    Debug backtrace:
        @ mysql.php:32 -- debug_bt()
        @ mysql.php:50 -- db_check_error(...)
        @ search.php:261 -- db_query(...)
        @ search.php:347 -- search_forum(...)
        @ index.php:52 -- require_once(...)
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE (ic1_forums.view >= -9 OR ic1_forums.reply >= -9 OR ic1_forums.start >= -9' at line 1


    news
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    MySQL Error:
    1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY time DESC' at line 1
    in Query:
     ORDER BY time DESC
    Debug backtrace:
        @ mysql.php:32 -- debug_bt()
        @ mysql.php:50 -- db_check_error(...)
        @ search.php:210 -- db_query(...)
        @ search.php:371 -- search_news(...)
        @ index.php:52 -- require_once(...)
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY time DESC' at line 1



    Zuletzt modifiziert von Siggi am 17.02.2013 - 18:33:10
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Module und Modifikationen

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten