جستجوی کامل یک جدول

htarahi

Member
سلام دوستان
می خوام بدونم چه طوری میشه تمام فیلد های یک جدول رو دنبال یک عبارت گشت ؟!:shock:
به عبارتی شما یه عبارت داری که نمی دونی توی کدوم فیلد جدول هست و برای همین مجبوری همه ی خونه های جدول رو چک کنی !!!:green:
البته این کار سرعت رو پایین می یاره ؛آیا راهی هست که این کاهش سرعت رو هم بشه جبران کرد ؟
 

mme_mme

New Member
سلام . شما مي تونيد از sql استفاده كنيد به اين صورت:
کد:
select * from tablename where fildname='yourtext'
باي
 

htarahi

Member
ایشون گفتن فیلد رو نمی دونند ! چطور می خوان جای fildname شما رو پر کنند ؟

دقیقاً:rose:
مثلاً فرض کنید یه جدول دارید که سطر و ستونش رو نمی دونید.
می خواید دنبال وجود یه عبارت مثلاً "Ali" در کل جدول بگردید ....
چکار می کنید ؟؟؟:-?
 

P.H.P

Member
سلام
Query برای نمایش تمام فیلد ها

PHP:
$search = "ali";

$table = "table";



$result = mysql_query("SHOW COLUMNS FROM " . $table);
if(mysql_num_rows($result) > 0)
{

    $i = 0;

    while($row = mysql_fetch_array($result))
    {

        if($i == 0)
            $query = "SELECT * FROM " . $table . " WHERE " . $row[0] . "=" . $search;
        else
            $query .= " or " . $row[0] . "=" . $search;

        $i++;
    }
}

echo $query;
ولی به نظر من به این صورت اصلا درست نیست :-?


موفق
 
آخرین ویرایش:

htarahi

Member
سلام
Query برای نمایش تمام فیلد ها

PHP:
$search = "ali";

$table = "table";



$result = mysql_query("SHOW COLUMNS FROM " . $table);
if(mysql_num_rows($result) > 0)
{

    $i = 0;

    while($row = mysql_fetch_array($result))
    {

        if($i == 0)
            $query = "SELECT * FROM " . $table . " WHERE " . $row[0] . "=" . $search;
        else
            $query .= " or " . $row[0] . "=" . $search;

        $i++;
    }
}

echo $query;
/PHP]
[/QUOTE]

سلام از ماست
ایول:)
دقیقاً همینو می خواستم:rose:
[quote="P.H.P, post: 975477"]
[ولی به نظر من به این صورت اصلا درست نیست :-?


موفق[/QUOTE]

چرا  ؟؟؟
منظورتون چیه ؟:-?
 
آخرین ویرایش:

ziXet

مدیر انجمن PHP/MYSQL
به نظر میاد ساختار جدولتون خیلی درست نیست که نیاز به همچین کوئری این پیدا کردید!
حداکثر باید با یکی دوتا or حل بشه!
 

P.H.P

Member
سلام از ماست
ایول:)
دقیقاً همینو می خواستم:rose:


چرا ؟؟؟
منظورتون چیه ؟:-?

خوب این کار صحیح نیست، شما 2 تا query میگیری که به یک query برسی؟

اگه بگی دقیقا میخوای چکار کنی شاید بهتر بتونم راهنمایی کنم
 

htarahi

Member
خوب این کار صحیح نیست، شما 2 تا query میگیری که به یک query برسی؟

اگه بگی دقیقا میخوای چکار کنی شاید بهتر بتونم راهنمایی کنم
ای به چشم :green:
ببینید :
واسه ی ثبت نام توی یه قسمت از سایتم از کاربر یه ای میل می گیرم.
یه جدول هم دارم که نزدیک 7-8 تا فیلد از نوع ای میل توش وجود دارن.
حالا من می خوام چک کنم که این ای میل جزو هیچ کدوم از اون 7-8 تا فیلد که هر کدومش هم 200-300 تایی ای میل توشون هست نباشه.
همین ...
 

Mr.Steres

Active Member
بانکتون به نظرم دست طراحی نشده خوب ... این چطوری هست دیگه ؟؟
 

ziXet

مدیر انجمن PHP/MYSQL
ای به چشم :green:
ببینید :
واسه ی ثبت نام توی یه قسمت از سایتم از کاربر یه ای میل می گیرم.
یه جدول هم دارم که نزدیک 7-8 تا فیلد از نوع ای میل توش وجود دارن.
حالا من می خوام چک کنم که این ای میل جزو هیچ کدوم از اون 7-8 تا فیلد که هر کدومش هم 200-300 تایی ای میل توشون هست نباشه.
همین ...
چرا تو 7-8 تا فیلد جداگونه ایمیل ذخیره میکنی؟!
 

htarahi

Member
PHP:
$search = "ali";

$table = "table";



$result = mysql_query("SHOW COLUMNS FROM " . $table);
if(mysql_num_rows($result) > 0)
{

    $i = 0;

    while($row = mysql_fetch_array($result))
    {

        if($i == 0)
            $query = "SELECT * FROM " . $table . " WHERE " . $row[0] . "=" . $search;
        else
            $query .= " or " . $row[0] . "=" . $search;

        $i++;
    }
}

echo $query;

لطف می کنید یه توضیح خلاصه راجب این خطوط بدید ؟
آخه درست جواب نمیده !:cry:
 

P.H.P

Member
خوب میتونی یه ایمیل بگیری به صورت ماتریسی بقیه فیلد ها رو 0-1 بدی

اگر هم بخوای به همون شکل اولیه کار کنی میتونی با دستور like بین ستون ها و رکورد ها رو جستجو کنی
 

P.H.P

Member
لطف می کنید یه توضیح خلاصه راجب این خطوط بدید ؟
آخه درست جواب نمیده !:cry:

مشکلی نداره؛ یه اتصال به دیتابیس انجام بده
PHP:
mysql_connect("localhost", "root", "");
mysql_select_db("database");

نام table رو هم تغییر بده
 

htarahi

Member
تابعی که من گذاشتم اینه :
PHP:
function email($email){
      if(!get_magic_quotes_gpc()){ $email = addslashes($email);}
      $result = mysql_query("SHOW COLUMNS FROM users");
      if(mysql_num_rows($result) > 0){
		  $i=0;
		  while($row = mysql_fetch_array($result)){
			  if($i==0){
				  $q="select * from users where ".$row[0]." = '$email'";}else{
	              $q.=" or ".$row[0]." = '$email'";}
			  $i++;
		  }
	  }
      $result = mysql_query($q, $this->connection);
      return (mysql_numrows($result) > 0);
   }
البته به دیتابیس از قبل متصل شدم ...
این تابعی هست که گذاشتم.ببینید کجاش اشکال داره
درضمن از نظرات دوستان استفاده و تشکر می کنم اما فعلاً این کاریه که شده و جدول فعلاً به ابن صورته:paint:
تعجب من از اینه که php یه تابع واسه جستجوی کلی نداره !!!:shock:
 
آخرین ویرایش:

P.H.P

Member
تابع مشکلی نداره ، error میده؟ چه errorی ؟

تعجب من از اینه که php یه تابع واسه جستجوی کلی نداره !!!
چرا الکی عیب میزاری؟ میخوای بده یه تابع مخصوص کارت بنویسن
 

Mr.Steres

Active Member
تعجب من از اینه که php یه تابع واسه جستجوی کلی نداره !!!

اخه مشکل از پی اچ پی بنده خدا نیست مشکل از طراحی نامناسب بانک شماست کافی بود یک تیبل با 2 فیلد درست می کردید یکی ای میل یکی هم برای نوع ایمیل و مثلا اگر می خواستید به کاربری ربطش بدین کافی بود یکی فیلد هم مثلا به اسم یوزر ای دی اضافه می کردید ... و برای جستجو انقدر مشکل نداشتید ...
 

htarahi

Member
تابع مشکلی نداره ، error میده؟ چه errorی ؟


من تابع رو گذاشتم که اگر ایمیلی در جدول users بود اعلام کنه
اما الان به هر ایمیلی جواب بله میده
به عبارتی چه ایمیل در جدول باشه یا نباشه خروجی یه چیزه:-?

چرا الکی عیب میزاری؟ میخوای بده یه تابع مخصوص کارت بنویسن


حالا عزیزم شما چرا به خودت می گیری ؟!
قصد جسارت به شما رو نداشتم:green:
اگر چیزی گفته شد تنها در جهت رفع کاستی هاست.
درضمن ،درسته که الان کار من گیر این کاستی PHP -یه اما آیا اینکه PHP باید امکانات جستجو در تمام فیلد های یک جدول رو داشته باشه انتظار زیادیه ؟؟؟
اونم PHP-ای که اساسش بر پایه ی جدول هست !

بگذریم ...
نیت من از طرح این سؤال این بود که اگر تابعی یا دستوری هست در PHP که این کارو می کنه هم یاد بگیرم هم کارم را بیفته.خیر و خلاص:wink:
 

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

بالا