php.de
Alt 02.07.2006, 09:01  
Benutzer
 
Registriert seit: 22.02.2006
Beiträge: 61
Alienuser
Standard Suche

Hallo,

ich wollte gerne auf miener seite (da ich die für meine Schule mache) eine Praktika DB machen. Das geht auch alles super das eintragen und wieder ausgeben. Meine Frage ist jetzt, wie man eine Suche berwirklichen könnte. Die DB sieht bis jetzt so aus:

- schülername
- firma
- berufsbild
- gefunden (da kann man auswählen wie das Praktikum war (gut und schlecht))
- kommentar
- time (die zeit als das eingetragen wurde)
- homepage (der Firma)

Nun ich habe schon mit einer Suche begonnen (gebe euch unten auch den Quellcode) aber jetzt wollte ich (da die suche scon länder auf meiner seie besteht) die suche weiter ausbauen, das es auch nach der Tabelle ic1_praktikum sucht und ausgibt. Kann mir vieleicht jemand helfen das zu erweitern ?

Hier der Code der search.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",''.$v.'',$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&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  = 'Suchen &raquo; '.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();

?>
Währe super wenn ihr mir helfen könnt !

Gruß
Lars
Alienuser ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 02.07.2006, 09:55  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ist mir jetzt zuviel Code, aber woran hängst du denn? Eine Suche kannst du entweder mit LIKE auf entsprechende Text-Felder oder mit einer Volltext-Suche MATCH AGAINST [1] durchführen.

Code:
SELECT * FROM tabelle WHERE spalte LIKE '%suchwort%'
[1] http://dev.mysql.com/doc/refman/5.1/...xt-search.html
Zergling-new ist offline  
Alt 02.07.2006, 10:07  
Benutzer
 
Registriert seit: 22.02.2006
Beiträge: 61
Alienuser
Standard

also die news geht super. ich wollte nur das sie noch die Tabelle ic1_praktikum durchsucht !!!!
Alienuser ist offline  
Alt 02.07.2006, 10:29  
Benutzer
 
Registriert seit: 22.02.2006
Beiträge: 61
Alienuser
Standard

kann mir niemand dabei helfen ?
Alienuser ist offline  
Alt 02.07.2006, 14:38  
Erfahrener Benutzer
 
Registriert seit: 21.07.2005
Beiträge: 209
pepe24
Standard

(SELECT feld1, feld2 FROM table1 WHERE blabla) UNION (SELECT feld1, feld2 FROM table2 WHERE blabla)


Nun nochmal ein Edit, nachdem ich den Code durchgesehen habe... Das sieht für mich eher nach einer Forensuche aus als nach der, wie Du sie beschrieben hast! Wie z.b. heisst die Datentabelle, in der bisher die Daten gesucht wurden?

Außerdem wirft sich die Frage auf... Hast Du das wirklich selbst geschrieben? Ich finde das ziemlich elegant und denke mir, dass es für denjenigen der das geschrieben hat, ein Witz sein sollte, die Suche auf einen weiteren 'table' zu erweitern! Naja wie auch immer. Wenn Du mir oben gesuchte Stelle nennst, bzw. den Namen der bisher durchsuchten Tabelle, dann versuche ich weiter, Dir zu helfen.
pepe24 ist offline  
Alt 02.07.2006, 16:31  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
Zitat von pepe24
Außerdem wirft sich die Frage auf... Hast Du das wirklich selbst geschrieben?
Das würde zumindest erklären, warum er mit meiner Antwort nichts anfangen konnte.

Ist doch kein Problem fremden Code zu benutzen, dafür sind die Skript-Archive ja da, und es ist auch kein Problem wenn man da nicht gleich durchsteigt.

Aber gibs doch wenigstens zu bzw. erwähn es einfach kurz.

Wenn man den Code so sieht sollte man meinen du kannst PHP und MySQL einigermaßen.
Zergling-new ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Verbesserungsvorschläge: Design und Suche Manko10 Board-Support 3 15.06.2008 16:21
Suche 'strahlfreudigen' Router nikosch Off-Topic Diskussionen 6 22.01.2008 19:06
Suche in Office Dateien mit Index Beatbox Off-Topic Diskussionen 6 09.02.2007 15:34
Suche freien Mitarbeiter zur Suche von Linktauschpartnern wiretheless Trash 0 05.08.2006 14:00
suche funktion: suche alles zwischen notyyy PHP Tipps 2006 7 05.06.2006 20:46
[Erledigt] Erweiterung der Suche PHP Tipps 2007 2 01.12.2005 19:30
Suche in Datenbank realisieren Unbekanntes_Pferd PHP Tipps 2007 4 09.11.2005 16:22
suche lösungsweg für komplexe suche, md5hash PHP Tipps 2005-2 3 19.07.2005 17:57
stichwort suche boehseronkel Datenbanken 2 14.07.2005 09:28
mal wieder eine suche lomtas Datenbanken 0 12.07.2005 11:03
Suche FÄHIGE Coder für Mega-Projekt NONNNNN Beitragsarchiv 1 14.04.2005 01:54
Suche Job als Entwickler/Designer (Raum Bonn o. Telearbeit) Beitragsarchiv 23 01.03.2005 14:00
Suche mehrere Images........ Beitragsarchiv 7 10.01.2005 08:07
Suche Php(evt Mysql) Leute Beitragsarchiv 14 12.12.2004 15:15

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql select order by descl limit#, forum_get_ordner, aubt shule, php mysql dbliste, if (select * from tabelle where username like \'%suchwort%\') php

Alle Zeitangaben in WEZ +1. Es ist jetzt 01:24 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.