الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مساعده في عرض تعاليق الاخبار

بدأه shosho10 في 2 يوليو 2011 · 12 رد · 1,319 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخواني عندي مشكله في عرض تعاليق الاخبار .. قمت بتصميم موقع اخباري .. عند وضع خبر جديد ارغب بان يقوم زوار الموقع بتعليق عليه

لكن وجهتني مشكله في عرض التعاليق ... مثلن لو قامت بتنزيل اكثر من خبر بنفس الوقت .. وعندما يدخل الزوار ويردون التعليق علي الاخبار .. بكيف اربط كل تعليق بالخبر الذي يرغب الزائر في التعليق عليه ...

لانه يوجود معي اكثر من خبر بنفس الصفحه .. بكيف اذا كتب الزائر تعليق بخبر معين .. يروح ينكتب بقاعدة البيانات التعليق جوار الخبر نفسه الذي علق عليه الزائر .. لانه عند كتابة اكثر من خبر صعب علي تحديد الرابط بين التعليق والاخبار

فما هو الاستعلام الذي سيقوم بربط التعليق مع الخبر نفسه .. وكل مايكتب الزائر تعليق خاص بخبر معين يروح يتسجل بقاعدة البيانات التعليق الخاص بالخبر الذي قام الزائر بتعليق عليه .. اريد الفكرة في كيف اربط الاخبار بتعاليق . وياليت بلغة السي شارب

وجزاكم الله خير

−1
#2

السلام عليكم ورحمه الله وبركاته

اختي يمكنك عرض الاخبار في صفحه ومن ثم عند النقر على خبر ما قومي بارسال رقم الخبر للصفحه الاخرى ومن ثم باستخدام ال QueryString يمكنك عرض تفاصيل الخبر وفي الصفحه نفسها قومي بعرض تعليقات الخبر نفسه, جربي الجملة التالية لعرض تفاصيل الخبر

"Select * From News Where ID=" + Convert.ToInt32(Request.QueryString["ID"])

والجملة التالية لعرض تعليقات الخبر


"Select * From Comments Where NewsID=" + Convert.ToInt32(Request.QueryString["ID"])

.:: Wish to become better and better ::.

#3
shosho10 كتب:

السلام عليكم

اخواني عندي مشكله في عرض تعاليق الاخبار .. قمت بتصميم موقع اخباري .. عند وضع خبر جديد ارغب بان يقوم زوار الموقع بتعليق عليه

لكن وجهتني مشكله في عرض التعاليق ... مثلن لو قامت بتنزيل اكثر من خبر بنفس الوقت .. وعندما يدخل الزوار ويردون التعليق علي الاخبار .. بكيف اربط كل تعليق بالخبر الذي يرغب الزائر في التعليق عليه ...

لانه يوجود معي اكثر من خبر بنفس الصفحه .. بكيف اذا كتب الزائر تعليق بخبر معين .. يروح ينكتب بقاعدة البيانات التعليق جوار الخبر نفسه الذي علق عليه الزائر .. لانه عند كتابة اكثر من خبر صعب علي تحديد الرابط بين التعليق والاخبار

فما هو الاستعلام الذي سيقوم بربط التعليق مع الخبر نفسه .. وكل مايكتب الزائر تعليق خاص بخبر معين يروح يتسجل بقاعدة البيانات التعليق الخاص بالخبر الذي قام الزائر بتعليق عليه .. اريد الفكرة في كيف اربط الاخبار بتعاليق . وياليت بلغة السي شارب

وجزاكم الله خير

اخي العزيز مشكور على ردك .. بس كان قصدي شي ثاني .. موش عرض التعليقات .. الي كان قصدي طريقة التعليق نفسها .. مثلن سويت خبرين .. ودخل على الصفحة مستخدمين وعندي بعد كل خبر بوتون تلعيق عند الضغط عليه يظهر له مربع التعليق ويكتب تعليقة بس المشكله كيف رح ينفحظ التعليق لنفس الخبر الذي ضغط الزائر عليه لقيوم بالتعليق مثال

الخبر الاول 1- يعلن المهعد الامريكي عن افتتاح دورة الغة الانجليزية .. وفي نهاية الخبر بتون لتعليق

الخبر الثاني 2- يعلن المهمد الكندي عن افتتاح دورة حاسب الي .. وفي نهاية الخبر بتون لتعليق ..

وعند دخول الستخدم وقراءة الخبر ورغب في التعليق سوف يضغط على زر البتون ليقوم بالتعليق .. سواء ضغط على الخبر الاول او الثاني فكيف رح ينحفظ التعليق في نفس جدول الاخبار

لاني عاملة جدول خاص بالخبر وسويت خانة التعليق في نفس الجدول طبعاُ سوف ينحفظ الخبر في الخانة الاول وتبقاء الخانة حق التعليق في حاله فارغة فعند مايقوم الشخص بالتعليق سوف اقوم بتعديل الخانة الفارغة واعبيها بالتعليق جمب الخبر

فالمشكلة كيف سوف اربط التعليق بالخبر نفسسه ... فعندما يقوم الشخص بتعليق عن الخبر الاول المفروض انه يروح يعملي تعديل على السطر الاول من الجدول ويكتب التعليق باجنب الخبر الذي علق علية المستخدم . وكذالك في الخبر الثاني نفس الطريقة

فاهمي الطريقة الذي سوف اربط الخبر بالتعليق

#4

السلام عليكم ورحمه الله وبركاته

اختي يمكنك عمل GridView لعرض الاخبار وداخلها FormView لإضافة تعليق على الخبر, فكل اضافة بتكون حسب الخبر الذي تنتمي اليه ..

.:: Wish to become better and better ::.

#5
VB Helper كتب:

السلام عليكم ورحمه الله وبركاته

اختي يمكنك عمل GridView لعرض الاخبار وداخلها FormView لإضافة تعليق على الخبر, فكل اضافة بتكون حسب الخبر الذي تنتمي اليه ..

مشكور اخي على ردك .. اوكية بستخدم GridView لعرض الخبر .. بس كيفية استخدام FormView داخل القرد فيو .. لاني ما استخدمته من قبل ياليت توضح لي كيف اعملها .. اخي لو في معك مثال بسيط عليها .. بيكون حلو .. والله يجزيك جزيل الخير

#6

السلام عليكم ورحمة الله وبركاته:-

طيب ليه ماتسوي جدولين جدول الأخبار ...وجدول التعليقات عليها كل خبر له أكثر من تعليق ...وكل تعليق خاص بخبر

يعني 1-m رقم الخبر يكون في جدول التعليقات كمفتاح أجنبي

#7

السلام عليكم :)

الفكرة هنا غير مستحيلة من وجهة نظر مصممي المواقع (وليس مبرمجي المواقع) وهي سهلة ممتنعة!

إن كنت مصمم مواقع بتقنية ASP.Net فستجد التالي سهل جداً.. أما إذا كنت مبرمجاً للمواقع بتقينة ASP.Net C# or VB فهي فرصة لك لتتعرف على بيئة التصميم الخاصة بال ASP.Net.

كل ما أنت بحاجة إليه هو مثلاً Datalist عادية لعرض الأخبار..

وبداخل قالب العرض Item الخاص بها ستقوم بإضافة Formview عادية تقوم بإدراج التعليق!

بسيطة.. أليس كذلك!

لكن يجب أن تنتبه إلى الآتي:

- يجب أن تكون أداة مصدر البيانات الخاصة بال Formview بداخل قالب العرض item الخاص بال Datalist.. وهذه العملية غير متاحة في الكود لكنها متاحة في التصميم فقط!!

- يجب أن يحتوي استعلام الإدراج insert على عبارة where ويجب أن يكون هناك شيء يستدل به على رقم الخبر.. هنا أنا أقترح إضافة Label مخفي يحتوي على رقم الخبر ضمن بيانات الخبر نفسه.. وليكن اسمه news_id_lbl وخاصية Visible مفعلة على True وذلك حتى لا يؤثر على طريقة عرض الخبر أو تشويه مظهره!

- في قالب العرض الخاص بال Formview نكتفي بزرار خاصية الأمر CommandName = New وهو ما يمكن أن يعني (عند النقر قم بعرض قالب الإدخال!)

- في النهاية سيكون وسم الداتالزت كالتالي:

<asp:DataList ID="DataList1" runat="server" DataKeyField="news_id" 
            DataSourceID="SqlDataSource1">
            <ItemTemplate>
                <h3>
                    <asp:Label ID="Label1" runat="server" Text='<%# Eval("news_title") %>'></asp:Label>
                    <asp:Label ID="id_lbl" runat="server" Text='<%# Eval("news_id") %>' 
                        Visible="False"></asp:Label>
                </h3>
                <asp:FormView ID="FormView1" runat="server" DataKeyNames="comm_id" 
                    DataSourceID="ds_comm">
                    <EditItemTemplate>
						comm_id:
						<asp:Label id="comm_idLabel1" runat="server" Text='<%# Eval("comm_id") %>' />
						<br />
						news_id:
						<asp:TextBox id="news_idTextBox" runat="server" Text='<%# Bind("news_id") %>' />
						<br />
						comm_text:
						<asp:TextBox id="comm_textTextBox" runat="server" Text='<%# Bind("comm_text") %>' />
						<br />
						<asp:LinkButton id="UpdateButton" runat="server" CausesValidation="True" CommandName="Update" Text="Update" />
						 <asp:LinkButton id="UpdateCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" />
					</EditItemTemplate>
                    <EmptyDataTemplate>
                        لا يوجد تعليقات
                        <asp:LinkButton id="NewButton" runat="server" CausesValidation="False" CommandName="New" Text="تعليق" />
                    </EmptyDataTemplate>
                    <InsertItemTemplate>
						<asp:TextBox id="comm_textTextBox" runat="server" Text='<%# Bind("comm_text") %>' Height="90px" TextMode="MultiLine" Width="320px" />
						<br />
						<asp:LinkButton id="InsertButton" runat="server" CausesValidation="True" CommandName="Insert" Text="حفظ" />
						 <asp:LinkButton id="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="إلغاء" />
                    </InsertItemTemplate>
                    <ItemTemplate>
                        <asp:LinkButton id="NewButton" runat="server" CausesValidation="False" CommandName="New" Text="تعليق" />
                    </ItemTemplate>
                </asp:FormView>
                <asp:SqlDataSource ID="ds_comm" runat="server" 
                    ConnectionString="<%$ ConnectionStrings:news_dbConnectionString %>" 
                    InsertCommand="INSERT INTO [MyComm] ([news_id], [comm_text]) VALUES (@news_id, @comm_text)" 
                    SelectCommand="SELECT * FROM [MyComm]">
                    <InsertParameters>
                        <asp:ControlParameter ControlID="id_lbl" Name="news_id" PropertyName="Text" Type="Int32" />
                        <asp:Parameter Name="comm_text" Type="String" />
                    </InsertParameters>
                </asp:SqlDataSource>
            </ItemTemplate>
        </asp:DataList>

ووسم مصدر البينات العام كالتالي:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:news_dbConnectionString %>" 
            SelectCommand="SELECT [news_id], [news_title] FROM [MyNews]">
        </asp:SqlDataSource>

الآن كيف سيعمل الداتالزت؟

سيقوم بعرض الخبر الأول، ثم يقوم بعرض زرار التعليق والذي يمثل الفورم فيو، وهكذا مع بقية الأخبار!

وعند النقر على زرار التعليق سيقوم بإظهار قالب الإدراج للتعليق مباشرة تحت الخبر الذي ينتمي له التعليق!

وعند حفظ التعليق سيتم تنفيذ استعلام الإدراج وحفظ التعليق بدلالة رقم الخبر الذي ينتمي إليه!

طبعاً تستطيع إضافة داتالزت أسفل الفورم فيو لعرض التعليقات بنفس الفكرة أو وضعها في أداة الخطوات المتعاقبة Wizard تحتوي على خطوتين.. الخطوة الأولى لا يوجد بها سوى زرار التالي بعد تغيير اسمه إلى عرض التعليقات، والخطوة الثانية فيها داتالزت ومصدر بيانات خاص بها يعرض التعليقات بدلالة رقم الخبر، ومن ثم إلغاء زرار الإنتهاء وتغيير زرار العودة إلى إخفاء التعليقات!

حسناً إذن..

مع تمنياتي لك بالتوفيق في مشروعك..

والسلام عليكم ورحمة الله وبركاته :)

تم تعديل هذه المشاركة بواسطة AmeenSnw في 4 يوليو 2011 في 23:18

2
#8
AmeenSnw كتب:

السلام عليكم :)

الفكرة هنا غير مستحيلة من وجهة نظر مصممي المواقع (وليس مبرمجي المواقع) وهي سهلة ممتنعة!

إن كنت مصمم مواقع بتقنية ASP.Net فستجد التالي سهل جداً.. أما إذا كنت مبرمجاً للمواقع بتقينة ASP.Net C# or VB فهي فرصة لك لتتعرف على بيئة التصميم الخاصة بال ASP.Net.

كل ما أنت بحاجة إليه هو مثلاً Datalist عادية لعرض الأخبار..

وبداخل قالب العرض Item الخاص بها ستقوم بإضافة Formview عادية تقوم بإدراج التعليق!

بسيطة.. أليس كذلك!

لكن يجب أن تنتبه إلى الآتي:

- يجب أن تكون أداة مصدر البيانات الخاصة بال Formview بداخل قالب العرض item الخاص بال Datalist.. وهذه العملية غير متاحة في الكود لكنها متاحة في التصميم فقط!!

- يجب أن يحتوي استعلام الإدراج insert على عبارة where ويجب أن يكون هناك شيء يستدل به على رقم الخبر.. هنا أنا أقترح إضافة Label مخفي يحتوي على رقم الخبر ضمن بيانات الخبر نفسه.. وليكن اسمه news_id_lbl وخاصية Visible مفعلة على True وذلك حتى لا يؤثر على طريقة عرض الخبر أو تشويه مظهره!

- في قالب العرض الخاص بال Formview نكتفي بزرار خاصية الأمر CommandName = New وهو ما يمكن أن يعني (عند النقر قم بعرض قالب الإدخال!)

- في النهاية سيكون وسم الداتالزت كالتالي:

<asp:DataList ID="DataList1" runat="server" DataKeyField="news_id" 
            DataSourceID="SqlDataSource1">
            <ItemTemplate>
                <h3>
                    <asp:Label ID="Label1" runat="server" Text='<%# Eval("news_title") %>'></asp:Label>
                    <asp:Label ID="id_lbl" runat="server" Text='<%# Eval("news_id") %>' 
                        Visible="False"></asp:Label>
                </h3>
                <asp:FormView ID="FormView1" runat="server" DataKeyNames="comm_id" 
                    DataSourceID="ds_comm">
                    <EditItemTemplate>
						comm_id:
						<asp:Label id="comm_idLabel1" runat="server" Text='<%# Eval("comm_id") %>' />
						<br />
						news_id:
						<asp:TextBox id="news_idTextBox" runat="server" Text='<%# Bind("news_id") %>' />
						<br />
						comm_text:
						<asp:TextBox id="comm_textTextBox" runat="server" Text='<%# Bind("comm_text") %>' />
						<br />
						<asp:LinkButton id="UpdateButton" runat="server" CausesValidation="True" CommandName="Update" Text="Update" />
						 <asp:LinkButton id="UpdateCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" />
					</EditItemTemplate>
                    <EmptyDataTemplate>
                        لا يوجد تعليقات
                        <asp:LinkButton id="NewButton" runat="server" CausesValidation="False" CommandName="New" Text="تعليق" />
                    </EmptyDataTemplate>
                    <InsertItemTemplate>
						<asp:TextBox id="comm_textTextBox" runat="server" Text='<%# Bind("comm_text") %>' Height="90px" TextMode="MultiLine" Width="320px" />
						<br />
						<asp:LinkButton id="InsertButton" runat="server" CausesValidation="True" CommandName="Insert" Text="حفظ" />
						 <asp:LinkButton id="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="إلغاء" />
                    </InsertItemTemplate>
                    <ItemTemplate>
                        <asp:LinkButton id="NewButton" runat="server" CausesValidation="False" CommandName="New" Text="تعليق" />
                    </ItemTemplate>
                </asp:FormView>
                <asp:SqlDataSource ID="ds_comm" runat="server" 
                    ConnectionString="<%$ ConnectionStrings:news_dbConnectionString %>" 
                    InsertCommand="INSERT INTO [MyComm] ([news_id], [comm_text]) VALUES (@news_id, @comm_text)" 
                    SelectCommand="SELECT * FROM [MyComm]">
                    <InsertParameters>
                        <asp:ControlParameter ControlID="id_lbl" Name="news_id" PropertyName="Text" Type="Int32" />
                        <asp:Parameter Name="comm_text" Type="String" />
                    </InsertParameters>
                </asp:SqlDataSource>
            </ItemTemplate>
        </asp:DataList>

ووسم مصدر البينات العام كالتالي:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:news_dbConnectionString %>" 
            SelectCommand="SELECT [news_id], [news_title] FROM [MyNews]">
        </asp:SqlDataSource>

الآن كيف سيعمل الداتالزت؟

سيقوم بعرض الخبر الأول، ثم يقوم بعرض زرار التعليق والذي يمثل الفورم فيو، وهكذا مع بقية الأخبار!

وعند النقر على زرار التعليق سيقوم بإظهار قالب الإدراج للتعليق مباشرة تحت الخبر الذي ينتمي له التعليق!

وعند حفظ التعليق سيتم تنفيذ استعلام الإدراج وحفظ التعليق بدلالة رقم الخبر الذي ينتمي إليه!

طبعاً تستطيع إضافة داتالزت أسفل الفورم فيو لعرض التعليقات بنفس الفكرة أو وضعها في أداة الخطوات المتعاقبة Wizard تحتوي على خطوتين.. الخطوة الأولى لا يوجد بها سوى زرار التالي بعد تغيير اسمه إلى عرض التعليقات، والخطوة الثانية فيها داتالزت ومصدر بيانات خاص بها يعرض التعليقات بدلالة رقم الخبر، ومن ثم إلغاء زرار الإنتهاء وتغيير زرار العودة إلى إخفاء التعليقات!

حسناً إذن..

مع تمنياتي لك بالتوفيق في مشروعك..

والسلام عليكم ورحمة الله وبركاته :)

===========================

اخي العزيز والله موش عارفة كيف اشكرك ..على مجهودك الكبير .. بس المشكله اخي انا لسسة متبدئة في بيئة asp.net ياليت لو ترفق لي المثال في المرفقات ... عشان احاول استوعب اكثر الشرح الي شرحته لي .. والله يجعله في ميزان حسناتك يااااااااااارب

#9

السلام عليكم :)

مرفق مع الرد ملف يحتوي على مشروع موقع يتكون من صفحة واحدة وقاعدة بيانات..

واختصاراً وضعت فقط عنوان الخبر ومن ثم التعليق مباشرة بدون تواريخ أو معلومات اضافية!

مع إضافة الوزارد ومربع التحديث لخاص بالآجاكس لإضفاء بعض المرونة!

حسناً إذن..

والسلام عليكم ورحمة الله وبركاته :)

news_with_comments.rar

تم تعديل هذه المشاركة بواسطة AmeenSnw في 5 يوليو 2011 في 19:52

1
#10
AmeenSnw كتب:

السلام عليكم :)

مرفق مع الرد ملف يحتوي على مشروع موقع يتكون من صفحة واحدة وقاعدة بيانات..

واختصاراً وضعت فقط عنوان الخبر ومن ثم التعليق مباشرة بدون تواريخ أو معلومات اضافية!

مع إضافة الوزارد ومربع التحديث لخاص بالآجاكس لإضفاء بعض المرونة!

حسناً إذن..

والسلام عليكم ورحمة الله وبركاته :)

-------------------------------

مشششششششششششششششششششكور خيو والله مشششششششششششكور .. الله يجعله في ميزان حسناتك .. جاري التطبيق .. لو في شي صعب علي .. بقولك خيو

#11
soso7 كتب:

-------------------------------

مشششششششششششششششششششكور خيو والله مشششششششششششكور .. الله يجعله في ميزان حسناتك .. جاري التطبيق .. لو في شي صعب علي .. بقولك خيو

------------------------------------

اخي حاولت اعمل نفس الي سويته انت .. بس حصلت لي مشكلة

وهذه هي المشكلة

Inserting is not supported by data source 'SqlData' unless InsertCommand is specified

الخطاء الي يطلع لي .. سوف اعمل ملف مرفق بالي علمته ياليت تشوف لي ايش الخطاء وتقولي عشان استفيد منه واستفيد من خبرتك اخي

والله يجلعه لك في ميزان حسناتك ياااااااااااااارب

WebSite17.rar

#12

السلام عليكم :)

يا أخي طه هذه الرسالة تظهر عندما تنسى إضافة استعلام الإدخال Insert في أداة مصدر البيانات..

اسم الأداة 'SqlData' حددها ومن نافذة الخصائص اذهب إلى خاصية InsertQuery فيها ثم أدخل استعلام الإدخال!

وبالمناسبة الملف المرفق في ارسالة السابقة فيه أخطاء برمجية لم أفهمها.. وأنا ثقافتي لست برمجية.. بل تصميمية!

وآسف لأني لا استطيع أن أفيدك في إصلاحها :)

ربما نجد أحد الأعضاء المتحمسين في المساعدة في الخلفية البرمجية للموقع!

والسلام عليكم ورحمة الله وبركاته :)

تم تعديل هذه المشاركة بواسطة AmeenSnw في 8 يوليو 2011 في 09:24

1
#13
shosho10 كتب:

السلام عليكم

اخواني عندي مشكله في عرض تعاليق الاخبار .. قمت بتصميم موقع اخباري .. عند وضع خبر جديد ارغب بان يقوم زوار الموقع بتعليق عليه

لكن وجهتني مشكله في عرض التعاليق ... مثلن لو قامت بتنزيل اكثر من خبر بنفس الوقت .. وعندما يدخل الزوار ويردون التعليق علي الاخبار .. بكيف اربط كل تعليق بالخبر الذي يرغب الزائر في التعليق عليه ...

لانه يوجود معي اكثر من خبر بنفس الصفحه .. بكيف اذا كتب الزائر تعليق بخبر معين .. يروح ينكتب بقاعدة البيانات التعليق جوار الخبر نفسه الذي علق عليه الزائر .. لانه عند كتابة اكثر من خبر صعب علي تحديد الرابط بين التعليق والاخبار

فما هو الاستعلام الذي سيقوم بربط التعليق مع الخبر نفسه .. وكل مايكتب الزائر تعليق خاص بخبر معين يروح يتسجل بقاعدة البيانات التعليق الخاص بالخبر الذي قام الزائر بتعليق عليه .. اريد الفكرة في كيف اربط الاخبار بتعاليق . وياليت بلغة السي شارب

وجزاكم الله خير

السلام عليكم

دى اول مشاركه ليا فى المنتدى :)

ضيف حقل جديد فى جدول التعليقات سميه News_ID او اى اسم تحبه وفى جملة insert فى صفحة عرض الاخبار اعطيه قيمه ID بتاع الخبر

cmd.CommandText = "insert into Comments(your fields, NewsID) Values ('"your values"','" + Request.QueryString["ID"] + "')";

لو لسه الفكره موصلتش ممكن تكلمنى ابعتلك مثال mouhandes2010 ع الياهو او ارفعهولك هنا ع المنتدى مفيش مشاكل

مواضيع مشابهة