سوال در مورد (جستجو گر با پی اچ پی)

3dsmax

Member
سلام من یک برنامه دارم که با پی اچ پی سرچ می کنه و مطلب را پیدا می کنه ولی می خوام 3 تا دستور دیگه براش بزارم که هم هر یک از کلمات و کل کلمات و کل عبارت را سرچ کنه حالا می خوام ببینم چطور می شود این کار را کرد؟؟
ممنون می شوم اگه کمکم کنید!!




form.html


<form action = "search.php" method = "post">
<table border="0" cellpadding="0" cellspacing="0" align = "center">
<tr>
<td>
<b>Search Book</b>
<select name = "field">
<option value = "bookTitle"> By Title
<option value = "bookIsbn"> By ISBN
<option value = "bookAuthor"> By Author
</select>
<input type = "text" name = "query" size = "25" maxlength = "50" >
<input type="submit" value= " Search " name="submitButton">
</td>
</tr>
</table>
</form>



search.php

<?php>
$field = $_POST['field'];
$q = $_POST['query'];
$q = trim($q);
$db = mysql_connect('localhost','root','');
if(!$db)
{
echo "Cannot connect to MySQL";
exit;
}
if (!mysql_select_db('publisher'))
{
echo "cannot open bank" ;
exit;
}
switch($field)
{
case 'bookTitle' :
$query = "select * from books where title='$q'";
break;
case 'bookIsbn' :
$query = "select * from books where isbn = '$q'";
break;
default:
$query = "select * from books where author = '$q'";
}
$result = mysql_query("$query");
if(!$result)
{
echo " Cannot excute query.";
exit;
}
echo '<table border = "1" align = "center">';
echo "<tr>
<th> ISBN</th>
<th> Author</th>
<th> Title </th>
<th> Price </th>
<th> page </th>
</tr>";
$num = mysql_num_rows($result);
for($i = 0; $i < $num; $i ++)
{
$row = mysql_fetch_row($result);
echo '<tr>';
echo "<td><b> $row[0]</b> </td>";
echo "<td><b> $row[1]</b> </td>";
echo "<td><b> $row[2]</b> </td>";
echo "<td><b> $row[3]</b> </td>";
echo "<td><b> $row[4]</b> </td>";
echo '</tr>';
}
echo "<tr> <td><b> Number = $num </td></tr>";
echo "</table>";
mysql_close();
echo "<p></p>";
?>
 

ARTA_ADOBE CO

Active Member
کوئری هایی که هست تماما روی کل کلمات یا همون کل عبارت دارند کار میکنند.
این برنامه همون برررسی تک تک کلمات رو نداره...
یعنی شما میخواهید مثلا اگر عبارت " روانشناسی بالینی " سرچ شد.
برای رواشناسی جدا و برای بالینی هم جدا و یک کوئری هم هر دو باهم (چیزی گه الان هست ) از دیتابیس کوئری بگیره؟
 

NabiKAZ

Well-Known Member
با این کد نویسی مزخرفت... !


ابتدای عبارت با salam شروع شده باشد:
PHP:
SELECT * FROM books WHERE title LIKE 'salam%'

عبارت به salam ختم شده باشد:
PHP:
SELECT * FROM books WHERE title LIKE '%salam'

عبارت شامل salam باشد:
PHP:
SELECT * FROM books WHERE title LIKE '%salam%'

عبارت با salam شروع شده باشد و به salam ختم شده باشد:
PHP:
SELECT * FROM books WHERE title LIKE 'salam%' AND title LIKE '%salam'

عبارت با salam شروع شده باشد یا به salam ختم شده باشد:
PHP:
SELECT * FROM books WHERE title LIKE 'salam%' OR title LIKE '%salam'



نبی
 

Goroop.ir

Member
اقا نبی اگر اجازه بدی !
فکر نکنم دیگه توضیح بخاد % یعنی در تمام متن !
مثلا شما یک متن در دیتا بیس دارید که نوشته :
سلام دوست عزیز به فروم مجید انلاین خوش امدید
حالا شما میخاید کلمه ی مجید انلاین را سرچ کنید که باید حتما از % استفاده کنی یعنی :

PHP:
$text = $_POST['text'];
mysql_query("SELECT * FROM books WHERE title LIKE '%$text%'");

خوب ولی اینی که اقای جعفر نژاد نوشتن توی کتاب برای جستجو کردن همان متن میباشد
مثلا شما در دیتا یک متن دارید :
سلام علی چطوری ؟
و اگر بخاید فقط کلمه ی علی رو سرچ کنید هیچ موردی پیدا نمیکنه ولی اگر بخای جمله ی سلام علی چطوری ؟ رو جستجو کنی مورد رو پیدا میکنه .





موفق باشید.
 

iranmedia

Member
دوستان من خیلی وقت هست دنبال این اسکریپت سرچ پی اچ پی می گردم لطفا دیتا بیس و ... هم با راهنما به من بدید
ممنون می شم
 

yakoza

Well-Known Member
PHP:
select * from `table` where match (نام فیلد) against ('کلمه مرود نظر' in boolean mode)

حالا عین اینکه تو گوگل سرچ میکنی
مثلا با یه سوئیچ میگی که اگر عین عبارت بود "کلمه مورد نظر" تو دابل کوت میزاری

گرفتی چی شد؟
 

3dsmax

Member
PHP:
select * from `table` where match (نام فیلد) against ('کلمه مرود نظر' in boolean mode)

حالا عین اینکه تو گوگل سرچ میکنی
مثلا با یه سوئیچ میگی که اگر عین عبارت بود "کلمه مورد نظر" تو دابل کوت میزاری

گرفتی چی شد؟

یعنی به جایی ('کلمه مرود نظر' in boolean mode) ,
$q بزارم

اگه می تونید همون کد بالایی رو تغییر بدبد بزارید
 

yakoza

Well-Known Member
ببین یه فانکشن بنویس که پارامترهاش کلمه مورد نظر و نام فیلد و نوع جستجو باشه باشه

بعد اون کوئری که من نوشتم رو بنویس جایگزاری کن

خودت بنویس تا یاد بگیری

داستان همون ماهی نده ، ماهیگیری یاد بدست

اوکی؟
 

Goroop.ir

Member
من اینو تازه نوشتم با یکم تغییرات میتونی اون چیزی که داخل سرت هست رو روش پیداه کنی .
خیلی هم ساده هستش .

خوب این فرم جستجوش هستش
PHP:
<form method="POST" action="">
<p>
<select size="1" name="mozoo">
 <option value="m">موضوع</option>
 <option value="t">متن</option>
 </select>
</p>
<br>
 <p><input type="text" name="text" size="20"><input type="submit" value="Submit" name="submit"></p>
<br>
</form>

اینم همون کد جستجوش هست .
PHP:
<?
$text = $_POST['text'];
$mozooh = $_POST['mozoo'];
include "../config.php";                //   فایل اتصال به دیتابیس
if (!$text)
{
echo " متن مورد نظر خود را در فیلد وارد نماید ";
}else{
// شروع حلقه ی سویچ
  switch ($mozooh)
  {
    case 'm' :
//                                    جستجو در موضوع
$result = mysql_query("SELECT * FROM Tname WHERE name LIKE '%$text%' order by id");
while($r=mysql_fetch_array($result))
{
$text=$r["text"];
$id=$r["id"];
echo "ID:$id    متن مورد نظر : $text   <br><hr> ";
}
      break;
//                         جستجو در متن
    case 't' :
$result = mysql_query("SELECT * FROM news WHERE text LIKE '%$text%' order by id");
while($r=mysql_fetch_array($result))
{
$text=$r["text"];
$id=$r["id"];
echo "ID:$id    متن مورد نظر : $text   <br><hr> ";
}
      break;
   }
//  پایان سویچ
if (!$id)
{
echo " جستجوی شما یافت نشد ";
}
}
 
?>
 
آخرین ویرایش:

NabiKAZ

Well-Known Member
سلام ؛
به قول دوستمون yakoza ، قراره ماهیگیری یاد بدیم(اگر بلد باشیم)، نه اینکه ماهی دستتون بدیم.

search111.JPG

طبق تصویری که ارسال کردی:

هر یک از کلمات: برای این باید هر یک از کلمات جداگانه جستجو بشن و اگر هر یک در عبارت وجود داشت اون رکورد رو نمایش بده. پس اولین کاری که باید کرد اینه که کلمات رو تفکیک کنیم. هر کلمه با یک فاصله از یکدیگر جدا شدند. پس ابتدا توسط تابع split کلمات در آرایه ریخته میشه و هر مقدار آرایه بخشی از query رو تشکیل میده که البته هر کدوم با OR از هم جدا میشن.
یعنی بدین صورت:
PHP:
<?php
$string = 'salam khoobi che khabar';
$words = split(' ', $string);
$query = '';
foreach ($words as $key => $val)
{
    $operation = ($key != 0) ? " OR " : "";
    $query .= $operation . "`title` LIKE '%$val%'";
}
$query = 'SELECT * FROM `book` WHERE ' . $query;
echo $query;
?>
همه کلمات: دقیقاً مثل حالت قبل فقط بجای OR از AND استفاده میشه.


دقیقاً همین عبارت: به شکل زیر میشه:
PHP:
$string = 'salam khoobi che khabar';
$query = "SELECT * FROM `book` WHERE `title` LIKE '%$string%'";
echo $query;
خیلی سعی کردم ماهی دستتون ندم ولی فکر کنم کبابش هم کردم!
نوش جان :wink:

نبی
 
آخرین ویرایش:

iranmedia

Member
دوستان من زیاد با کد های php آشنا نیستمک خواهشا این فایل کامل شده اش را برای دانلود قرار دهید
آقای 3D MAXشما گفتی که درست شد برام می گذاری پس چی شد؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
خواهشا سریعتر
 

Goroop.ir

Member
iranmedia کدی که گزاشتم چی بود پس ؟

خوب اون کد همون چیزی هست که شما میخاهید .

اگر به موضوعی که اقا نبی اشاره کردند هم توجه کنید میتونید طبق همون عکسی که دوست عزیز ما yakoza جان دادند میتونید روی برنامه پیاده کنید

حالا اگر کسی مشکلی داشت بگه .
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا