 |
19.07.2006, 14:03
| Nach oben
#1 | | Neuer Benutzer
Registriert seit: 19.07.2006
Beiträge: 4
| 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) < 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']); $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ä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> » </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)."&: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).
|
| |
19.07.2006, 14:26
| Nach oben
#2 | | Martin Breuer
Registriert seit: 17.08.2005 Ort: Berlin
Beiträge: 1.642
|
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.
|
| |
19.07.2006, 14:28
| Nach oben
#3 | | Neuer Benutzer
Registriert seit: 19.07.2006
Beiträge: 4
|
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 !
|
| |
19.07.2006, 14:52
| Nach oben
#4 | | Martin Breuer
Registriert seit: 17.08.2005 Ort: Berlin
Beiträge: 1.642
|
Also als SQL-Statement könntest du sowas verwenden: SQL Code: 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!
|
| |
19.07.2006, 15:05
| Nach oben
#5 | | Neuer Benutzer
Registriert seit: 19.07.2006
Beiträge: 4
|
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
|
| |
19.07.2006, 15:15
| Nach oben
#6 | | Martin Breuer
Registriert seit: 17.08.2005 Ort: Berlin
Beiträge: 1.642
|
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.
|
| |
19.07.2006, 15:17
| Nach oben
#7 | | Neuer Benutzer
Registriert seit: 19.07.2006
Beiträge: 4
|
aha ok danke
|
| |
20.07.2006, 04:02
| Nach oben
#8 | | Benutzer
Registriert seit: 20.08.2005
Beiträge: 91
| 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 : -> 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 |
| | |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | | | | Themen-Optionen | Thema durchsuchen | | | |
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. HTML-Code ist aus. | | | Alle Zeitangaben in WEZ +2. Es ist jetzt 18:27 Uhr.
|