PDA

View Full Version : تنظیم مشخصات تبلیغات در سایت



fereshte22
سه شنبه 05 تیر 1386, 11:44 صبح
سلام
من میخواهم برای نمایش تبلیغات در سایت خود از gridview و یا datalist استفاده کنم.
و یک صفحه هم برای اضافه کردن مشخصات این تبلیغات در دیتابیس دارم.
در یک صفحه تبلیغات را در دیتابیس ذخیره میکنم و در صفحه دیگر نمایش میدهم.

این مشخصات شامل ادرس سایت و پهنا و ارتفاع بنر نیز میباشد.حالا سوال من اینه وقتی ما این مشخصات را در دیتابیس ذخیره میکنم در موقع نمایش چگونه باید از اونها استفاده کنیم.مثلا ادرس تبلیغ ما(ادرسی که وقتی بر روی تبلیغ کلیک میکنیم کاربر به ان صفحه هدایت شود) shop.com است و در دیتابیس ذخیره شده و برای نمایش تبلیغ نیز از یک img در gridview استفاده شده چطوری این خصوصیت را به img نسبت دهیم تا با کلیک بر روی تبلیغ به صفحه مورد نظر هدایت شویم؟
پهنا و ارتفاع تبلیغ را چگونه بر حسب مقادیر مربوط به تبلیغ در دیتابیس تغییر دهیم؟
در ضمن برای تصاویر بهتره از ستوت imagefield مربوط به گرید ویو استفاده کنم و یا به صورت دیگری عمل کنم؟
و چند تا سوال دیگر که در ادامه مطرح میکنم.
کلا من میخواهم که مجبور نباشم خصوصیات تبلیغات را به صورت دستی تغییر دهم .

azmoodeh
سه شنبه 05 تیر 1386, 12:16 عصر
سلام
به نظز من بهترین کاری که می تونید بکنید اینه که یک UserControl بسازید که یک Property شناسه هر تبلیغ رو بگیره و یک تبلیغ رو کامل نشون بده . یک Image هم توی اون استفاده کنید که توی همون UserControl بتونید اندازه اش رو تنظیم کنید.
حالا این گرید رو با UserControl ها پر کنید

fereshte22
سه شنبه 05 تیر 1386, 13:16 عصر
دوست عزیزمن تحت وب کار میکنم و windowsapliaction کار نکردهام ولی این طور که دیدم usercontrol جزءکنترلهای windowsapplication است درسته؟میشه تحت وب راهنمایی کنید.در ضمن من میخواهم که اطلاعات در دیتابیس ذخیره شوند چون اطلاعات دیگری شامل شروع تبلیغ و پایان تبلیغ و غیره هم دارم.ممنوم

azmoodeh
سه شنبه 05 تیر 1386, 13:24 عصر
نه ، توی وب هم هست .از Add new Item که برید می تونید Web User Control ایجاد کنید.همون فایلهایی که پسوند Ascx دارند.کارکردشون شبیه کنترلهای تحت Windows هست.شما یکیش رو طراحی کنید که یک Id بگیره و بره محتویات رو از دیتابیس بیاره و توی خودش نشون بده.حالا توی صفحه اصلیتون یک گرید بزارید و اون سطرهای اون رو با این کنترل که هر دفعه یک ID از Datasource اون گرید می گیره پر کنید.
شما اول UserControl رو سعی کنید بسازید .توی همین تاپیک مشکلات احتمالی رو هم مطرح کنید. در زمینه پر کردن گرید با کنترل هم اگه موردی بود همینجا مطرح کنید تا جواب داده بشه

موفق باشید

fereshte22
سه شنبه 05 تیر 1386, 17:48 عصر
ببخشید میشه بیشتر توضیح دهید .من دقیقا نمیدونم باید چیکار کنم.
در Web User Controlچه چیزی باید طراحی کنم؟
در ضمن من در گرید ویو فقط میخواهم تصویر تبلیغم نمایش داده شود و نه خصوصیات دیگر ان.
اگه مسئله را برام روشن تر کنید ممنون میشوم.

azmoodeh
سه شنبه 05 تیر 1386, 18:00 عصر
WebUserControl مثل همون کامپوننتهای ویندوزی هست.یعنی شما یک کنترل وب طراحی می کنید که توی خودش یک Image قابل تنظیم داشته باشه. حالا شما به این کنترل یک عدد ( که همون شناسه تبلیغتون باشه ) می دید و اون میره و از دیتابیس تصویر اون تبلیغ و همینطور لینکش رو می گیره و میاره توی خودش نشون می ده.
حالا این یه حسن داره که شما به هر تعداد توی هر صفحه ای که بخواید می تونید قرار بدید . موقع برنامه نویسی هم به راحتی با یک Drag&Drop توی صفحه های مورد نظر قرارش میدید. حالا میتونید یک گرید رو تنظیم کنید که توی هر ردیفش یک UserControl نشون داده بشه و سورس گرید رو هم فقط شناسه ها قرار بدید و به UserControl ی که نوشتید Bind کنید.نتیجه اون میشه که موقع Bind کردن هر کنترل می ره و عکس مربوط به خودش رو نشون میده .

حتی می تونید UserControl رو طوری طراحی کنید موقع کلیک رو تصویرش بره و توی دیتابیس تعداد کلیک روی تبلیغ مورد نظر رو Update کنه و ... و... قابلیت های زیادی که نوشتن و استفاده کامپوننت داره.
زیاد از اسمش نترسید.همون مفاهیمی که توی کنترلهای ویندوزی دارن اینجا هم هست ( البته منظورم مفاهیم طراحی و مهندسی نرم افزار بود نه مفاهیم تکنولوژیک و شیوه برنامه نویسی)

موفق باشید

fereshte22
چهارشنبه 06 تیر 1386, 10:53 صبح
سلاماول بگم از اینکه مشکل من را پیگیری میکنید متچکرم..ببینید من از Add new Item یک Web User Control ایجاد کردم.و یک کنترل imag در اون قرار دادم.ولی این قسمت کار را متوجه نمیشوم.که چگونه به این webusercontrol یک عدد(شناسه تبلیغات) بدهم و غیره.هرچند دوبار برام توضیح دادهاید ولی میتونم ازتون درخواست کتم که یه نمونه کار ساده هم قرار دهید

azmoodeh
چهارشنبه 06 تیر 1386, 11:17 صبح
خوب ، اگر الان دقت کنید این کنترلی که ایجاد کردید اگر مثل فرمها روش کلیک کنید یک کلاس داره که به احتمال زیاد هم اسم خودش هست . این کلاس می تونه مثل همه کلاسها یک Property داشته باشه و شما می تونید به راحتی واسش GET و SET رو تعریف کنید
مثل زیر



Public Property AdvertisId() As String
Get
Return Me._id
End Get
Set(ByVal value As String)
Me._id = value
Call FillInfo()
End Set
End Property


البته شما الان می تونید توی قسمت FillInfo کارهایی رو که می خواد انجام بدید و با استفاده از me._id که یک متغیر در سطح کلاس هست اطلاعات رو واکشی و نمایش بدید و ..

fereshte22
چهارشنبه 06 تیر 1386, 12:32 عصر
دوست عزیز azmoodehدوتاسوال داشتمدر fillinfoدقیقا باید چی بنویسیم؟بایند کردن به دیتابیس را باید بنویسیم؟اطلاعات را چگونه به کنترل image در webusercontrol نسبت دهیم؟چه خصوصیاتی باید برای image تنظیم کنیم؟

azmoodeh
چهارشنبه 06 تیر 1386, 12:41 عصر
سلام
FillInfo همون کارهایی هست که شما باید برای پر کردن اطلاعت انجام بدید. یعنی باید توی این رویه اول به دیتابیس وصل بشید و یک Query اجرا کنید که اطلاعات تبلیغی که مربوط به شناسه me._id هست رو بگیره.بعد هم اون رو توی Image تون نشون بدید . برای نحوه ذخیره و نمایش عکس در ASP.net هم توی همین سایت مطلب موجود هست و جستجو کنید نتیجه می گیرید.
خصوصیاتی که خودتون مورد نظرتون هست رو باید ست کنید.اندازه ، لینک برای موقع کلیکو سایر توضیحاتی که می خواید داشته باشه مثل Tooltip و...

موفق باشید

fereshte22
پنج شنبه 07 تیر 1386, 09:48 صبح
سلام
اول بگم واقعا شرمنده که اینقدر سوال میکنم
من کد زیر را در fillinfo استفاده کردم.


PublicSub FillInfo()
Dim fs As FileStream
Dim bw As BinaryWriter
Dim bufferSize AsInteger = 300000
Dim outbyte(300000 - 1) AsByte
Dim retval AsLong
Dim con AsNew SqlConnection(ConfigurationManager.ConnectionStrin gs("ssgshopConnectionString").ConnectionString)
Dim cmd As SqlCommand
con.Open()
Dim strsql AsString
strsql = "SELECT * FROM aghahi where id='" & Me._id & "'"
cmd = New SqlCommand(strsql, con)
Dim reader As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SequentialAccess )
reader.Read()
fs = New FileStream("getImageNameFromDatabase", FileMode.OpenOrCreate, FileAccess.Write)
bw = New BinaryWriter(fs)
retval = reader.GetBytes(0, 0, outbyte, 0, bufferSize)
bw.Write(outbyte)
bw.Flush()
bw.Close()
fs.Close()
reader.Close()
Image1.ImageUrl = Image.FromFile("getImageNameFromDatabase")
EndSub



ولی چند تا سوال داشتم.یکی اینکه ایا کوری را در sqlcommand درست نوشتم.
مقادیر نام تصویر و ادرس تصویر در دیتابیس را چگونه باید به این کد نسبت دهیم تا تصویر را نشون بدهد؟

me.id را کجامقدار دهی میکنیم.
و سوال بعدی من در ارتباط با نشان دادن تصویر در کنترل image است.این قسمت
Image.FromFile را خطا میگیرد که جزئ
System.Web.UI.WebControls.Image
نیست در حالی که در صفحات دیگر از ان خطایی نمیگیرد.

fereshte22
جمعه 08 تیر 1386, 12:39 عصر
سلام
دوست عزیز azmoodeh
شما نمیدونید مشکل کد بالا چیه؟
در ضمن اگه در مورد سوالاتی که در پست بالا فرستادم من را راهنمایی کنید ممنون میشوم.
در ضمن من یک سوال داشتم.امروز یه نگاهی به کنترل adrotator انداختم.البته شناخت چندانی از این کنترل ندارم .میخواستم بپرسم ایا این کنترل هم میتونه کاری که من میخواهم را انجام دهد؟

azmoodeh
جمعه 08 تیر 1386, 13:13 عصر
سلام
ببخشید ، من مدتی گرفتار کاری هستم و کمتر می تونم توی سایت فعال باشیم. کنترل Adrotator کنترل خوبی هست ، ولی برای زمانی که شما صرفا بخواهید عکس و لینک داشته باشید و چیز خاص دیگه نداشته باشید ، از طرفی DataSource اون بهتره که XML انتخاب بشه و از طرفی هم رویداد کلیک نداره و شما باید اون و شبیه سازی کنید با یک صفحه ای که بعنوان لینک بهش میدید ( البته اینها برای موقعی مهم هست که شما بخواید که تعداد لینک روی هر تبلیغ رو بشمارید )
اما برای آگهی های ساده مناسب هست

fereshte22
جمعه 08 تیر 1386, 14:08 عصر
از اینکه با وجود مشغله کاری که دارید مزاحمتون میشوم معذرت میخواهم .
ولی امکانش هست من را در مشکلاتی که در پست 11 مطرح کردم راهنمایی کنید؟
.چون با توجه به راهنمایی که در پست قبلی کردید فکر میکنم با روشی که شما گفتید پیش بروم بهتر است.
البته دوستان دیگر هم اگر کمک کنند ممنونشون میشوم.

azmoodeh
جمعه 08 تیر 1386, 21:58 عصر
سلام دوست عزیز
خواهش می کنم. من معمولا از روش زیر برای ذخیره عکس و بازیابی اون استفاده می کنم



//Saving The image
public void OnUpload(Object sender, EventArgs e)
{
integer id;
id = //Set Your image id here
// Create a byte[] from the input file
int len = Upload.PostedFile.ContentLength;
byte[] pic = new byte[len];
Upload.PostedFile.InputStream.Read (pic, 0, len);
// Insert the image and comment into the database
SqlConnection connection = new SqlConnection ("Your Connection String")
try
{
connection.Open ();
SqlCommand cmd = new SqlCommand ("insert into Image "
+ "(Picture, Commen,PicId) values (@pic, @text,@picId)", connection);
cmd.Parameters.Add ("@pic", pic);
cmd.Parameters.Add ("@text", "Your Comment");
cmd.Parameters.Add ("@picId", id);
cmd.ExecuteNonQuery ();
}
finally
{
connection.Close ();
}
}



قسمت ذخیره که توی قسمتی قرار میگیره که شما دارید عکستون رو ذخیره می کنید ، مثل قسمت ایجاد آگهی ها و همون جا هم یه ID می گیره که توی کد اون قسمت رو Comment کردم
Upload هم یک کنترل Html Input File هست




//Reading the image
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
string id;
id=request.querystring("id");
MemoryStream stream = new MemoryStream ();
SqlConnection connection = new
SqlConnection ("Your Connection String");
try
{
connection.Open ();
SqlCommand command = new
SqlCommand ("select Picture from Image where id =" + id, connection);
byte[] image = (byte[]) command.ExecuteScalar ();
stream.Write (image, 0, image.Length);
Bitmap bitmap = new Bitmap (stream);
Response.ContentType = "image/jpeg";
bitmap.Save (Response.OutputStream, ImageFormat.jpeg);
}
finally
{
connection.Close ();
stream.Close ();
}
}



توی این قسمت هم بازیابی عکسه
این کد رو باید توی Page Load یک صفحه مثلا به اسم retriveimage.aspx قرار میدین. بعد شناسه عکس رو هم به عنوان QueryString به صفحه میدین ، حالا هر عکسی رو میشه اینجور دید


..../retrieveimage.aspx?id=52
یا هر شناسه دیگه ای

حالا شما کافیه که به عنوان ImageUrl اون کنترل عکسی که دارین عبارت زیر رو قرار بدین



image1.imageurl=".../reteriveimage.aspx?id=" + str(me._id)


البته احتمال می دم کدی که دادم خطای Syntax داشته باشه که به بزرگواری خودتون و گرفتاری من که نتونستم توی ویژوال استودیو تست کنم ببخشید.

موفق باشید

azmoodeh
شنبه 09 تیر 1386, 11:53 صبح
لطفا به من اطلاع بدید که مشکلتون با این کد حل شد یا خیر؟

fereshte22
شنبه 09 تیر 1386, 12:53 عصر
سلام
ممنون از پیگیریتون
من با کد ذخیره عکس که مشکلی نداشتم .
و همون طور که شما فرمودید کد مربوط به بازیابی عکس را در صفحه مورد نظر قرار دادم.و به این صورت عمل کردم که در صفحه ذخیره کردن عکس id را از یک textbox گرفتم واون را به صفحه بازیابی فرستادم و براساس این id پیش رفتم.
ولی با کد زیر مشکل دارم..


image1.imageurl=".../reteriveimage.aspx?id=" + id)

من این کد را دقیقا در چه صفحه ای باید بنویسم؟
چون id را به یک صفحه دیگر فرستادم و این کد را در اون نوشتم ولی هیچ تصویری نمایش نداد.در خود صفحه بازیابی هم که امتحان کردم چیزی نشون نداد.
در ضمن ایا صفحه بازیابی و usercontrol ما نمیتوانند یکی باشند؟
من یکی دو مورد دیگر هم سوال دارم که بعد از حل مشکل نمایش تصویر مزاحمتون میشوم

azmoodeh
شنبه 09 تیر 1386, 15:17 عصر
سلام
این کد در واقع آدرس دهی همون Image هست که توی UserControl گذاشتید و قراره عکس رو نشون بده ، یعنی در متد Fill info دیگه لازم نیست شما عکس رو از دیتابیس واکشی کنید و فقط کافیه که با استفاده از me._id ایت رشته رو ایجاد کنید و به کنترل نمایش عکستون نسبت بدید . (چون همه کارهای واکشی عکس توی صفحه retrieveimage.aspx انجام شده )


موفق باشید

fereshte22
شنبه 09 تیر 1386, 17:38 عصر
سلام
:خجالت:
من همون طور که شما فرمودید در usercontrol از کد زیر استفاده کردم.


Dim _id As String

Public Property AdvertisId() As String
Get
Return Me._id
End Get
Set(ByVal value As String)
Me._id = value
Call FillInfo()
End Set
End Property
Public Sub FillInfo()
image1.imageurl=".../reteriveimage.aspx?id=" + str(me._id)
End Sub

ودر یک صفحه دیگه یک گرید ویو قرار دادم و usercontrol را به صورت زیر در اون قرار دادم


<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="picid">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<uc1:tablighat ID="Tablighat1" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>


که البته هیچ تصویری نمایش داده نمیشود.
مشکل چیه؟
ایا در usercontrol در ست عمل کردم؟ اشکال کارم کجاست؟
شما در پست های قبلی در مورد بایند کردن گرید ویو من را راهنمایی کردی ولی من متوجه این مسئله نمیشوم.


حالا میتونید یک گرید رو تنظیم کنید که توی هر ردیفش یک UserControl نشون داده بشه و سورس گرید رو هم فقط شناسه ها قرار بدید و به UserControl ی که نوشتید Bind کنید


همچنین اگر در این مورد بیشتر توضیح دهید ممنون میشوم


حتی می تونید UserControl رو طوری طراحی کنید موقع کلیک رو تصویرش بره و توی دیتابیس تعداد کلیک روی تبلیغ مورد نظر رو Update کنه و ... و... قابلیت های زیادی که نوشتن و استفاده کامپوننت داره.

azmoodeh
شنبه 09 تیر 1386, 18:10 عصر
سلام
1-اون سه تا نقطه ای که من برای مسیر عکس گذاشتم منظورم اون بود که مسیر کامل فایل retriveimage.aspxداده بشه !
2- اینکه در متد fillInfo بقیه کارها رو هم انجام بدید ، مثل گذاشتن لینک کلیک و .... ، شما فقط تصویر رو مسیر دهی کردید
3- یه آگهی با عکس و id توی دیتابیس ذخیره کنید و ببینید آیا retriveimage.aspx با همون id درست کار می کنه ؟
4- شما برای جدولتون یک DataSource دارید ، این دیتا سورس باید یک جدول تک ستونی باشه و همون id هایی باشه که شما می خواید توی آگهی ها نشون داده بشه ، خوب بعد از اینکه اینQuery رو لود و بعد به جدول Bind کردید این رو هم به تگ uc1 اضافه کنید :




<uc1:tablighatID="Tablighat1"runat="server" advertiseID=<% Eval('ColumnName') %> />


که اینجا ColumnName اسم همون ستونیه که توی دیتاسورستون شامل id ها میشه.
موفق باشید

fereshte22
شنبه 09 تیر 1386, 21:46 عصر
سلام
راستش من هر کاری میکنم این تصاویر نشون داده نمیشود.
به خاطر همین نمونه کار را اینجا قرار دادم .اگه لطف کنید و یه نگاهی به اون بندازید واقعا ممنون میشوم.

azmoodeh
شنبه 09 تیر 1386, 21:54 عصر
سلام
لطفا اگر دیتابیستون Access هست خود دیتابیس و اگه SQL Server هست Script اون رو بزارید تا بتونم چک کنم

fereshte22
شنبه 09 تیر 1386, 23:42 عصر
سلام
خسته نباشید
من که دیگه نمیدونم با چه رویی مزاحم شما بشوم.ولی خوب شما به بزرگی خودتون کم تجربگیه من را ببخشید
script را گذاشتم.

:ناراحت: :ناراحت: در ضمن این قابل تنظیم بودن تصویر(از لحاظ اندازه) و یا تعداد کلیک بر روی تصویر به چه صورت است؟همون طور که قبلا هم گفتم من میخواهم در صفحه ای که تصویر را اضافه میکنیم پهنا و ارتفا ع ان را هم به عنوان فیلدهای جدول اضافه کنم و تصویر بر این اساس تنظیم شود.

fereshte22
دوشنبه 11 تیر 1386, 08:45 صبح
سلام
عذر میخواهم شما نمیدونید اشکال کار چیه؟
در ضمن اگر در مورد قابل تنظیم بودن تصویر و تعداد کلیک که در پست قبلی هم مطرح کردم من را راهنمایی کنید ممنون میشوم

fereshte22
شنبه 16 تیر 1386, 09:46 صبح
سلام دوستان کسی نمیتونه کمک کند.من برنامه و دیتابیش را در بالا قرار دادم .ممنون میشوم یه نگاهی به اون بندازید و من راهنمایی کنید که مشکل کار چیه؟البته این را هم اضافه کنم که قابل تنظیم بودن تصاویر و مشخص کردن تعداد کلیک برای من مهمه.ممنون

roze_sepideh
دوشنبه 18 تیر 1386, 14:14 عصر
تنظیم اندازه تصویر با استفاده از thumbnail کردن انجام میشه...
در سایت مقالات زیادی در این باره هستش جستجو کنید پیدا میکنید.
هندل کردن کلیک و باقی موارد هم نباید کار سختی باشه ، از ImageButton استفاده کن...اینطوری میتونی کلیک رو هم هندل کنی.

fereshte22
دوشنبه 18 تیر 1386, 16:12 عصر
سلام در مورد استفاده از imagebutton و هندل کردن کلیک میشه بیشتر توضیح دهید.(با توجه به اینکه این کنترل imagebutton در usercontrol است و گرید ویو با این usercontrol پر میشود.اگر با نمونه کد باشد خیلی ممنون میشوم.در ضمن من میخواهم ادرس سایتی که با کلیک بر روی تبلیغ به ان هدایت میشویم را مشخص کنم .ایا باید از خاصیت postbackurl استفاده کنم؟

scorpion_man
پنج شنبه 29 آذر 1386, 02:56 صبح
با سلام به همه دوستان
شما برای هندل کردن کلیک imagebutton تو همون web user controll میتونید رویداد کلیکشو هندل کنید ولی اگه خواستید اطلاعت به آدرس خاصی پست بشه از خاصیت postbackurl استفاده کنید
موفق باشید