View Full Version : ارسال tag به جدول قبل از ارسال پست
sara_aryanfar
پنج شنبه 25 اسفند 1390, 20:48 عصر
با سلام خدمت دوستان من برای کلمات کلیدی خودم یه جدول دارم که سه تا فیلد داره یکی ایدی خودش یکی کد خبر که کلمه مربوط به اونه و یکی هم خود کلمه من قصد دارم در صفحه ارسال خبرم قبل از ارسال خبر کلمات کلیدی رو داخل جدول اینسرت کنم تنها مشکلی که دارم اینه که هنوز پست ارسال نشده ودر نتیجه هنوز کد خبری که باید برای هرکلمه بزارم تولید نشده چکار می تونم بکنم؟
A.S.Roma
پنج شنبه 25 اسفند 1390, 22:59 عصر
چرا باید قبل از Insert خبر Tag رو Insert کنید !؟
vof.ir
پنج شنبه 25 اسفند 1390, 23:07 عصر
سلام دوست عزیز بهتر نیست این کار را بکنید، که یک جدول داشته باشید برای مدیریت کلمات کلیدی، اینجوری افزونگی هم نخواهید داشت، میشه فهمید از هر کلمه چند بار استفاده شده، کلمات تکراری را هم بیخودی در پایگاه داده درج نمی کنید
در مورد سوالتان، خب، مشکل منطقی هست،
میشه علت این نیازتان را بدانم؟
میتونید یک کاری کنید، در دیتابیس رابطه کلید خارجی تعریف نکرده باشید، بعد، زمانی که میخواهید تگ را در جدول بگذارید، به جای کلید خارجی از جدول، خبر، یک GUID جنریت کنید،و به جای کلید خبر، در جدول تگ قرار دهید، زمانی که خبر را هم درج کردید، بیایید در جدول تگ، بگید به جای فلان GUID کلید خبر را درج کن،
نکته اگر تحت وب هستید، می تونید این GUID را با جاوا جنریت کنید، بعد با استفاده از یک فیلد پنهان، برای هر دو مورد،یعنی درج تگ و درج خبر، آن را به سرور ارسال کنید،
sara_aryanfar
پنج شنبه 25 اسفند 1390, 23:59 عصر
سلام دوست عزیز بهتر نیست این کار را بکنید، که یک جدول داشته باشید برای مدیریت کلمات کلیدی، اینجوری افزونگی هم نخواهید داشت،
حرف معقولی هست پاک بحث تکراری بودن رو فراموش کرده بودم ببینید فرض کنیم ما یک فرم داریم برای ارسال خبر ویک جدول برای خبر و جدولی جداگانه برای تگ الان فرض کنید پست رو نوشتیم و یه تکس باکس هم داریم برای تگ وقتی ما کلید ثبت رو می زنیم خبر که ثبت میشه در جدول خودش می مونه تگ ها اگه سی تا تگ باشه مثلا شاید بشه با یک حلقه سی بار داخل جدول تگ اینسرت کرد اما خب ما نیاز داریم مشخص کنیم این تگ متعلق به کدوم نوشته هست ایدی نوشته رو چطوری داشته باشیم
hesamsalehnamadi
جمعه 26 اسفند 1390, 00:43 صبح
با سلام خدمت دوستان من برای کلمات کلیدی خودم یه جدول دارم که سه تا فیلد داره یکی ایدی خودش یکی کد خبر که کلمه مربوط به اونه و یکی هم خود کلمه من قصد دارم در صفحه ارسال خبرم قبل از ارسال خبر کلمات کلیدی رو داخل جدول اینسرت کنم تنها مشکلی که دارم اینه که هنوز پست ارسال نشده ودر نتیجه هنوز کد خبری که باید برای هرکلمه بزارم تولید نشده چکار می تونم بکنم؟
شما گفتین که 3 تا فیلد (کد کلمه , کد خبر , خود کلمه ) در واقع شما ارتباط یک به چند از جدول خبرها به جدول تگ ها ساختین و در این صورت طبیعی هست که اول باید خبر درج کنی بعد تگ هارو ..
hesamsalehnamadi
جمعه 26 اسفند 1390, 00:48 صبح
یه راه حل هم من پیشنهاد بدم :
یه قیلد به جدول خبر هات اضافه کن بعد تگ هاتو از کاربر بگیر و همراه با خبر تگ رو هم درج کن .. اینجوری مشکلت حل میشه و هم اینکه میتونی تگ هاتو به عنوان متا تگ هم به صفحه اضافه کنی برا جوابدهی بهتر
vof.ir
جمعه 26 اسفند 1390, 12:31 عصر
حرف معقولی هست پاک بحث تکراری بودن رو فراموش کرده بودم ببینید فرض کنیم ما یک فرم داریم برای ارسال خبر ویک جدول برای خبر و جدولی جداگانه برای تگ الان فرض کنید پست رو نوشتیم و یه تکس باکس هم داریم برای تگ وقتی ما کلید ثبت رو می زنیم خبر که ثبت میشه در جدول خودش می مونه تگ ها اگه سی تا تگ باشه مثلا شاید بشه با یک حلقه سی بار داخل جدول تگ اینسرت کرد اما خب ما نیاز داریم مشخص کنیم این تگ متعلق به کدوم نوشته هست ایدی نوشته رو چطوری داشته باشیم
خب متوجه شدم، ببینید شما یا برای آیدی خبر از خود آیدنتیتی سیکوئل سرور استفاده میکنید یا خودتان به صورت دستی یک آیدی را برای آن ست میکنید
در حالت اول، میتونید با دستور، @@Identity (یا یک دستور شبیه به این) آخرین آیدنتیتی را که در جدول درج کردید را به دست بیارید و بدین وسیله در جدول تگ ، درجش کنید که ارتباط بر قرار شود
یا اینکه از حالت دوم استفاده میکنید که خب ، مقداری را که برای آیدی خبر استفاده کردید، در هر دو جدول درج میکنید
سوالی بود بفرمایید
sara_aryanfar
جمعه 26 اسفند 1390, 15:44 عصر
یه راه حل هم من پیشنهاد بدم :
یه قیلد به جدول خبر هات اضافه کن بعد تگ هاتو از کاربر بگیر و همراه با خبر تگ رو هم درج کن .. اینجوری مشکلت حل میشه و هم اینکه میتونی تگ هاتو به عنوان متا تگ هم به صفحه اضافه کنی برا جوابدهی بهتر
من الان روی یکی از سایت ها که زدم از همین روش دارم استفاده می کنم اما تو اکثر سیستم های آماده دیدم که جدول تگ جدا هست
sara_aryanfar
جمعه 26 اسفند 1390, 15:47 عصر
خب متوجه شدم، ببینید شما یا برای آیدی خبر از خود آیدنتیتی سیکوئل سرور استفاده میکنید یا خودتان به صورت دستی یک آیدی را برای آن ست میکنید
در حالت اول، میتونید با دستور، @@Identity (یا یک دستور شبیه به این) آخرین آیدنتیتی را که در جدول درج کردید را به دست بیارید و بدین وسیله در جدول تگ ، درجش کنید که ارتباط بر قرار شود
یا اینکه از حالت دوم استفاده میکنید که خب ، مقداری را که برای آیدی خبر استفاده کردید، در هر دو جدول درج میکنید
سوالی بود بفرمایید
خب الان تنها مشکل من پی بردن به آیدی خبر قبل از ارسال اون هست تصور می کنم اگر قبل از هرکاری تو صفحه ای که می خوام خبر رو ارسال کنم یه کوئری از جدول بگیرم و آیدی اخرین خبر رو بخونم خوب قدر مسلم ایدی خبر جدید یکی بیشتر خواهد بود به نظرتون راه مناسبی هست
vof.ir
جمعه 26 اسفند 1390, 18:09 عصر
خب الان تنها مشکل من پی بردن به آیدی خبر قبل از ارسال اون هست تصور می کنم اگر قبل از هرکاری تو صفحه ای که می خوام خبر رو ارسال کنم یه کوئری از جدول بگیرم و آیدی اخرین خبر رو بخونم خوب قدر مسلم ایدی خبر جدید یکی بیشتر خواهد بود به نظرتون راه مناسبی هست
بله درسته، اما می تونید این کار را هم انجام بدهید که، ابتدا در جدول تگ درج را انجام دهید، سپس وقتی که در جدول خبر، خبر را درج فرمودید، توسط اون دستوری گفتم آخرین آیدی که درج شده را به دست می آورید، خوبیش اینه که اگر سیستم چند کاربره هست، از تداخل بین آیدی ها جلوگیری می کند،
خلاصه حواستان به چند کاربره بودن سیستم باشه، ولی کلا من دلیل اینکه می خواهید ابتدا تگ درج بشود و سپس خبر، نفهمیدم،
ضمنا می تونید یک کاری هم بکنید اینکه این دو درج در جداول را در یک تراکنش، قرار بدهید، اگر یکی به هر دلیل انجام نشد دومی هم انجام نشود،
دلیل کارتان را بفرمایید شاید دید ما هم عوض شود و راه حل بهتری بتونیم ارائه کنیم!
موفق باشید
sara_aryanfar
جمعه 26 اسفند 1390, 21:21 عصر
خب ببینید من نمی خوام اول خبر رو ارسال کنم و بعد بیام براش تگ بزارم چون اینطوری دوکار میشه در واقع می خوام تگ ها رو مثل مدیریت وردپرس به جدول خودشون ارسال کنم و بعد خبر رو بفرستم رو سایت البته همون طور که گفتین با چندین روش میشه انجام داد همچنین من می خوام در هنگام نمایش خبر این تگها رو واکشی کنم و چون ایدی خبر رو همراشون می خونم می تونم به همشون لینک خبر رو هم انتساب بدم
A.S.Roma
جمعه 26 اسفند 1390, 23:24 عصر
اگر می خواهید خیلی اصولی و منطقی به قضیه نگاه کنید، در قدم اول راه رو اشتباه رفتید.
رابطه بین Tag و Post یک رابطه ی N به N هست نه 1 به N .
نتیجتا" بایستی یه جدول برای Post و یک جدول برای Tag داشته باشید و یک Junction Table (یا Cross Table یا جدول واسط یا هر چیزی که صداش می کنن) بین این دو.
بنابراین جهت درج خبر بایستی این BizRule ها رو پیروی و اجرا کنید :
1 - درج خبر در جدول Post
2 - جستجوی تگ های وارد شده در جدول Tag . (در صورتی که تگ موجود نبود Insert شده و ID ان برمی گردد.)
3 - پر کردن Junction Table .
اگر چندلایه کار می کنید که می تونید تو لایه بیزینس این سناریو رو هندل کنید. در غیر اینصورت پیشنهاد من به شما نوشتن یک SP برای این منظور می باشد.
sara_aryanfar
جمعه 26 اسفند 1390, 23:41 عصر
خب استفاده از یک جدول واسط حتمی هست چون بدون اون فکر نکنم جور دربیاد گفتم که در کل روش های مختلفی رو میشه پیاده کرد حتی در روشی که یکی از دوستان گفتن و منم قبلا استفاده گردم یعنی اختصاص یک فیلد در جدول خبر برای تگ ها هم ما می توانیم بعد از خواندن فیلد تگ اونها رو براساس کاراکتر جداگننده جدا کنیم و لینک دهی کنیم هرچند روش استفاده از جدول خاص برای تگ قدری از حجم دیتابیس خواهد کاست که البته در سایت هایی که ارسال های زیادی دارند مهم هست
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.