 |
Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Comunitatea PHP Romania
|
| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
mikitu
Data înscrierii: 24/Feb/2003
Mesaje: 9
Locație: bucuresti
|
| Trimis: Lun Feb 24, 2003 11:14 am Titlul subiectului: Cautare in baza de date Mysql |
|
|
Salut!
Incerc sa fac un script care sa caute un cuvant intr-o tabela MySql ce contine un camp de tip text si sa-l afiseze diferit fata de celelalte cuvinte din acel text. Rezultatele trebuie sa contina acel cuvant sau acel cuvat articulat, nearticulat, feminin, masculuin plural, ... (asemanari fonetice).
Baza de date este foarte mare si as dori sa aflu daca se poate face acest lucru in principal din MySql.
Multumesc. |
|
| Sus |
|
mikitu
Data înscrierii: 24/Feb/2003
Mesaje: 9
Locație: bucuresti
|
| Trimis: Mar Feb 25, 2003 11:31 am Titlul subiectului: am facut un cod dar nu face cautarea dupa asemanari fonetice |
|
|
Cod:
if(!isset($ob) || $ob=='d') $order="online_date";
else $order="title";
if(!isset($s) || $s=='d') $ascdesc="desc";
else $ascdesc="asc";
if($caut==1)
{
$cuvant=$search;
$cuvant=trim($cuvant);
$cuvant_initial = ereg_replace (" ", "+", $search);
if ($cuvant=="") $cuvant="7rtrd5ds6ds6x";
$cuvant = strtolower ($cuvant);
$cuvant = ereg_replace ("," , " " , $cuvant);
$cuvant = ereg_replace ("_" , " " , $cuvant);
$cuvant = ereg_replace ("-" , " " , $cuvant);
$cuvant = ereg_replace ("=" , " " , $cuvant);
$cuvant = ereg_replace ("&" , " " , $cuvant);
$cuvant = ereg_replace ("\+" , " " , $cuvant);
$cuvant = ereg_replace ("[ ]+" , " " , $cuvant);
$i = strlen ($cuvant);
$search_arr=split(" ",$cuvant);
$q="select * from table where (status=1 or status=3) and ( ";
$cuvinte=array("pentru","de","la","in","dupa","cum","dar","iar","pe","chiar","si","ce","lui");
while(list($k,$v)=each($search_arr))
{
if( in_array(strtolower($v),$cuvinte) || strlen($v)==1) continue;
$cuv=$v;
$cuv1=strtoupper($v);
$cuv2=strtolower($v);
$cuv3=ucfirst($v);
$q.="cuv_cheie regexp '(^|[^a-zA-Z])$cuv2([^a-zA-Z]|$)' OR ";
}
$nq=strlen($q);
$q=substr($q,0,$nq-3);
$q.=" ) and online_date not like '%0000-00-00%' order by $order $ascdesc";
$res=mysql_query($q) or die(mysql_error());
$gasite=mysql_num_rows($res);
}
|
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |
|