PDA

View Full Version : جستجو در پایگاه داده



parandweb
دوشنبه 10 تیر 1392, 17:51 عصر
با سلام من در سایتم دارای یک بانک اطلاعاتی هستم که سه تا ستون دارد یکی id و یکی username و fusername که در قسمت ستون نام کاربران به همراه نام خانوادگی آنها به فارسی وارد شده است حالا می خوام یک فرم جستجو در سایتم ایجاد کنم مثلا زمانی که نوشته شد مجید کلیه اسم هایی که با نام مجید هستش لیست شود اگر عبارت های دیگه هم جستجو شد مثلا مجید بابایی و یا نام مجید و غیره بازم کاربرانی که اسم آنها مجید هست و در بانک اطلاعاتی ذخیره شده است نمایش داده شود

می خوام زمانی که بانک اطلاعات را نمایش می دهد ردیف هایی که به متن جستجو نزدیک تر هستند در سطرهای بالا تر قرار بگیرند


ممنون میشم راهنماییم بفرمایید

H:Shojaei
دوشنبه 10 تیر 1392, 18:09 عصر
سلام
براي اين كار كه فكر كنم شما كد sql رو نياز دارين اين كدشه (به جاي مساوي از like استفاده ميشه):
SELECT * FROM `tbl_users` WHERE `user_name` LIKE 'مجيد';

mostafa272
دوشنبه 10 تیر 1392, 19:31 عصر
باید از like استفاده کنید. برای توضیحات بیشتر در مورد استفاده از like لینکای زیر رو ببینید:

http://www.w3schools.com/sql/sql_like.asp

http://www.techonthenet.com/sql/like.php

m.webgard
دوشنبه 10 تیر 1392, 19:41 عصر
سلام
دوست عزیز باید از کد زیر استفاده بشه(همرا با %)
SELECT * FROM `tbl_users` WHERE `user_name` LIKE '%مجيد%'
موفق باشید

parandweb
دوشنبه 10 تیر 1392, 22:05 عصر
با سلام از همه دوستان ممنونم من از کد زیر استفاده می کنم و خطا می دهد


<form method="get" action="search.php">
<p>
<input type="text" name="q" size="20">
<input type="submit" value="Search" name="searchBtn">
</p>
</form>
<?php

if(!isset($_GET["q"]))
die("The Search key word is not set!");

$key = $_GET["q"];
if($key == "")
die("The Search key word must be entered!");

$DbConn = mysql_connect("localhost", "root", "mysql" ) or die(mysql_error());
mysql_select_db("test",$DbConn) or die("Can Not Select DataBase Because: ". mysql_error());

$sql = "SELECT * FROM `text`
WHERE `title` LIKE "%".$key ."%" ";

$SearchResult = mysql_query($sql) or die(mysql_error(). "<br />SQL: ". $sql);

$TotalResults = mysql_num_rows($SearchResult);

if($TotalResults <= 0)
die("Not found any record for your key word!");

for($i = 0; $i != $TotalResults; $i++ )
{
//<!-- Start of Print Results...

$TextTitle = mysql_result($SearchResult, $i, 1);
$TextBody = mysql_result($SearchResult, $i, 2);

print($TextTitle ." ==> ". $TextBody ."<br /><br />");

//End of Print Results. -->
}

?>


خطایی که به من می دهد :


Warning: Division by zero in C:\Program Files\Ampps\www\test 2\search.php on line 20

Warning: Division by zero in C:\Program Files\Ampps\www\test 2\search.php on line 20
Query was empty
SQL:

engmmrj
دوشنبه 10 تیر 1392, 23:30 عصر
شما به این query که نوشتین search می گین؟! یه این می گن Find !

H:Shojaei
دوشنبه 10 تیر 1392, 23:42 عصر
خب كوئري اشتباست:
$sql = "SELECT * FROM `text` WHERE `title` LIKE %$key%";

engmmrj
دوشنبه 10 تیر 1392, 23:56 عصر
خب كوئري اشتباست:
$sql = "SELECT * FROM `text` WHERE `title` LIKE %$key%";
به اینم نمیشه گفت search !

H:Shojaei
دوشنبه 10 تیر 1392, 23:59 عصر
به اینم نمیشه گفت search !
ببخشيد
منظورتون رو نميفهمم؟؟؟؟؟

parandweb
سه شنبه 11 تیر 1392, 00:02 صبح
سلام آقای engmmrj (http://barnamenevis.org/member.php?262236-engmmrj) جناب میشه خواهش کنم شما سرچ رو به بنده یاد بدین دوست خوبم !!؟

دوستانی که براتون مقدور هست و می تونید یک مقاله در رابطه با جستجو یا همون SEARCH در دیتابیس رو آموزش بدهید با سپاس

parsboy
سه شنبه 11 تیر 1392, 17:23 عصر
شما به این query که نوشتین search می گین؟! یه این می گن Find !
با سلام کاملا موافقم.

engmmrj
سه شنبه 11 تیر 1392, 17:45 عصر
یه نمونه از search binary که اگه دنبال search حرفه ایی تر میگردی دنبال tree search برو
https://gist.github.com/thinkphp/1448754

engmmrj
سه شنبه 11 تیر 1392, 17:46 عصر
اینم tree search

http://www.phpclasses.org/package/7520-PHP-Insert-and-search-text-using-ternary-search-trees.html
اینم مبنای طراحیش
http://python.dzone.com/articles/algorithm-week-binary-search-0