تب دوستان !!

این تاپیک 16 پاسخ و 2 مشارکت کننده دارد . آخرین آپدیت توسط :  کیوان علی محمدی ،‏ 3 سال و 3 ماه پیش .

این تاپیک تاکنون 1694 بازدید داشته است .

نویسنده پست
سه شنبه ، 13 آگوست 2013     12:08 ب.ظ #


elham.e

Subscriber
91 پست10 تاپیک

سلام من میخوام برای سربرگ دوستان در پروفایل کاربری یه کوئری بنویسم

ولی یه اشکال داشتم من یه جدول ایجاد کردم (friendship) که دارای فیلدهای friendshipID ,senderrequest,recieverRequestConfirmRequestهست

حالا من میخوام مثلا وقتی روی تب دوستان کلیک میشه بیاد تمام اون کسایی که من بهشون درخواست دوستی دادم و اونا accept کردن (فیلد ConfirmRequest ،

true باشه) و تمام کسایی که اونا به من درخواست دادن و من با درخواستشون موافقت کردم به همراه آواتارشون نمایش داده بشه (عکس هر یوزر در جدول tblUser هست)

من اینجوری نوشتم :

ولی توی قسمتی که باید حالا اونایی که به من درخواست دادنو انتخاب کنم گیر کردم اخه فک میکنم پایگاه دادم دچار افزونگی شده!

میشه کمکم کنید؟

0  تشکر
سه شنبه ، 13 آگوست 2013     6:51 ب.ظ #


کیوان علی محمدی

Authorplus
VIP
1792 پست4 تاپیک

سلام شما توی جدول friendship باید یه ستون به نام مثلا sender_id داشته باشی که این ستون کلید خارجی باشه برای جدول کاربران و reference بشه به همون ستون id توی جدول کاربران،حالا شما وقتی کاربر روی تب دوستان کلیک میکنه باید id فعلی کاربر رو داشته باشی (توی سشن یا هر چیز دیگه ای) بعد یه کوئری بنویس  شبیه این :

اینجوری تمامی کسانی که درخواست دوستی کاربر جاری و تایید کردن دریافت میکنی،حالا برای دریافت تمام کسانی که به کاربر جاری درخواست دوست دادن و تایید هم شدن باید یه ستون داشته باشی مثلا reciver_id که اونم دقیقا مثل ستون sender_id عمل میکنه حالا شما باید یه کوئری شبیه این بنویسی :

sender_id و reciver_id هر دو کلید خارجی به جدول کاربران هستن و id کاربران رو توی خودشون نگه میدارن.

1  تشکر
سه شنبه ، 13 آگوست 2013     7:09 ب.ظ #


elham.e

Subscriber
91 پست10 تاپیک

خب recieverRequest

,

senderRequest یعنی نام کاربری فرستنده درخواست و نام کاربری گیرنده درخواست

من میخواستم این 2 تا درخواست رو یه جا توی یک select انجام بدم حالا اینجوری که شما گفتین من دو تا repeater لازم دارم؟؟؟

برای اینکه از جدول user  عکس دوستان یه نفرو هم بردارم باید از Inner Join استفاده کنم؟؟

0  تشکر
سه شنبه ، 13 آگوست 2013     7:59 ب.ظ #


کیوان علی محمدی

Authorplus
VIP
1792 پست4 تاپیک

اینو تست نکردم ولی فکر کنم جواب بده :

برای اون آواتار کاربران هم اگه تصویر توی یه فیلد از همون جدول کاربران ذخیره شده بله از JOIN استفاده کنید و با id کاربر جاری اونو دریافت کنید.

 

1  تشکر
سه شنبه ، 13 آگوست 2013     9:06 ب.ظ #


elham.e

Subscriber
91 پست10 تاپیک

من اینجوری نوشتم ولی جوابی که میده اشتباهه چون که من نمیخوام همه دریافت کننده های درخواست و همه ارسال کننذه های درخواست رو نمایش بده من میخوام یه سری دریافت کننده و یه سری ارسال کننده رو نمایش بده که نام کاربری اون برابر با کوئری استرینگی هست که من دریافت میکنم از ادرس بالای سایت :

اینم کد مربوط به repeater :

0  تشکر
سه شنبه ، 13 آگوست 2013     10:24 ب.ظ #


کیوان علی محمدی

Authorplus
VIP
1792 پست4 تاپیک

سلام شما منظور منو متوجه نشدین من کل سطر هارو واکشی نکردم بلگه فقط اون سطر های که کاربر فعلی یا فرستاده یا دریافت کرده رو واکشی کردم،شما هم همینو میخواستی دیگه؟! اون کوئری JOIN شما اشتباهه،وقتی از JOIN استفاده میکنید باید قبل از نام ستون ها از نام جدول استفاده کنید.

یه نکته ای هم باید بگم که استفاده از JOIN باید با دقت انجام بگیره چون روی سرور فشار میاره.

1  تشکر
چهار شنبه ، 14 آگوست 2013     10:27 ق.ظ #


elham.e

Subscriber
91 پست10 تاپیک

اره درسته این قسمتشو فهمیدم اقا کیوان

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

ببنید درستش باید اینجوری نوشت :

اینجاشو میگم که اینجوری که من نوشتم ارور میگیره واسه ریپیتر اگه بخوایم قبلش نام جدولمون رو بیاریم باید چیکار کنیم من بدون اسم جداول نوشتمش اول ولی میومد اسم خود صاحب پروفایل رو هم به ازای تک تک اونایی که واسشون درخواست فرستاده بود رو چاپ میکرد

[quote=14424]یه نکته ای هم باید بگم که استفاده از JOIN باید با دقت انجام بگیره چون روی سرور فشار میاره.[/quote]

از این قسمتشم منظورتونو نفهمیدم ینی بهتره زیاد از join استفاده نشه در کوئری ها؟

0  تشکر
چهار شنبه ، 14 آگوست 2013     11:10 ق.ظ #


کیوان علی محمدی

Authorplus
VIP
1792 پست4 تاپیک

توی Repeater دیگه لازم نیست اسم جدولو بیارید،فقط توی کوئری باشه کافیه (چون شما از JOIN استفاده میکنید باید مشخص باشه کدوم ستون از کدوم جدوله).بعدشم فکر میکنم کوئری نیاز به تغییر داشته باشه،چون اینوطری نمیشه همه کسانی که با کاربری جاری در ازتباط هستن رو واکشی کرد.

الان با این کوئری تمام کسانی که کاربر جاری درخواست فرستاده رو میگیره (نام کاربریشون و تصویرشون)

حالا باید از یه کوئری دیگه هم استفاده کنید و تمام کسانی که برای کاربر جاری فرستادن رو دریافت کنه.

این راهیه که به ذهن من میرسه.

1  تشکر
چهار شنبه ، 14 آگوست 2013     11:16 ق.ظ #


elham.e

Subscriber
91 پست10 تاپیک

خب درسته منم بار اول همین کارو کردم ولی خواستم صرفه جویی کنم و اومدم دو تا select رو با هم یه جا نوشتم

[quote=14413]من میخواستم این 2 تا درخواست رو یه جا توی یک select انجام بدم حالا اینجوری که شما گفتین من دو تا repeater لازم دارم؟؟؟[/quote]

اینجام گفتم بهتون اگه اینجوری بخوام بنویسم نیاز هست که دو تا datatable داشته بام پس تبعا دو تا هم repeater میخواد

نظرتون؟

0  تشکر
چهار شنبه ، 14 آگوست 2013     1:13 ب.ظ #


کیوان علی محمدی

Authorplus
VIP
1792 پست4 تاپیک

یه بار هم دو تا کوئری بالا رو با UNION ALL به هم متصل کنید و اجرا کنید و برای ستون اول کوئری اول یه alias انتخاب کنید، اینطوری فقط یه datatable و یه Repeater نیاز دارید.

1  تشکر
پست 1 تا 10 (از مجموع 17 پست)

برای پاسخ دادن به این تاپیک باید وارد سایت شوید .