ilch Forum » Allgemein » HTML, PHP, SQL,... » Suchfunktion: Gesamte Website

Geschlossen
  1. #1
    User Pic
    Devil Mitglied
    Registriert seit
    02.02.2006
    Beiträge
    2.094
    Beitragswertungen
    21 Beitragspunkte
    Hallo!
    Ich hätte gerne Hilfe bei dem Thema: Gesamte Website durchsuchen lassen.
    Wenn man ja unter die Suche geht, sieht man ja dies hier:
    gesperrtes Bild


    Nun hätte ich das gerne so:

    gesperrtes Bild

    Würde das gehen? Wenn ja, wie? Bitte mit Erklärung zwinker

    Danke im voraus!

    Mfg.


    verwendete ilchClan Version: 1.1 N

    betroffene Homepage: im_aufbau.de


    Zuletzt modifiziert von Devil am 23.01.2010 - 00:33:03
    Wer zuletzt lacht, hat den schlechtesten Ping.
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Domme_09 Mitglied
    Registriert seit
    08.07.2008
    Beiträge
    267
    Beitragswertungen
    0 Beitragspunkte
    müsstest dann nur im .php Teil bei Auswahl "komplette Seite durchsuchen" die dementsprechenden SQLs eintragen...
    Könntest die Ausgabe dann nach Kategorie gruppieren... Sowas mache ich gerade bei mir auf der Page mit der Suche...
    www.bvbsupporters-ms.de
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Devil Mitglied
    Registriert seit
    02.02.2006
    Beiträge
    2.094
    Beitragswertungen
    21 Beitragspunkte
    Jah...hab ich auch schon angeschaut...aber von PHP habe ich keine Ahnung frech
    Wer zuletzt lacht, hat den schlechtesten Ping.
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Domme_09 Mitglied
    Registriert seit
    08.07.2008
    Beiträge
    267
    Beitragswertungen
    0 Beitragspunkte
    brauchst ja auch nicht viel php-Ahnung haben...
    Poste mal die entsprechende php-Datei für die Suche, dann schaue ich da mal rein - ach und die htm auch bitte
    www.bvbsupporters-ms.de
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Devil Mitglied
    Registriert seit
    02.02.2006
    Beiträge
    2.094
    Beitragswertungen
    21 Beitragspunkte
    Hab mal geschaut...aber wie ich jetzt nun das eintragen damit die ganze Website durchgesucht wird.... ^^
    search.php include\contents
    Standard search.php wegen Länge gelöscht.




    search.htm include\templates
    Standard search.htm wegen Länge gelöscht.



    Zuletzt modifiziert von Devil am 04.02.2010 - 22:42:52
    Wer zuletzt lacht, hat den schlechtesten Ping.
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    Domme_09 Mitglied
    Registriert seit
    08.07.2008
    Beiträge
    267
    Beitragswertungen
    0 Beitragspunkte
    die htm:

    <form action="index.php?search" method="GET">
    <table>
    <tr><td>Beitrag:<br /><input type="text" value="{search}" name="search" size="{size}" /></td></tr>
    <tr><td>Autor:<br /><input type="text" value="{autor}" name="autor" size="{size}" /></td></tr>
    <tr><td height="5"></td></tr>
    <tr><td>
        <input type="radio" name="in" value="1" {checked1} /> Forum<br />
        <input type="radio" name="in" value="2" {checked2} /> News<br />
        <input type="radio" name="in" value="3" {checked3} /> Downloads<br />
        <input type="radio" name="in" value="4" {checked4} /> Gesamte Page<br />
    </td></tr>
    <tr><td>
    Zeitlich eingrenzen: <select name="days">{days}</select>
    </td></tr>
    <tr height="14"><td></td></tr>
    <tr><td><input type="submit" value="{_lang_search}" /></td></tr>
    </table>
    </form>
    <hr>
     
    {EXPLODE}
    <br /><br />
    <div style="float: left">{MPL}</div>
    <div style="float: right; text-align: right">Gesamt: {gAnz}</div><br /><br />
     
    <table width="100%" cellpadding="2" cellspacing="1" border="0" class="border">
     
      {EXPLODE}<tr class="{class}">
        <td class="erstezeile" width="15"><img src="include/images/forum/{ord}.gif" width="15" height="15" border="0"></td>
        <td class="erstezeile"><a href="?{link}">{titel} von {autor}</a></td>
      </tr>{EXPLODE}
    </table>
     
    {MPL}


    die php schaue ich mir am Mittwoch an, habe jetzt leider nicht genügend Zeit, um die zu lesen, aber generell müsstest du einfach den vierten Fall dort auch noch abfangen [siehe Zeilen 191, 206]
    www.bvbsupporters-ms.de
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    CeeJay Hall Of Fame
    Registriert seit
    23.03.2007
    Beiträge
    2.425
    Beitragswertungen
    18 Beitragspunkte
    gab es nicht mal ein Script mit einer erweiterten Suchfunktion?
    Nichts ist so sicher, wie die Änderung.
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    Devil Mitglied
    Registriert seit
    02.02.2006
    Beiträge
    2.094
    Beitragswertungen
    21 Beitragspunkte
    ZitatZitat geschrieben von Domme_09

    die php schaue ich mir am Mittwoch an, habe jetzt leider nicht genügend Zeit, um die zu lesen, aber generell müsstest du einfach den vierten Fall dort auch noch abfangen [siehe Zeilen 191, 206]

    Danke, bei der HTM war ich mir nicht sicher ob das reicht so.
    PHP: Logisch ist das schon. Nur ich weiss ja nicht welcher Befehl nun richtig ist. zwinker Was ich nun gefunden habe:
    <?php
    elseif($_GET['in'] == 3) {
    $str_downs  .= "`descl` LIKE '%".$str."%' AND ";
    $str_downs_ .= "name LIKE '%".$str."%' AND ";
    }
    ?>


    Aber wie ich nun das so einfügt, dass die komplette Website durchsucht wird...?
    <?php
    elseif($_GET['in'] == 4) {
    $str_index  .= "`descl` LIKE '%".$str."%' AND ";
    $str_index_ .= "name LIKE '%".$str."%' AND ";
    }
    ?>

    Name & Description LIKE %, okay. Aber index? xD

    Zuletzt modifiziert von Devil am 26.01.2010 - 22:03:40
    Wer zuletzt lacht, hat den schlechtesten Ping.
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    Domme_09 Mitglied
    Registriert seit
    08.07.2008
    Beiträge
    267
    Beitragswertungen
    0 Beitragspunkte
    also ich weiß nicht was du mit diesem php-code-schnipsel anfangen willst, aber zum durchsuchen der kompletten Seite ist das nicht xD
    Müsstest die htm noch ein wenig anpassen, damit du die Kategorie anzeigen kannst, wie zB. hier (externer Link
    Oder wie hast du dir das layouttechnisch gedacht?
    www.bvbsupporters-ms.de
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    Devil Mitglied
    Registriert seit
    02.02.2006
    Beiträge
    2.094
    Beitragswertungen
    21 Beitragspunkte
    Sowas sieht doch gut aus! lächeln
    Wenn man nun "Komplette Website" anklickt, dass so eine Liste mit Kategorie angezeigt wird.
    Wer zuletzt lacht, hat den schlechtesten Ping.
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    Domme_09 Mitglied
    Registriert seit
    08.07.2008
    Beiträge
    267
    Beitragswertungen
    0 Beitragspunkte
    ich schaue mir das am Sonntag mal an, bin jetzt bissl im Stress - sry!
    www.bvbsupporters-ms.de
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    Devil Mitglied
    Registriert seit
    02.02.2006
    Beiträge
    2.094
    Beitragswertungen
    21 Beitragspunkte
    Kein Problem! lächeln
    Wer zuletzt lacht, hat den schlechtesten Ping.
    0 Mitglieder finden den Beitrag gut.
  13. #13
    User Pic
    Devil Mitglied
    Registriert seit
    02.02.2006
    Beiträge
    2.094
    Beitragswertungen
    21 Beitragspunkte
    Und? Schon was gefunden? :p


    EDIT:
    Cool lachen


    Zuletzt modifiziert von Devil am 03.02.2010 - 14:18:51
    Wer zuletzt lacht, hat den schlechtesten Ping.
    0 Mitglieder finden den Beitrag gut.
  14. #14
    User Pic
    Domme_09 Mitglied
    Registriert seit
    08.07.2008
    Beiträge
    267
    Beitragswertungen
    0 Beitragspunkte
    bin gerade dran, poste es dir gleich!
    www.bvbsupporters-ms.de
    0 Mitglieder finden den Beitrag gut.
  15. #15
    User Pic
    Domme_09 Mitglied
    Registriert seit
    08.07.2008
    Beiträge
    267
    Beitragswertungen
    0 Beitragspunkte
    Habe dir mal ein stück php angepasst, müsstest du dann ab Zeile 91 oder was anfügen...
    Ist allerdings nicht getestet!!!

    if(isset($_GET['in'])) {
    	if($_GET['in'] == 2) {
    		$q = "SELECT DISTINCT
    			0 as fid,
    			news_title as titel,
    			'news' as typ,
    			news_id as id,
    			news_time as `time`,
    			prefix_user.name as autor
    			FROM prefix_news
    			LEFT JOIN prefix_user ON prefix_news.user_id = prefix_user.id
    			WHERE (".$str_news." 1 = 1)
    				AND (".$str_news_a." 1 = 1)
    				AND (news_time >= ". $x .")
    			ORDER BY `time` DESC";
    	} elseif($_GET['in'] == 3) {
    		$q = "SELECT DISTINCT
    			0 as fid,
    			CONCAT( name, ' ', version ) AS titel,
    			'down' as typ,
    			id,
    			UNIX_TIMESTAMP(`time`) as `time`,
    				creater as autor
    			FROM prefix_downloads
    			WHERE ((".$str_downs." 1 = 1) OR (".$str_downs_." 1 = 1))
    				AND (".$str_downs_a." 1 = 1)
    				AND (UNIX_TIMESTAMP(`time`) >= ". $x .")
    			ORDER BY UNIX_TIMESTAMP(`time`) DESC";
    	}	elseif($_GET['in'] == 4) {
    		$sql1 = "SELECT DISTINCT
    			a.fid as fid,
    			a.name as titel,
    			'foru' as typ,
    			a.id as id,
    			`time`,
    			c.erst as autor
    			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)
    				AND (time >= ". $x .")
    			GROUP BY a.id
    			ORDER BY time DESC";
    		
    		$sql2 = "SELECT DISTINCT
    			0 as fid,
    			news_title as titel,
    			'news' as typ,
    			news_id as id,
    			news_time as `time`,
    			prefix_user.name as autor
    			FROM prefix_news
    			LEFT JOIN prefix_user ON prefix_news.user_id = prefix_user.id
    			WHERE (".$str_news." 1 = 1)
    				AND (".$str_news_a." 1 = 1)
    				AND (news_time >= ". $x .")
    			ORDER BY `time` DESC";
    		
    		$sql3 = "SELECT DISTINCT
    			0 as fid,
    			CONCAT( name, ' ', version ) AS titel,
    			'down' as typ,
    			id,
    			UNIX_TIMESTAMP(`time`) as `time`,
    				creater as autor
    			FROM prefix_downloads
    			WHERE ((".$str_downs." 1 = 1) OR (".$str_downs_." 1 = 1))
    				AND (".$str_downs_a." 1 = 1)
    				AND (UNIX_TIMESTAMP(`time`) >= ". $x .")
    			ORDER BY UNIX_TIMESTAMP(`time`) DESC";
    	  
    		$q = $sql1." union ".$sql2." union ".$sql3;
    	}
    }


    Wie schaut das jetzt dann aus?
    www.bvbsupporters-ms.de
    0 Mitglieder finden den Beitrag gut.
  16. #16
    User Pic
    Devil Mitglied
    Registriert seit
    02.02.2006
    Beiträge
    2.094
    Beitragswertungen
    21 Beitragspunkte
    Aber Zeile 91 oder sowas ist gut beschrieben xD
    Hab geschaut...aber da gibts mehrere Möglichkeiten das einzufügen. Wo genau zwischen rein?

    EDIT:
    Habe es jetzt einfach mal bei Zeile 94 eingefügt...?
    Aber ich weiss nicht ob das funktioniert, ich glaube nicht frech

    unitedfg.square7.de/index.php?search=test&autor=&days=360


    Zuletzt modifiziert von Devil am 03.02.2010 - 21:42:13
    Wer zuletzt lacht, hat den schlechtesten Ping.
    0 Mitglieder finden den Beitrag gut.
  17. #17
    User Pic
    Domme_09 Mitglied
    Registriert seit
    08.07.2008
    Beiträge
    267
    Beitragswertungen
    0 Beitragspunkte
    Sry, die Zeilenangabe war quatsch.
    Zeilen 190 - 222 bitte mit meinem Post überschreiben, dann müsste zumindest php-technisch alles richtig sein. Den html-Teil musst natürlich noch dementsprechend anpassen, damit die Kategorie zb angezeigt wird

    melde mich später [evtl. erst morgen] wieder... bin jetzt auf der Arbeit..
    www.bvbsupporters-ms.de
    0 Mitglieder finden den Beitrag gut.
  18. #18
    User Pic
    Devil Mitglied
    Registriert seit
    02.02.2006
    Beiträge
    2.094
    Beitragswertungen
    21 Beitragspunkte
    unitedfg.square7.de/index.php?search=cxt&autor=&in=4&days=360
    Ich glaube nicht frech MySQL Fehler.
    Meine Search.php sieht folgend aus:
    Code wegen Länge entfernt. Neuer Code unten.

    Oder habe ich etwas falsch gemacht? Danke für deine Mühe lächeln


    Zuletzt modifiziert von Devil am 01.03.2010 - 21:57:37
    Wer zuletzt lacht, hat den schlechtesten Ping.
    0 Mitglieder finden den Beitrag gut.
  19. #19
    User Pic
    Domme_09 Mitglied
    Registriert seit
    08.07.2008
    Beiträge
    267
    Beitragswertungen
    0 Beitragspunkte
    pack mal in zeile 278 ein "echo("SQL ".$q);"

    dann können wir sehen, was für ein sql er da zusammengebastelt hat und schauen, ob da vielleicht ein Fehler drin ist!!! Das könnten wir nämlich dann via phpMyAdmin einfach auf der DB ausführen und wüssten dann, wenn es ein SQL-Fehler ist, wo er ist.
    www.bvbsupporters-ms.de
    0 Mitglieder finden den Beitrag gut.
  20. #20
    User Pic
    Devil Mitglied
    Registriert seit
    02.02.2006
    Beiträge
    2.094
    Beitragswertungen
    21 Beitragspunkte
    Hiho!
    Ich kam jetzt erst wieder dazu.
    Also ich habe das in die Zeile 278 gepackt.
    Hier der Link:
    unitedfg.square7.de/index.php?search=cxt&autor=&in=4&days=360
    Wer zuletzt lacht, hat den schlechtesten Ping.
    0 Mitglieder finden den Beitrag gut.
  21. #21
    User Pic
    Domme_09 Mitglied
    Registriert seit
    08.07.2008
    Beiträge
    267
    Beitragswertungen
    0 Beitragspunkte
    ok, waren noch ein paar Kleinigkeiten drin...
    Das mit dem OrderBy und union ging so nicht. Habe den SQL String jetzt mal getestet für die gesamte Page!

    Angepasste php [So dürfte es gehen - musst natürlich die htm noch dementsprechend anpassen, was wo angezeigt werden soll]:
    <?php
    #   Copyright by: Manuel
    #   Support: www.ilch.de
     
     
    defined ('main') or die ( 'no direct access' );
     
    function  serach_mark($text,$such) {
      #$text = BBcode($text);
        $serar = explode(' ', $such);
      $text  = strip_tags($text);
      $text  = stripslashes($text);
      $rte   = '';
      $tleng = 30;
      foreach($serar as $v) {
        $firs = strpos(strtolower($text),strtolower($v));
        $begi = (($firs - $tleng) < 0 ? 0 : $firs - $tleng );
        $leng = strlen($text);
        $ende = (($firs + strlen($v) + $tleng) > $leng ? $leng : $firs + strlen($v) + $tleng );
        $ttxt = substr($text,$begi,($ende - $begi));
        $rte .= ' ... '.preg_replace("/".$v."/si",'<b>'.$v.'</b>',$ttxt);
      }
      return ($rte);
    }
     
    function search_finduser() {
      $design = new design ( 'Finduser' , '', 0 );
      $design->header();
     
      $tpl = new tpl ( 'search_finduser' );
      $tpl->out(0);
      if ( isset ( $_POST['sub'] ) AND !empty($_POST['name']) ) {
          $name = str_replace('*',"%",$_POST['name']);
        $name = escape($name, 'string');
          $q = "SELECT name,name FROM prefix_user WHERE name like '".$name."'";
          $tpl->set ('username',dbliste('',$tpl,'username',$q));
          $tpl->out(1);
      }
      $tpl->out(2);
      $design->footer();
    }
     
    if ($menu->get(1) == 'finduser') {
      search_finduser();
      exit();
    }
     
     
    $such = '';
    if ($menu->get(1) != '') {
      $such = $menu->get(1);
    } elseif (isset($_REQUEST['search'])) {
      $such = $_REQUEST['search'];
    }
     
    if ($such == 'aubt' OR $such == 'augt' OR $such == 'aeit') {
        header('Location: index.php?forum-'.$such);
        exit();
    }
     
    $such = stripslashes(escape($such, 'string'));
     
    $snac = 'Suche';
    if ($such == 'augt' OR $such == 'aeit' OR $such == 'aubt') {
      $ar_s = array('aubt'=>'unbeantworteten Themen','aeit'=>'eigenen Beitr&auml;gen','augt'=>'neue Themen seit dem letzten Besuch');
      $snac = $ar_s[$such];
    } elseif ( isset($_REQUEST['search']) ) {
      $snac = 'nach: '.$such;
    }
     
     
    $title = $allgAr['title'].' :: Suchen :: '.htmlentities($snac);
    $hmenu  = '<a class="smalfont" href="index.php?search">Suchen</a><b> &raquo; </b>'.htmlentities($snac);
    $design = new design ( $title , $hmenu );
    $design->header();
     
    $tpl = new tpl ('search');
    $tpl->set ('size', 30);
     
    $gAnz = 0;
    $autor = '';
    if(isset($_GET['autor'])) {
        $autor = escape($_GET['autor'],'string');
    }
    $tpl->set ('autor', $autor);
     
    if(isset($_GET['in'])) {
        for($i=1;$i<=3;$i++){
            if($_GET['in'] == $i) {
                $tpl->set ('checked'.$i, 'checked="checked"');
            }
        }
    } else $tpl->set ('checked1', 'checked="checked"');
     
    if ($such != 'augt' AND $such != 'aeit' AND $such != 'aubt') {
      $tpl->set('search',escape_for_fields($such),0);
    }
     
    if(isset($_GET['days'])) {
        $days = ($_GET['days'] == 0 ? 360 : intval($_GET['days']));
    }
    else $days = 360;
    $days_ar = array(  360 => 'alle Beitr&auml;ge (1 Jahr)',
                    1   => '1 Tag',
                    7   => '7 Tage',
                    14  => '2 Wochen',
                    30  => '1 Monat',
                    90  => '3 Monate',
                    180 => '6 Monate');
    $tpl->set('days',arlistee($days, $days_ar));
    $tpl->out(0);
     
    if (!empty($such) OR !empty($autor)) {
      $page = 1;
      if (isset($_GET['page'])) {
        $page = str_replace('-p','',$_GET['page']);
      }
     
     
      $limit = 25;  // Limit
      $anfang = ($page - 1) * $limit;
     
      $x = time() - (3600 * 24 * $days);
     
        $such = str_replace('-','',$such);
        $such = str_replace('=','',$such);
        $such = str_replace('&','',$such);
     
        $serar = explode(' ', $such);
        $str_forum  = '';
        $str_forum_a = '';
        $str_news   = '';
        $str_news_a = '';
        $str_downs  = '';
        $str_downs_ = '';
        $str_downs_a = '';
          foreach($serar as $v) {
            $str = str_replace('\'','',$v);
              $str = str_replace('"','',$str);
          $str = addslashes($str);
              if ( !empty($str) ) {
                if($_GET['in'] == 1) {
                    $str_forum .= "txt LIKE '%".$str."%' AND ";
                }
                elseif($_GET['in'] == 2) {
                    $str_news  .= "news_text LIKE '%".$str."%' AND ";
                }
                elseif($_GET['in'] == 3) {
                    $str_downs  .= "`descl` LIKE '%".$str."%' AND ";
                    $str_downs_ .= "name LIKE '%".$str."%' AND ";
                }
              }
          }
          if(isset($_GET['autor'])) {
                if($_GET['in'] == 1) {
                    $str_forum_a .= "c.erst LIKE '%".$autor."%' AND ";
                }
                elseif($_GET['in'] == 2) {
                    $str_news_a .= "`name` LIKE '%".$autor."%' AND ";
                }
                elseif($_GET['in'] == 3) {
                $str_downs_a .= "`creater` LIKE '%".$autor."%' AND ";
                }
        }
     
    // 1 = forum, ist immer standart
        $q = "
          SELECT DISTINCT
           a.fid as fid,
           a.name as titel,
           'foru' as typ,
           a.id as id,
           `time`,
            c.erst as autor
         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)
           AND (time >= ". $x .")
         GROUP BY a.id
          ORDER BY time DESC";
    if(isset($_GET['in'])) {
        if($_GET['in'] == 2) {
            $q = "SELECT DISTINCT
               0 as fid,
               news_title as titel,
               'news' as typ,
               news_id as id,
               news_time as `time`,
               prefix_user.name as autor
               FROM prefix_news
               LEFT JOIN prefix_user ON prefix_news.user_id = prefix_user.id
               WHERE (".$str_news." 1 = 1)
                   AND (".$str_news_a." 1 = 1)
                   AND (news_time >= ". $x .")
               ORDER BY `time` DESC";
        } elseif($_GET['in'] == 3) {
            $q = "SELECT DISTINCT
               0 as fid,
               CONCAT( name, ' ', version ) AS titel,
               'down' as typ,
               id,
               UNIX_TIMESTAMP(`time`) as `time`,
                   creater as autor
               FROM prefix_downloads
               WHERE ((".$str_downs." 1 = 1) OR (".$str_downs_." 1 = 1))
                   AND (".$str_downs_a." 1 = 1)
                   AND (UNIX_TIMESTAMP(`time`) >= ". $x .")
               ORDER BY UNIX_TIMESTAMP(`time`) DESC";
        }   elseif($_GET['in'] == 4) {
            $sql1 = "SELECT DISTINCT
               a.fid as fid,
               a.name as titel,
               'foru' as typ,
               a.id as id,
               `time`,
               c.erst as autor
               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)
                   AND (time >= ". $x .")
               GROUP BY a.id";
           
            $sql2 = "SELECT DISTINCT
               0 as fid,
               news_title as titel,
               'news' as typ,
               news_id as id,
               news_time as `time`,
               prefix_user.name as autor
               FROM prefix_news
               LEFT JOIN prefix_user ON prefix_news.user_id = prefix_user.id
               WHERE (".$str_news." 1 = 1)
                   AND (".$str_news_a." 1 = 1)
                   AND (news_time >= ". $x .")";
           
            $sql3 = "SELECT DISTINCT
               0 as fid,
               CONCAT( name, ' ', version ) AS titel,
               'down' as typ,
               id,
               UNIX_TIMESTAMP(`time`) as `time`,
                   creater as autor
               FROM prefix_downloads
               WHERE ((".$str_downs." 1 = 1) OR (".$str_downs_." 1 = 1))
                   AND (".$str_downs_a." 1 = 1)
                   AND (UNIX_TIMESTAMP(`time`) >= ". $x .")
               ORDER BY UNIX_TIMESTAMP(`time`) DESC";
         
            $q = $sql1." union ".$sql2." union ".$sql3;
        }
    }
        $gAnz = db_num_rows(db_query($q));
     
      $q .= " LIMIT ".$anfang.",".$limit;
     
      $MPL = db_make_sites ($page , "" , $limit , "index.php?search=".urlencode($such)."&autor=".urlencode($autor)."&in=".$_GET['in']."&days=".$days."&page=", "", $gAnz );
      $tpl->set_ar_out(array('MPL'=>$MPL,'gAnz'=>$gAnz),1);
     
      $q = db_query($q);
      $class = '';
      while($r = db_fetch_assoc($q) ) {
        $class = ($class == 'Cmite' ? 'Cnorm' : 'Cmite' );
        $r['class'] = $class;
        if ($r['typ'] == 'foru') {
          $r['ctime'] = db_result(db_query("SELECT MAX(time) FROM prefix_posts WHERE tid = ".$r['id']),0,0);
          $r['ord'] = forum_get_ordner($r['ctime'],$r['id'],$r['fid']);
          $r['link'] = 'forum-showposts-'.$r['id'];
        } elseif ($r['typ'] == 'news') {
          $r['ord']  = 'ord';
          $r['link'] = 'news-'.$r['id'];
        } elseif ($r['typ'] == 'down') {
          $r['ord']  = 'ord';
          $r['link'] = 'downloads-show-'.$r['id'];
        }
        $tpl->set_ar_out($r,2);
      }
      $tpl->out(3);
    }
     
     
    $design->footer();
     
    ?>
    www.bvbsupporters-ms.de
    0 Mitglieder finden den Beitrag gut.
  22. #22
    User Pic
    Devil Mitglied
    Registriert seit
    02.02.2006
    Beiträge
    2.094
    Beitragswertungen
    21 Beitragspunkte
    Hm...
    Wenn ich nun z.b. Neuthard eingebe, dann werden alle Threads aufgelistet, obwohl das Wort nur in einem Thread vorkommt.
    unitedfg.square7.de/index.php?search=Neuthard&autor=&in=4&days=360

    xd
    Wer zuletzt lacht, hat den schlechtesten Ping.
    0 Mitglieder finden den Beitrag gut.
  23. #23
    User Pic
    Domme_09 Mitglied
    Registriert seit
    08.07.2008
    Beiträge
    267
    Beitragswertungen
    0 Beitragspunkte
    hm, komisch...
    Normalerweise sollte es so gehen. Schaue mir das SQL nochmal durch!

    pack nochmal das echo($q) darein... dann schaue ich mir mal an was er zusammenbastelt


    Zuletzt modifiziert von Domme_09 am 16.02.2010 - 18:13:55
    www.bvbsupporters-ms.de
    0 Mitglieder finden den Beitrag gut.
  24. #24
    User Pic
    Devil Mitglied
    Registriert seit
    02.02.2006
    Beiträge
    2.094
    Beitragswertungen
    21 Beitragspunkte
    Okay ist getan, wieder in der selben Zeile.
    Wer zuletzt lacht, hat den schlechtesten Ping.
    0 Mitglieder finden den Beitrag gut.
  25. #25
    User Pic
    Domme_09 Mitglied
    Registriert seit
    08.07.2008
    Beiträge
    267
    Beitragswertungen
    0 Beitragspunkte
    habe mir das nochmal angeschaut - klar, dass er alles ausgibt...
    Der Suchstring wird auch nirgendwo eingebunden xD -> Sry!

    Habe die Zeilen 137 - 164 einmal angepasst, hoffe es passt so!

    <?php
    #   Copyright by: Manuel
    #   Support: www.ilch.de
     
     
    defined ('main') or die ( 'no direct access' );
     
    function  serach_mark($text,$such) {
      #$text = BBcode($text);
       $serar = explode(' ', $such);
      $text  = strip_tags($text);
      $text  = stripslashes($text);
      $rte   = '';
      $tleng = 30;
      foreach($serar as $v) {
        $firs = strpos(strtolower($text),strtolower($v));
        $begi = (($firs - $tleng) < 0 ? 0 : $firs - $tleng );
        $leng = strlen($text);
        $ende = (($firs + strlen($v) + $tleng) > $leng ? $leng : $firs + strlen($v) + $tleng );
        $ttxt = substr($text,$begi,($ende - $begi));
        $rte .= ' ... '.preg_replace("/".$v."/si",'<b>'.$v.'</b>',$ttxt);
      }
      return ($rte);
    }
     
    function search_finduser() {
      $design = new design ( 'Finduser' , '', 0 );
      $design->header();
     
      $tpl = new tpl ( 'search_finduser' );
      $tpl->out(0);
      if ( isset ( $_POST['sub'] ) AND !empty($_POST['name']) ) {
          $name = str_replace('*',"%",$_POST['name']);
        $name = escape($name, 'string');
          $q = "SELECT name,name FROM prefix_user WHERE name like '".$name."'";
          $tpl->set ('username',dbliste('',$tpl,'username',$q));
          $tpl->out(1);
      }
      $tpl->out(2);
      $design->footer();
    }
     
    if ($menu->get(1) == 'finduser') {
      search_finduser();
      exit();
    }
     
     
    $such = '';
    if ($menu->get(1) != '') {
      $such = $menu->get(1);
    } elseif (isset($_REQUEST['search'])) {
      $such = $_REQUEST['search'];
    }
     
    if ($such == 'aubt' OR $such == 'augt' OR $such == 'aeit') {
        header('Location: index.php?forum-'.$such);
        exit();
    }
     
    $such = stripslashes(escape($such, 'string'));
     
    $snac = 'Suche';
    if ($such == 'augt' OR $such == 'aeit' OR $such == 'aubt') {
      $ar_s = array('aubt'=>'unbeantworteten Themen','aeit'=>'eigenen Beitr&auml;gen','augt'=>'neue Themen seit dem letzten Besuch');
      $snac = $ar_s[$such];
    } elseif ( isset($_REQUEST['search']) ) {
      $snac = 'nach: '.$such;
    }
     
     
    $title = $allgAr['title'].' :: Suchen :: '.htmlentities($snac);
    $hmenu  = '<a class="smalfont" href="index.php?search">Suchen</a><b> &raquo; </b>'.htmlentities($snac);
    $design = new design ( $title , $hmenu );
    $design->header();
     
    $tpl = new tpl ('search');
    $tpl->set ('size', 30);
     
    $gAnz = 0;
    $autor = '';
    if(isset($_GET['autor'])) {
        $autor = escape($_GET['autor'],'string');
    }
    $tpl->set ('autor', $autor);
     
    if(isset($_GET['in'])) {
        for($i=1;$i<=3;$i++){
            if($_GET['in'] == $i) {
                $tpl->set ('checked'.$i, 'checked="checked"');
            }
        }
    } else $tpl->set ('checked1', 'checked="checked"');
     
    if ($such != 'augt' AND $such != 'aeit' AND $such != 'aubt') {
      $tpl->set('search',escape_for_fields($such),0);
    }
     
    if(isset($_GET['days'])) {
        $days = ($_GET['days'] == 0 ? 360 : intval($_GET['days']));
    }
    else $days = 360;
    $days_ar = array(  360 => 'alle Beitr&auml;ge (1 Jahr)',
                    1   => '1 Tag',
                    7   => '7 Tage',
                    14  => '2 Wochen',
                    30  => '1 Monat',
                    90  => '3 Monate',
                    180 => '6 Monate');
    $tpl->set('days',arlistee($days, $days_ar));
    $tpl->out(0);
     
    if (!empty($such) OR !empty($autor)) {
      $page = 1;
      if (isset($_GET['page'])) {
        $page = str_replace('-p','',$_GET['page']);
      }
     
     
      $limit = 25;  // Limit
      $anfang = ($page - 1) * $limit;
     
      $x = time() - (3600 * 24 * $days);
     
        $such = str_replace('-','',$such);
        $such = str_replace('=','',$such);
        $such = str_replace('&','',$such);
     
        $serar = explode(' ', $such);
        $str_forum  = '';
        $str_forum_a = '';
        $str_news   = '';
        $str_news_a = '';
        $str_downs  = '';
        $str_downs_ = '';
        $str_downs_a = '';
    	foreach($serar as $v) {
    		$str = str_replace('\'','',$v);
    		$str = str_replace('"','',$str);
    		$str = addslashes($str);
    		if ( !empty($str) ) {
    			if($_GET['in'] == 1) {
    				$str_forum .= "txt LIKE '%".$str."%' AND ";
    			}
    			elseif($_GET['in'] == 2) {
    				$str_news  .= "news_text LIKE '%".$str."%' AND ";
    			}
    			elseif($_GET['in'] == 3) {
    				$str_downs  .= "`descl` LIKE '%".$str."%' AND ";
    				$str_downs_ .= "name LIKE '%".$str."%' AND ";
    			}
    			elseif($_GET['in'] == 4) {
    				$str_forum .= "txt LIKE '%".$str."%' AND ";
    				$str_news  .= "news_text LIKE '%".$str."%' AND ";
    				$str_downs  .= "`descl` LIKE '%".$str."%' AND ";
    				$str_downs_ .= "name LIKE '%".$str."%' AND ";
    			}
    		}
    	}
    
    	if(isset($_GET['autor'])) {
    		if($_GET['in'] == 1) {
    			$str_forum_a .= "c.erst LIKE '%".$autor."%' AND ";
    		}
    		elseif($_GET['in'] == 2) {
    			$str_news_a .= "`name` LIKE '%".$autor."%' AND ";
    		}
    		elseif($_GET['in'] == 3) {
    			$str_downs_a .= "`creater` LIKE '%".$autor."%' AND ";
    		}
    		elseif($_GET['in'] == 4) {
    			$str_forum_a .= "c.erst LIKE '%".$autor."%' AND ";
    			$str_news_a .= "`name` LIKE '%".$autor."%' AND ";
    			$str_downs_a .= "`creater` LIKE '%".$autor."%' AND ";
    		}
    	}
    
     
    // 1 = forum, ist immer standart
        $q = "
         SELECT DISTINCT
          a.fid as fid,
          a.name as titel,
          'foru' as typ,
          a.id as id,
          `time`,
           c.erst as autor
        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)
          AND (time >= ". $x .")
        GROUP BY a.id
         ORDER BY time DESC";
    if(isset($_GET['in'])) {
        if($_GET['in'] == 2) {
            $q = "SELECT DISTINCT
              0 as fid,
              news_title as titel,
              'news' as typ,
              news_id as id,
              news_time as `time`,
              prefix_user.name as autor
              FROM prefix_news
              LEFT JOIN prefix_user ON prefix_news.user_id = prefix_user.id
              WHERE (".$str_news." 1 = 1)
                  AND (".$str_news_a." 1 = 1)
                  AND (news_time >= ". $x .")
              ORDER BY `time` DESC";
        } elseif($_GET['in'] == 3) {
            $q = "SELECT DISTINCT
              0 as fid,
              CONCAT( name, ' ', version ) AS titel,
              'down' as typ,
              id,
              UNIX_TIMESTAMP(`time`) as `time`,
                  creater as autor
              FROM prefix_downloads
              WHERE ((".$str_downs." 1 = 1) OR (".$str_downs_." 1 = 1))
                  AND (".$str_downs_a." 1 = 1)
                  AND (UNIX_TIMESTAMP(`time`) >= ". $x .")
              ORDER BY UNIX_TIMESTAMP(`time`) DESC";
        }   elseif($_GET['in'] == 4) {
            $sql1 = "SELECT DISTINCT
              a.fid as fid,
              a.name as titel,
              'foru' as typ,
              a.id as id,
              `time`,
              c.erst as autor
              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)
                  AND (time >= ". $x .")
              GROUP BY a.id";
           
            $sql2 = "SELECT DISTINCT
              0 as fid,
              news_title as titel,
              'news' as typ,
              news_id as id,
              news_time as `time`,
              prefix_user.name as autor
              FROM prefix_news
              LEFT JOIN prefix_user ON prefix_news.user_id = prefix_user.id
              WHERE (".$str_news." 1 = 1)
                  AND (".$str_news_a." 1 = 1)
                  AND (news_time >= ". $x .")";
           
            $sql3 = "SELECT DISTINCT
              0 as fid,
              CONCAT( name, ' ', version ) AS titel,
              'down' as typ,
              id,
              UNIX_TIMESTAMP(`time`) as `time`,
                  creater as autor
              FROM prefix_downloads
              WHERE ((".$str_downs." 1 = 1) OR (".$str_downs_." 1 = 1))
                  AND (".$str_downs_a." 1 = 1)
                  AND (UNIX_TIMESTAMP(`time`) >= ". $x .")
              ORDER BY UNIX_TIMESTAMP(`time`) DESC";
         
            $q = $sql1." union ".$sql2." union ".$sql3;
        }
    }
        $gAnz = db_num_rows(db_query($q));
     
      $q .= " LIMIT ".$anfang.",".$limit;
     
      $MPL = db_make_sites ($page , "" , $limit , "index.php?search=".urlencode($such)."&autor=".urlencode($autor)."&in=".$_GET['in']."&days=".$days."&page=", "", $gAnz );
      $tpl->set_ar_out(array('MPL'=>$MPL,'gAnz'=>$gAnz),1);
     
      $q = db_query($q);
      $class = '';
      while($r = db_fetch_assoc($q) ) {
        $class = ($class == 'Cmite' ? 'Cnorm' : 'Cmite' );
        $r['class'] = $class;
        if ($r['typ'] == 'foru') {
          $r['ctime'] = db_result(db_query("SELECT MAX(time) FROM prefix_posts WHERE tid = ".$r['id']),0,0);
          $r['ord'] = forum_get_ordner($r['ctime'],$r['id'],$r['fid']);
          $r['link'] = 'forum-showposts-'.$r['id'];
        } elseif ($r['typ'] == 'news') {
          $r['ord']  = 'ord';
          $r['link'] = 'news-'.$r['id'];
        } elseif ($r['typ'] == 'down') {
          $r['ord']  = 'ord';
          $r['link'] = 'downloads-show-'.$r['id'];
        }
        $tpl->set_ar_out($r,2);
      }
      $tpl->out(3);
    }
     
     
    $design->footer();
     
    ?>
    www.bvbsupporters-ms.de
    0 Mitglieder finden den Beitrag gut.
  26. #26
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.622
    Beitragswertungen
    1192 Beitragspunkte
    Nix weltbewegendes ... aber so bleibt die Markierung auch bei Option 4

    for($i=1;$i<=4;$i++){
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  27. #27
    User Pic
    Domme_09 Mitglied
    Registriert seit
    08.07.2008
    Beiträge
    267
    Beitragswertungen
    0 Beitragspunkte
    jau, hast Recht! Danke, dass du mit aufgepasst hast :-)

    Devil, an deiner Stelle würde ich evtl. die Ausgabe der Suchergebnisse noch ein wenig anpassen...
    www.bvbsupporters-ms.de
    0 Mitglieder finden den Beitrag gut.
  28. #28
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.622
    Beitragswertungen
    1192 Beitragspunkte
    Gern geschehen! Gute Arbeit Domme_09!
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  29. #29
    User Pic
    Devil Mitglied
    Registriert seit
    02.02.2006
    Beiträge
    2.094
    Beitragswertungen
    21 Beitragspunkte
    Hiho lachen
    Hey cool, sowie es aussieht funktioniert das lachen

    EDIT:
    Also ich habs nun mal versucht:
    unitedfg.square7.de/index.php?search=.&autor=&in=4&days=360

    Nur, wie lass ich nun die Kategorie sowie das Datum anzeigen? Und das die Kategorie nach ASC geordnet wird lachen


    Zuletzt modifiziert von Devil am 22.02.2010 - 09:33:45
    Wer zuletzt lacht, hat den schlechtesten Ping.
    0 Mitglieder finden den Beitrag gut.
  30. #30
    User Pic
    Domme_09 Mitglied
    Registriert seit
    08.07.2008
    Beiträge
    267
    Beitragswertungen
    0 Beitragspunkte
    Kategorie in htm-Teil mittels {typ} einfügen. Den Platzhalter gibt es nämlich schon.

    Zeile 292-307 wie folgt ersetzen:
    while($r = db_fetch_assoc($q) ) {
    	$class = ($class == 'Cmite' ? 'Cnorm' : 'Cmite' );
    	$r['class'] = $class;
    	if ($r['typ'] == 'foru') {
    		$r['ctime'] = db_result(db_query("SELECT MAX(time) FROM prefix_posts WHERE tid = ".$r['id']),0,0);
    		$r['ord'] = forum_get_ordner($r['ctime'],$r['id'],$r['fid']);
    		$r['link'] = 'forum-showposts-'.$r['id'];
    	} elseif ($r['typ'] == 'news') {
    		$r['ord']  = 'ord';
    		$r['link'] = 'news-'.$r['id'];
    		$r['ctime'] = $r['news_time'];
    	} elseif ($r['typ'] == 'down') {
    		$r['ord']  = 'ord';
    		$r['link'] = 'downloads-show-'.$r['id'];
    		$r['ctime'] = $r['time'];
    	}
    	$tpl->set_ar_out($r,2);
    }


    Dann kannst du den Platzhalter {ctime} in deinem htm verwenden.
    Was die Sortierung nach asc angeht... Ist erstmal so nicht möglich, weil die per union zusammengesetzt werden. Aber die Reihenfolge der Zusammensetzung kannst du natürlich machen wie du willst: Zeile 280!
    www.bvbsupporters-ms.de
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten