PDA

View Full Version : دستور عجیب اس کیو ال



prg_mail
یک شنبه 11 فروردین 1392, 20:36 عصر
ما میخاهیم رشته ای را در اس کیو ال جستجو کنیم
مثلا جستجو میکنیم "کتاب" خروجی خواهد شد رکوردهایی که عنوانشان "کتاب" است
اگر با like جستجو کنیم خروجی کلمات بیشتری خواهد شد مثلا "کتاب فارسی"

حالا این دستور اس کیو ال نیاز است :
اگر عبارت "من یک برنامه نویس مبتدی هستم" رو سرچ کردیم کلیه رکوردهایی رو نمایش بده که حاوی یکی از کلمات عبارت جستجو شده باشد :
من
یک
برنامه
نویس
مبتدی
هستم

برای مثال این عبارات را خروجی بده

من ایرانی ام
چرک نویس من گم شده
دوره آکادمی برای افراد مبتدی
من
یک کیلو پسته
برنامه کودک و نوجوان



select * ....

amirsajjadi
یک شنبه 11 فروردین 1392, 21:01 عصر
ابتدا باید رشته ها رو براساس فضای خالی split کنید و سپس تک تک اونا رو توی جدول با دستور like جستجو کنید. دقت داشته باشید که دستور split توی اسکیوال وجود نداره (یک سرچی توی گوگل بزنید پیدا میکنید).

masiha68
یک شنبه 11 فروردین 1392, 21:51 عصر
با استفاده از تابع explode() تموم خط فاصله ها رو جدا کن و بعدش یه ارایه بهت میده که می تونی اون ها رو دونه دونه توی متغییر بریزی و سرچتو انجام بدی

prg_mail
یک شنبه 11 فروردین 1392, 21:54 عصر
میشه دستور اس کیو الشو لطف بفرمایید

masiha68
یک شنبه 11 فروردین 1392, 23:02 عصر
<?php

$gettext=$_POST['srch'];
$pop=split(" ",$gettext);
$num= count($pop);
for($i=1;$i<=$num;$i++)
{
echo $pop[$i];
$sql=mysql_query("select * from post where title='$pop[$i]' ") or die(mysql_error());
}

?>
<form method="post">
<input type="text" name="srch">
<input type="submit" value="serching :)">

</form>
البته توصیه می کنم این کارو نکنین چون فشار زیادی روی سرور میاد و منطقی نیست. از دوستان اگه کسی راه بهتره بلده بگه ثواب داره :)

arenaw
دوشنبه 12 فروردین 1392, 04:24 صبح
برای اینکه رکوردهایی که میخوایدو با یه کوئری بگیرید، باید از OR استفاده کنید. این کد رو امتحان کنید:

$look=$_POST['srch'];
if($look){
$look_words = explode(" ",$look);
$i = 0;
$sp = null;
$sql_look = null;
$field = 'fname';
while($t = @$look_words[$i++]){
$sql_look.= "$sp `$field` LIKE '%$t%'";
$sp = ' OR';
}
$result = mysql_query("SELECT `$field` FROM `table` WHERE $sql_look");
if($result){
while($a = mysql_fetch_row($result))
echo $a[0].'<br/>';
}else{
echo mysql_error();
}
}

prg_mail
دوشنبه 12 فروردین 1392, 10:32 صبح
میشه فقط یه خط دستور select شو بدین
نگران نباشید من حرفه ای ام if , eslse بلدم :لبخند:

MRmoon
دوشنبه 12 فروردین 1392, 12:00 عصر
این یه نمونه ی سادست با استفاده از دستورات [explode , foreach , mysql_query,strpos] استفاده کن ببین خوبه:


<?php
/* builder :::: Mohammad */
$text = "I love Iran";
$field_name = 'Text';
$text = explode(" ",$text);
$sql_like='';
foreach($text as $t)
{
$sql_like .= $field_name."LIKE '%".$t."' OR ";
$sql_like .= $field_name."LIKE '%".$t."%' OR ";
$sql_like .= $field_name."LIKE '".$t."%' OR ";
}
$sql_like = strpos($sql_like,0,-3);
/* $sql_like now is(Text LIKE '%I' OR Text LIKE '%I%' OR Text LIKE 'I%' OR Text LIKE '%love' OR Text LIKE '%love%' OR Text LIKE 'love%' OR Text LIKE '%Iran' OR Text LIKE '%Iran%' OR Text LIKE 'Iran%')*/
$sql_query = "SELECT * FROM your_table WHERE ".$sql_like."";
$query = mysql_query($sql_query);
?>

prg_mail
دوشنبه 12 فروردین 1392, 16:36 عصر
از هاستینگ تماس گرفتند گفتن پولتونو پس میدیم لطفا از شرکت دیگه ای هاست تهیه کنید

prg_mail
دوشنبه 12 فروردین 1392, 16:42 عصر
یه سوال دیگه
رکوردهایی رو پیدا کنید که کاما توشون نیست
برای مثال اگه ما 3 مقدار زیر رو داشته باشم :

علی رضا محسن
رضا امیر ، علی
محمد بهرام - رضایی

باید رکورد اول و سوم را خروجی بده، چون دومی ، داره

دستور اسکیو الش ؟

prg_mail
سه شنبه 13 فروردین 1392, 23:10 عصر
اساتید راهنمایی میفرماید

masiha68
چهارشنبه 14 فروردین 1392, 01:08 صبح
دوست عزیز قبل اینکه یه متغییر رو واسه جستجو بفرستی داحل کوئری بهتره اونو تفکیک کنی . اون چیزی هم شما میخوای با یه دستو if درست میشه مثلا :



if($pop !=',')
{

}

در کل وقتی می خوای یه کاری برعکس انجا بشه یا مثلا میخوای یه چیزی عکس پیدا بشه بهتره از ! استفاده کنی . مثلا
isset یعنی وجود داره ولی !isset یعنی وجود نداره
اینایی رو که گفتم با دستورات بالایی قاتی کنی و یه چن روزی رو مشغول باش : دی
اونجوری که تو داری دستورتو پیشرفته میکنی فک کنم واسه جواب سوال بعدیت با کسی که اس کیو ال رو ساخته بیاد جواب بده :)

prg_mail
چهارشنبه 14 فروردین 1392, 13:10 عصر
ای نامرد منو انداختی تو حلقه

while(true)
هی میگم خدا اینا چه ربطی به اس یکیو ال داره

prg_mail
چهارشنبه 14 فروردین 1392, 13:20 عصر
بابا میشه not like
اینم مرجعش :

پروژه (http://www.poroje.com/)

masiha68 جان بی حساب شدیم.

masiha68
چهارشنبه 14 فروردین 1392, 23:39 عصر
واسه حل هر مسئله حداقل دو راه وجود داره
یه راه واسه ادم های تنبل و یک راه واسه نابغه ها
اگه یه نابغه راه حل ادم تنبل رو انتخاب کنه مسئله رو چنان پیچیده می کنه که حلش محال میشه :دی
من با کسی حساب مساب ندارم ولی خب خدا رو شکر هم منه یه چیزی یاد گرفتم هم شما (تا حالا ندیده بودم کسی از no like استفاده کنه )
خوش باش