نمایش نتایج 1 تا 3 از 3

نام تاپیک: یک سوال مبنایی درباره ارتباط php با mysql

  1. #1
    کاربر دائمی
    تاریخ عضویت
    بهمن 1392
    محل زندگی
    Earth
    پست
    144

    یک سوال مبنایی درباره ارتباط php با mysql

    سلام دوستان برنامه نویس

    فرض کنید ما دو تا تیبل تو دیتا بیس داریم به نام های people و friendship که اولی مثلا مشخصات بچه های یه کلاسه و دومی میگه که کی با کی دوست بوده و برای هر دوستی یه ردیف تو دیتا بیس ایجاد میکنه کالمن هاشون به شرح زیره:

    people : unique_id, name, last_name
    friendship: first_unique_id, second_unique_id

    خب میدونیم که وقتی ما یه فرم معمولی داریم که میخاد یه سری اطلاعات از دیتا بیس بگیره یا تغییر بده خب خیلی اسون یه ریکوئست میفرستیم و میگیم سلکت فلان چیز از بهمان تیبل و بعد نتایج رو میگیریم و نشون میده تو بروزر.
    حالا فرض کنید ما میخایم کوئری رو که فرستادیم نتایج رو بگیره از یه تیبل و بر مبنای نتایجی که گرفته نتایج دیگری رو از تیبلی دیگه بگیره و بعد به کد php ما ارسال کنه.
    مثلا میخام بچه هایی که اسمشون سارا هست رو از تیبل people انتخاب کنه (مثلا 5 نفر اسمشون سارا هست) و بعد تمام کسانی که با این 5 تا سارا ها دوست شده اند رو از تیبل friendship پیدا کنه بهمون بده.

    حالا میشه بفرمایید که باید چطور کوئری بزنم برای این مساله؟
    آیا اصلا این مسئله راه حلی داره یا من مجبورم دو سری کوئری بزنم و تو اولی یونیک ایدی سارار ها رو بگیرم و بعد برای هر کدوم تو یه لوپ یه کوئری بزنم و دوستاشون رو پیدا کنم؟ که خب البته اینجوری درخاست زیادی به سرور ارسال میشه و بهینه نیست طبیعتا.

    پیشاپیش از وقتیکه شما دوستان میگذارید بسیار ممنونم.

  2. #2
    کاربر دائمی آواتار plague
    تاریخ عضویت
    آبان 1388
    محل زندگی
    اهواز
    پست
    2,360

    نقل قول: یک سوال مبنایی درباره ارتباط php با mysql

    نه تو حلقه کوئری کوئری زدن کار اشتباهیه
    اول با یه گوئری همه یوزر ها رو میخونی بعد میزاری تو حلقه و آیدی هاشون رو در میاری توی یک آرایه بعد همه دوستان رو با یک کوئری از اون 1 آرایه میخونی
    $users = select * from users where name like '%sara%'
    $user_ids = [];
    foreach($users as $user )
    $user_ids[]= $user['id'];

    $friends = select * from friends table where first_id IN (explode(',' , $user_ids ) ) OR second_id IN (explode(',' , $user_ids ) )


    بعد میتونی با یه حلقه سوم نتایج 2 کوئری رو به هم وصل کنی




    $final_export = [] ;
    foreach($users as $user )
    {
    $this_user = $user ;
    $this_user['friends'] = [] ;
    foreach($friends as $friend )
    {
    if($friends['first_id'] == $user['id'] || $friends['second_id'] == $user['id'])
    $this_user['friends'][] = friends;
    }

    $final_export[] = $this_usre ;

    }

    چند نکته
    1 - من این رو همینجوری نوشتم تا کانسپتش رو متوجه بشی حتما اررور سینتکس داره
    2 - البته یه سری توابع شاید باشه که بعضی کارارو برات ساده تر کنه مثلا آیدی های کاربر ها رو شاید با pg_fetch_all_columns بتونی بخونی نیاز نباشه تو حلقه بزاری من ساده ترین شکل ممکن رو گفتم
    3 - اگه از فریم ورک استفاده کنی احتمالا یه راهکاری برای اینکار داره نخاد دستی همش رو انجام بدی مثلا لاراول با استفاده از relation ها همه اینکار رو اتومات انجام میده

  3. #3
    کاربر دائمی آواتار Unique
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    ایران - اصفهان
    پست
    3,199

    نقل قول: یک سوال مبنایی درباره ارتباط php با mysql

    ببین ! مثالی که زدی را باید تفسیر کنی. شما رکوردهایی از جدول friendship را میخوای که یکی از طرفین اسمش سارا نباشه (یعنی اگه دو تا سارا باشن و با هم دوست باشن نادیده گرفته میشن !)
    select t2.unique_id,t3.unique_id from friendship t1 left join people t2 on t1.unique_id = t2.first_unique_id left join people t3 on t1.unique_id = t3.second_unique_id where t2.name <> t3.name and (t2.name = 'سارا' or t3.name = 'سارا')


    حالا توی حلقه خروجی اونایی که اسمشون سارا نیست را چاپ کن که میشه دوستان کسانی که اسمشون سارا هست!

تاپیک های مشابه

  1. سوال: مشکل در برقراری ارتباط php با mySQL
    نوشته شده توسط lovlyson2020 در بخش PHP
    پاسخ: 4
    آخرین پست: چهارشنبه 05 آبان 1389, 21:18 عصر
  2. سوال: مشکل در برقراری ارتباط php با mySQL
    نوشته شده توسط lovlyson2020 در بخش سایر پایگاه‌های داده
    پاسخ: 0
    آخرین پست: سه شنبه 04 آبان 1389, 12:01 عصر
  3. سوال: مشکل در ارتباط php با mysql در وب سایت
    نوشته شده توسط Armin62 در بخش PHP
    پاسخ: 2
    آخرین پست: پنج شنبه 12 آذر 1388, 13:05 عصر
  4. سوال در مورد اتصال php با mysql
    نوشته شده توسط mehdibarati در بخش PHP
    پاسخ: 11
    آخرین پست: پنج شنبه 22 مرداد 1388, 19:21 عصر
  5. مشکل در ارتباط php با mysql پس از نصب wamp !!!
    نوشته شده توسط wayiran در بخش PHP
    پاسخ: 8
    آخرین پست: چهارشنبه 21 تیر 1385, 08:44 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •