ثبت اطلاعات چک باکس ها در sql

سلام به همگی و اساتید مالتی مدیا
من سرچ کردم چیزی ندیدم
فرض کنید یه فرمی داریم با چهار گزینه که کاربر به دلخواه میتونه انتخاب کنه ، حالا یا همه رو یا برخی رو انتخاب میکنه.
چجوری میشه این اطلاعات رو داخل دیتابیس با پلاگین sql ثبت کرد.
چند راه رو امتحان کردم نشد. البته زیاد استاد نیستم.
عکس نمونه فرم رو میذارم تا بهتر متوجه منظورم بشید.
با تشکر

help.jpg
 

silvercover

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

توی مثالی به اسم usercheckboxes.mbd که در مسیر \Program Files\Multimedia Builder498\Samples\496_examples هست با استفاده از شی ماتریس این چک باکس ها ساخته شدن. حالا با دستور
MatrixGet میشه وضعیتش رو توی یه شرط چک کرد.

این ماتریس ها با عکس ساخته شدن. دستور MatrixGet در هر لحظه به ما میگه الان چه عکسی نمایان هست، عکس باکس خالی (یعنی هیچی کلیک نشده) یا باکس پر (کلیک شده) . بعد همین مقادیر رو
میشه با اسم True/False یا On/Off یا صفر و یک در دیتابیس ذخیره کرد.
 
خیلی خیلی ممنون از پاسختون ولی این اون چیزی نیست که من میخوام فرض کنید با ماتریس درست کردیم ولی مشکل اینجاست که این چک باکس ها باهم هستند یعنی اطلاعاتشون یا همون خروجی باید توی یک فیلد ذخیره بشه چون اگه خواستیم از اطلاعات پرینت تهیه کنیم باید اینجوری باشه (بطور مثال): خدمات درخواستی شما : گزینه یک ، گزینه دو ، گزینه چهار
 

silvercover

کاربر متخصص
یلی خیلی ممنون از پاسختون ولی این اون چیزی نیست که من میخوام فرض کنید با ماتریس درست کردیم ولی مشکل اینجاست که این چک باکس ها باهم هستند یعنی اطلاعاتشون یا همون خروجی باید توی یک فیلد ذخیره بشه چون اگه خواستیم از اطلاعات پرینت تهیه کنیم باید اینجوری باشه (بطور مثال): خدمات درخواستی شما : گزینه یک ، گزینه دو ، گزینه چهار

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

کد:
ch1:true|ch2:false|ch3:false|

ch ها یعنی اسم هر چک باکس و بعد از دو نقطه مقدارش. به این ترتیب شما داده ها رو کنار هم یکجا ذخیره می کنی و موقع فراخوانی هم با دستور GetArrayItem از هم جداشون می کنی و یکی یکی ازشون استفاده می کنی.
 
واقعا ممنون. همین که پاسخ میدید واسم ارزش داره. من با توجه به توضیحات شما و آموزش هایی که از همین سایت و دوستان دیگه دیده بودم اینجوری عمل کردم که با استفاده از همون ماتریس اول مقداری که باید توی جدول ذخیره بشه رو معرفی کردم بعد با دستور شرطی چک کردم که گزینه ها انتخاب شدن یا نه بعد اون اطلاعات مورد نظرمو داخل sefaresh$ ریختم و سعی کردم پشت سر هم بصورت یک رشته دربیارم و توی فیلد ذخیره کنم ولی بازم به مشکل برخوردم. مشکل کجاست؟ یعنی بعلت طولانی بودن رشته این مشکل پیش میاد و ذخیره نمیکنه؟
PHP:
sefaresh$=''
***
s1$='گزینه یک'
s2$='گزینه دو'
s3$='گزینه سه'
s4$='گزینه چهار'
***
If (ch1=1) Then
    sefaresh$=sefaresh$+','+s1$
End
If (ch2=1) Then
    sefaresh$=sefaresh$+','+s2$
End
If (ch3=1) Then
    sefaresh$=sefaresh$+','+s3$
End
If (ch4=1) Then
    sefaresh$=sefaresh$+','+s4$
End
***
SQLQuery$ = 'INSERT INTO Test (Sefaresh) VALUES ("'+sefaresh$+'");'
PluginSet("PlugIn","SQLQuery$")
PluginRun("PlugIn","UpdateDB")
PluginGet("PlugIn","Updated")
...
 
مرسی از راهنماییت. درست شد ولی یه مشکل کوچولو دارم. من تو برنامه نیاز دارم که دوتا دیتابیس رو فراخوانی کنم چون اولا میخوام نشون بدم تو دو دیتابیس چندتا رکورد ذخیره شده و دوما که مهمتره اینه که یکی از فیلدهای جدول دوم باید از داخل دیتابیس اول انتخاب بشه واسه همین فکر کنم مشکل داره و فقط یه بار میتونم اطلاعات دیتابیس دوم رو اضافه کنم. از ترفند runmbd استفاده کردم و تو صفحه ثبت اطلاعات دیتابیس دوم فقط همون دیتابیس دوم لود میشه ولی اون فیلد مشترک رو موندم چیکارش کنم!
 
آخه دو تا جدول باهم فرق میکنن. یکیش واسه ثبت اطلاعات مشتری هستش یکی دیگش واسه ثبت درخواست خدمات هست که فیلد مشترک همون نام مشتری هست که قبلا ثبت کردیم. اگه باهم توی یه فایل قرار بدم حجم دیتابیس بالا نمیره؟ مشکلی پیش نمیاد؟ راستی که توضیح مختصر بدین تا بتونم همون کاری بکنم که شما میگید
 

silvercover

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

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

کد:
 [B]SELECT[/B] Customers.AcctNumber, Customers. Custname [B]FROM[/B] Customers [B]INNER JOIN[/B] cust_invoice [B]ON[/B] Customers.AcctNumber = cust_invoice.AcctNumber;

توی کد بالا دو جدول هست. یکی به اسم Customers و دیگری به اسم cust_invoice که در آخر کد فیلدهای مشترک این دو جدول برابر هم قرار گرفتن تا ما بگیم که اشتراک مد نظر ما این هست.

کلا شما باید در مورد INNER JOIN مطالعه کنید.
 
آخرین ویرایش:
پس داستان خیلی فرق میکنه با اون مثالها و آموزشهایی که دیدم! نمیشه به همون روش قبلی ادامه بدم و دوتا جدول رو جدا فراخوانی کنم ، ولی توی یه فایل دیتابیس باشن. مثلا:

PHP:
PluginRun("PlugIn","SQLiteInit")
PluginGet("PlugIn","Initialized")
If (Initialized = 1) Then
  db_path$='<SrcDir>\database.db'
  PluginSet("PlugIn","db_path$")
  PluginRun("PlugIn","GetDBFileName")
  PluginRun("PlugIn","OpenSQLDB")
  PluginGet("PlugIn","Opened")
  If (Opened = 0) Then
***
  End
End
 

silvercover

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

جدیدترین ارسال ها

بالا