Antwort
 
Themen-Optionen Thema durchsuchen
Alt 19.07.2006, 14:03 Nach oben    #1
Neuer Benutzer
 
Registriert seit: 19.07.2006
Beiträge: 4
Standard Datenbanksuche

Hallo,

ich brauche dringend Hilfe von euch Profis. Ich habe mit einem Freund zusammen eine Suche Gecodet. Also um genau zu sein hat er sie gecodet. DA er gerade nicht zu erreichen ist, und ich die Suche gerne etwas verändern möchte brauche ich eure Hilfe.

Also hier ist ersteinmal der Quellcode:

PHP-Code:
<?php 

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) < $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' '');
  
$design->header();
  
  
$tpl = new tpl 'search_finduser' );
  
$tpl->out(0);
  if ( isset ( 
$_POST['sub'] ) AND !empty($_POST['name']) ) {
      
$name str_replace('*',"%",$_POST['name']);
      
$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'];
}

$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);
if (
$such != 'augt' AND $such != 'aeit' AND $such != 'aubt') {
  
$tpl->set_out('search',escape_for_fields($such),0);
}

if (!empty(
$such)) {
  
$page 1;
  if (isset(
$_GET['page'])) {
    
$page str_replace('-p','',$_GET['page']);
  }
  
  
  
$limit 25;  // Limit 
  
$anfang = ($page 1) * $limit;    
  
  if (
$such == 'aubt' OR $such == 'augt' OR $such == 'aeit') {
    
$s "DISTINCT b.id as fid, a.name as titel, 'foru' as typ, a.id as id";
    
$q "select {SELECT}
      FROM prefix_topics a
        LEFT JOIN prefix_forums b ON b.id = a.fid
        LEFT JOIN prefix_posts c ON c.tid = a.id
      WHERE (b.view >= "
.$_SESSION['authright']." OR b.reply >= ".$_SESSION['authright']." OR b.start >= ".$_SESSION['authright'].") 
         AND {WHERE}
      ORDER BY c.time DESC"
;
  }
  
$x time() - (3600 24 360);
  if (
$such == 'aubt') {
    
$where "c.time >= "$x ." AND a.rep = 0";
    
$c str_replace('{WHERE}',$where,str_replace('{SELECT}','COUNT(DISTINCT a.id)',$q));
    
$gAnz  db_result(db_query($c),0);
    
$q     str_replace('{WHERE}',$where,str_replace('{SELECT}',$s,$q));
  } elseif (
$such == 'augt') {
    
$where "c.time >= "$x ." AND c.time >= ".$_SESSION['lastlogin'];
    
$gAnz  db_result(db_query(str_replace('{WHERE}',$where,str_replace('{SELECT}','COUNT(DISTINCT a.id)',$q))),0);
    
$q     str_replace('{WHERE}',$where,str_replace('{SELECT}',$s,$q));
  } elseif (
$such == 'aeit') {
    
$where "c.time >= "$x ." AND c.erstid = ".$_SESSION['authid'];
    
$gAnz  db_result(db_query(str_replace('{WHERE}',$where,str_replace('{SELECT}',' COUNT(DISTINCT a.id)',$q))),0);
    
$q     str_replace('{WHERE}',$where,str_replace('{SELECT}',$s,$q));
   } else {
    
$such str_replace('-','',$such);
    
$such str_replace('=','',$such);
    
$such str_replace('&','',$such);
  
      
$serar explode(' '$such);
    
$str_forum '';
    
$str_news  '';
    
$str_downs  '';
      foreach(
$serar as $v) {
        
$str str_replace('\'','',$v);
          
$str str_replace('"','',$str);
      
$str addslashes($str);
          if ( !empty(
$str) ) {
            
$str_forum .= "txt LIKE '%".$str."%' AND ";
        
$str_news  .= "news_text LIKE '%".$str."%' AND ";
        
$str_downs  .= "`descl` LIKE '%".$str."%' AND ";
          }
      }
    
    
$q "(
      SELECT DISTINCT
        0 as fid,
        news_title as titel,
        'news' as typ,
        news_id as id,
        news_time as time
      FROM prefix_news
      WHERE ("
.$str_news." 1 = 1)
        AND (news_time >= "
$x .")
      
    ) UNION (
    
      SELECT DISTINCT
        prefix_topics.fid as fid,
        prefix_topics.name as titel,
        'foru' as typ,
        prefix_topics.id as id,
        time as time
      FROM prefix_posts
        LEFT JOIN prefix_topics ON prefix_topics.id = prefix_posts.tid
        LEFT JOIN prefix_forums ON prefix_forums.id = prefix_topics.fid
      WHERE (prefix_forums.view >= "
.$_SESSION['authright']." OR prefix_forums.reply >= ".$_SESSION['authright']." OR prefix_forums.start >= ".$_SESSION['authright'].")
        AND ("
.$str_forum." 1 = 1)
        AND (time >= "
$x .")
      GROUP BY prefix_topics.id

    ) UNION (
    
      SELECT DISTINCT
        0 as fid,
        CONCAT( name, ' ', version ) AS titel,
        'down' as typ,
        id,
        UNIX_TIMESTAMP(time) as time
      FROM prefix_downloads
      WHERE ("
.$str_downs." 1 = 1)
        AND (time >= "
$x .")
    )
    
    ORDER BY time DESC"
;
          
    
$gAnz db_num_rows(db_query($q));
  }

  
$q .= " LIMIT ".$anfang.",".$limit;
  
  
$MPL db_make_sites ($page "" $limit "index.php?search=".urlencode($such)."&amp: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();

?>
So also und ich wollte gerne das volgendes geht.
Ich habe eine Tabelle namens ic1_praktikum, und die Suche sollte so erweitert werden, das sie auch diese Tabelle durchsucht. Könnt ihr mir dabei bitte bitte helfen das währe so super. Es gibt in der Tabelle ic1_praktium folgende Spalten:

- id
- name
- firma
- berufsbild
- gefunden
- kommentar
- homepage

man soll dann nache name, firma, berufsbild suchen können.

Vielen dank schonmal im vorraus !

Gruß

Geändert von Jann Hendrik (20.07.2006 um 09:05 Uhr).
Alienuser ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 19.07.2006, 14:26 Nach oben    #2
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.642
Standard

Sei nicht sauer, aber es wird keiner hier Skripte erweitern und ich bezweifle das jemand ernsthaft das Bedürfnis verspürt, einen Quellcode dieser Größe und ohne Kommentare durchzuarbeiten.

Wir sind hier keine Skriptschmiede sondern wollen Verständnisprobleme klären und Lösungsansätze anbieten, aber keine fertigen Skripte (es sei denn für Bares...).

Wenn du ein spezifisches Problem hast, dann kannst du gerne auf uns zukommen.
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 19.07.2006, 14:28 Nach oben    #3
Neuer Benutzer
 
Registriert seit: 19.07.2006
Beiträge: 4
Standard

ok also ich probiere es mal so.

Ich möchte gerne eine suche für meine Datenbank haben. Nun kennt ihr ein tut oder könnt ihr mir ein bischen erklären wie man so iene suche macht ß?

Währe super !
Alienuser ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 19.07.2006, 14:52 Nach oben    #4
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.642
Standard

Also als SQL-Statement könntest du sowas verwenden:
SQL Code:
  1. SELECT * FROM tabelle WHERE spalte1 LIKE '%suchstring%' OR spalte2 LIKE '%suchstring%';
Damit würdest du schonmal 2 Spalten durchsuchen.

Eine kleine Anregung könnte das Tutorial sein. Dort siehst du wie du mit Daten aus einem Formular arbeitest und wie du Daten aus einer Datenbank ausliest.
Dazu ein wenig Gribs und es geht.

Bei weiteren Fragen: Hau rein!
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 19.07.2006, 15:05 Nach oben    #5
Neuer Benutzer
 
Registriert seit: 19.07.2006
Beiträge: 4
Standard

ok ich werde es mal versuchen und dann (sofern ich probleme habe) hier wieder reinschreiben aber ersteinmal danke dafür.

Eine Frage habe ich schon mal, kann ich einfach den Quelltext von dier benutzen und habe shcon eine eSuche oder was fehlt da alles noch, denn ich muss die ergebnisse ja auch noch ausgeben können oder ??

Danke
Alienuser ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 19.07.2006, 15:15 Nach oben    #6
Martin Breuer
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.642
Standard

Um dir zu sagen ob du den Quellcode von oben nutzen könntest bzw was dort fehlt führt allerdings wieder zu meiner ersten Antwort. Von daher kann ich dir das nicht sagen.
Kleiner Tipp fürs nächste mal: Statt [code]....[/code] einfach [php]....[/php] nutzen, dann sehen wir den Quelltext mit Syntax Highlighting.
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 19.07.2006, 15:17 Nach oben    #7
Neuer Benutzer
 
Registriert seit: 19.07.2006
Beiträge: 4
Standard

aha ok danke
Alienuser ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.07.2006, 04:02 Nach oben    #8
Benutzer
 
Registriert seit: 20.08.2005
Beiträge: 91
Standard

Zitat:
Ich möchte gerne eine suche für meine Datenbank haben. Nun kennt ihr ein tut oder könnt ihr mir ein bischen erklären wie man so iene suche macht ß?
Hab mir Deinen Code nicht reingezogen, aber ein paar Hints
Zitat:
für Bares
:

-> Nicht die Quelle sondern die Treffer sortieren
-> Ergebnisse zwischenspeichern
-> Treffer nach "Punkten" sortieren ("Punkte" für Treffer in Titel/Beschreibung/.../Tabelle...)
-> Treffer nach Relevanzpunkten sortiert ausgeben
-> Idee (habbich jetzt nicht 100% die Ahnung eregi und like gesondert verwenden bzw. "Eindeutige" und "Übereinstimmungssuche" trennen, je Anwendungsfall


mfg
Homepagespeicher ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:27 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44