سوال: در مورد پلایگن SQLight

BEHESHT

Well-Known Member
سلام

خسته نباشید

من الان 4 روز هست که دارم هی منابع مصرفی این پلاگین(مثل دیکی) و دمو هاشو بررسی می کنم.

واقعا دیگه کم آوردم فکرم به جایی راه نداد.

می خواستم یه پایگاه داده داشته باشم.

تو پروژه ام یه سرچ داشته باشم که با خاصیت سرچ contains که تو SQLite Database Browser وجود داره تو داده های من سرچ کنه.

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

لطفاً دوستانی در استفاده از این پلاگین استاد هستند تقاضا دارم یه توضیحی در مورد آن و مثال بذارند.

متشکر از لطفتون

یاحق
باحق
تاحق
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
اول از همه، این کد رو امتحان بفرمایید:
کد:
SQLQuery$ = 'SELECT * FROM [I][B]Table[/B][/I] WHERE [I][B]Searched_Field[/B][/I] LIKE "[COLOR=Red]%[/COLOR]' + Search$ + '[COLOR=Red]%[/COLOR]";'
یعنی متن مورد جستجو رو بین دو علامت درصد (%) قرار بدید، همونطور که قبلاً هم عرض کردم، علامت درصد بمعنای هرتعداد کاراکتر هست، یعنی با قرار دادن متن مورد جستجو بین دو %، برنامه دیتابیس شما رو برای تمامی عباراتی که در اونها، حالا در هر قسمت از اونها، عبارت مورد جستجو وجود داره رو جستجو کنه.

[ویرایش] یادم رفت عرض کنم که این کد SQLite هست برای اینکار، که میتونید توی همون مثال Dicti هم با کم و زیاد کردن علامت درصد توی کدها با کارکردش بیشتر آشنا بشید، حالا اگه هر سوالی در رابطه از استفاده از این کد توسط پلاگین دارید بنده در خدمتتون هستم.
 
آخرین ویرایش:

BEHESHT

Well-Known Member
یک دنیا ممنون دوست عزیز آقا محمد گل

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

میشه یه مثال بذارید به همراه دیتابیس که کنارش باشه

بدون اضافات دیگه که کد واسم پیچیده نشه.

آخه من دیکی دیدم فایل ها کلمها تو یه صفحه ی html ظاهراً نمایش داده میشه

قسمت دومش اینه که می خوام هر چیزی که پیدا میشه کار خاصی کنه مثال:

کلمه ی محمد رضا پیدا شد کد اجرایی مخصوص به خودش هم لود شه تا اگر کابر کلیک کرد مثال بره صفحه ی محمد رضا یا عکس محمد رضا رو مخفی کنه.

واقعا نمی دونم چطور باید زحمات بی درغ شما رو جبران کنم.

ممنون
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
اونقدرها هم که شما میگین سخت نیست، فقط کافیه زاویه ی نگاهتون رو چند درجه ای عوض کنید...!
فعلاً برای این موردی که شما میگین قبلاً پیمان جان یه مثال ساخته بودن که من عیناً اینجا پیوستش میکنم.

بهتره یه مقدار در مورد مراحل استفاده از دیتابیس و پلاگین SQLite توضیحاتی بدم:
مرحله ی اول قبل از همه، این هست که پلاگین رو به نوعی راه اندازیش کنیم، اینکار در این مثال در اسکریپت Initialization انجام میگیره.
حالا نوبت میرسه به ارسال دستورات [SQL[ite به پلاگین، که باید مقداری با کدهای SQL آشنایی داشته باشین، و خیلی هم ساده هست مثلاً شما برای استخراج اطلاعات از دیتابیس از دستور SELECT استفاده میکنید
در این مثال این قسمت از کد در اسکریپت SearchScript قرار داره.
حالا اگه دستور درستی رو پاس کرده باشین، و اطلاعاتی متناسب با دستوری که فرستادین وجود داشته باشه، خروجی پلاگین یک آرایه خواهد بود که در اون سطر ها با کاراکتر # از هم جدا میشن و ستونها با کاراکتر |
یعنی مثلاً جستجوی ما در ستون User Name سه جواب داشته، یعنی سه سطر از جدول به عنوان جواب برگردونده میشه (که حالا بسته به کد ما ممکنه تعدادی از فیلد ها یا همون ستون های جدول تو جستجو لحاظ نشن)، حالا ما ابتدا با استفاده از توابع مربوط به آرایه ها در MMB و با استفاده از کاراکتر # سطرها رو از هم جدا میکنیم، و سپس در یک حلقه به تعداد سطرها، دوباره با استفاده از توابع آرایه ها و اینبار با استفاده از کاراکتر |، ستونها رو از هم جدا میکنیم (فرض کنید برای هر کاربر سه قسمت مشخص شده، User_Name, Password, ID که اینها ستونهای جدول رو تشکیل میدن و هر سطر شامل این سه ستون میشه)
حالا که تک تک داده ها رو از هم جدا کردیم میتونیم براحتی اونها رو پردازش کنیم، اونها رو در یک شئ HTML نمایش بدیم مثل Dicti یا اونها رو در یک ListBox نمایش بدیم مثل مثال پیمان و یا هر کار دیگه که مدنظرتون باشه.
بهمین سادگی...!

شاید در نگاه اول پیچیده و گنگ بنظر برسه (یا حداقل برای من که اوایل اینطور بود) ولی با کمی کارکردن باهاش، خیلی براتون ساده میشه.

موفق باشید
 

پیوست ها

  • search.rar
    179.8 کیلوبایت · بازدیدها: 208

BEHESHT

Well-Known Member
بازم ممنون از این همه لطف و محبتت محمد جان بازم ان شا الله در صدد جبران کردنم

من الان مثال دانلود کنم بشینم آنالیز کنم

اگه خدا بخواد راه بیافتیم و گرنه باز باید مزاحمتون بشیم.
 

M.A.D.S

Banned
محمد جان اگه بتونی یه مثال فارسی برای من بذاری ممنون میشم
مثال این کارها رو بتونه انجام بده : اضافه کردن کتاب . حذف کتاب . ویرایش کتاب . نمایش کل کتابها . جستجو بین کتابها
البته وقتی میخواهیم کتاب اضافه کنیم ، نام نویسنده و تعداد صفحات هم باید نوشته بشه که باید به عنوان یکی از قسمتهای مثال بذارین
ممنون
 

BEHESHT

Well-Known Member
سلام خسته نباشید خدا قوت

آقا محمد من الان نشستم با کلی تفکر ترجمه یه چیزهایی فهمیدم

تونستم کماکان از اسکریپت Initialization و SearchScript از مثال آقا پیمان یه چیزهایی بفهمم

حالا اومدم امتحان پس بدم

برآوردم Initialization این بود که انگار هندل موتوره و تقریبا واسه همه ی برنامه ها یکی و فقط باید توش آدرس دیتا بیس رو مشخص کنیم و بس فقط از این متونش سر در نیاوردم واسه چیه:
کد:
 **Here we like to get our database size to let users know.
    **Return value is in bytes.
    PluginRun("PlugIn","DBFileSize")
    PluginGet("PlugIn","DBSize")
    DisplayValue("DatabaseSize","DBSize")
خب بعد از مانور رو SearchScript این دریافتم بود: محدوده ی انتخاب رو گسترش می دیم و به پلاگین ارسال می کنیم و ازش داده و یا خطا(error ) موجود رو دریافت می کنیم.
تو این بخشم کمی رو این مفاهیم به مشکل خوردم:
کد:
SearchQuery$ = [COLOR=Red]'SELECT * FROM peyman WHERE SoftName LIKE \[/COLOR]''+'%'+ text$+'%\';'
این قسمت قرمز + سمی کالن ";" اینجا چه نقشی رو بازی می کنند.

و این که
کد:
PluginGet("PlugIn","Results$")
PluginGet("PlugIn","Rows")
اینجا نتایج روی یه متغییر رشته ای ذخیره میشه سوالم:

خط دوم واسه چیه؟ واسه سطره؟

اگه واسه سطره پس چرا ستون ها ذخیره نمی شند فقط سطر ها اومدن اینجا

بعد یعنی:Rows یه متغییر عددی است؟


وای چقدر سوال پرسیدم.

پر رویی و جسارت بنده رو که این همه سوال می کنم و شما رو اذیت می کنم با این نادانسته هام ببخشید.

تشکر خیلی خیلی خیلی ... ممنون:rose:
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
سلام،
اول اينكه بسيار خوشحال ميشم بهتون كمك كنم، بخصوص در اين زمينه كه كمتر بهش توجه شده

درسته، اسكريپت initialization براي راه اندازي پلاگين هست و شما ميتونيد همين اسكريپت رو كپي كنيد و فقط مسير ديتابيستون رو عوض كنيد تا پلاگين با ديتابيس شما كار كنه.
اون كد رو هم كه مشخص كردين براي بدست آوردن سايز ديتابيس به بايت هست.

شكل كلي دستور SELECT اين هست:
کد:
SELECT [نام ستون] FROM [نام جدول] WHERE [شرط موردنظر];
گزاشتن علامت سمي كالن هم در آخر كدها ضروريه
خب كد SQL در مثال پيمان اينه:
$text = WinRAR
کد:
SELECT * FROM peyman WHERE SoftName LIKE 'WinRAR';
كه معنيش اين ميشه: تمام ستونها رو از جدول peyman انتخاب كن در صورتي كه مقدار ستون SoftNameشون برابر WinRAR باشه، يعني اين دستور كل جدول peyman رو براي كلمه ي WinRAR جستجو ميكنه.
در واقع با اين دستور هر سطري كه به عنوان جواب برگردونده بشه شامل تمام ستونهاي جدول ميشه.

اینجا نتایج روی یه متغییر رشته ای ذخیره میشه سوالم:
خط دوم واسه چیه؟ واسه سطره؟
اگه واسه سطره پس چرا ستون ها ذخیره نمی شند فقط سطر ها اومدن اینجا
بعد یعنی:Rows یه متغییر عددی است؟
بله، خط دوم تعداد سطرها رو در يك متغير عددي ذخيره ميكنه،
فرض منيد ما يه جدول داريم كه داراي چهار ستون (عمودي) نام، نام خواندگي، سن، تحصيلات هست؛
حالا ما براي هر شخص جديدي كه ميخايم تو جدول اسمشو ثبت كنيم بايد اين چهارتا ستون رو پر كنيم، يعني هر سطر شامل اين چهارتا ستون ميشه (تعداد ستونها رو كه ما ميدونيم، چون خودمون ديتابيس رو ساختيم، بايد تعداد سطرها رو در هر جستجو بدست بياريم تا ببينيم چند تا جواب داريم)

در واقع ما به تعداد اين سطرها در يك حلقه سطرها رو ازهم جدا ميكنيم تا اطلاعاتمون درست از هم تفكيك بشن، همونطور كه تو پست قبل هم اشاره كردم، سطرها رو با كاراكتر # از هم جدا ميكنيم.

اميدوارم تونسته باشم منظورم رو درست رسونده باشم، اگه غير اينه بفرماييد تا بيشتر توضيح بدم.
موفق باشيد
 
آخرین ویرایش:

BEHESHT

Well-Known Member
خیلی ممنون توضیحاتتون واقعا کامل بود.

اما من علمم کمه و تمرین زیاد نیست مزاحمتون میشم.

می بخشید این * تو کدهای آقا پیمان یعنی نام ستون درسته؟(اگه آره خب نام ستون اینجا عین عکس که گذاشتم softName هستش.

بعد این کلمه like اینجا چه نقشی رو بازی می کنه من هیچ این لیک رو تو دیتا بیس ندیدم.

تصویر:

..........................
attachment.php


where مگه شرط نیست چرا جای شرط اسم ستون نوشته شده + like

اینها واقعا گیج ام کردند و یه جور هایی از ادامه کار بازم داشتند:sad:

تشکر محمد جان:rose:
 

پیوست ها

  • untitled.JPG
    untitled.JPG
    11.9 کیلوبایت · بازدیدها: 152

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
LIKE يك عملگر هست، و به اين معنا هست كه عبارت مورد جستجو شبيه فلان عبارت باشه، بيشتر در مورد كوچك و بزرگي حروف هست، بجاي اين عبارت ميتونيد از علامت مساوي (=) هم استفاده كنين

در مورد *(ستاره یعنی همه)، فرض كنين اين جدول سه تا ستون داشته باشه، علاوه بر SoftName , Author و Price، حالا اگه ما بجاي ستاره نام يكي از اين سه ستون رو بنويسيم، جوابي كه به ما داده ميشه، مثلاً اگه 10 سطر باشه،اين سطرها بجاي اينكه سه ستون داشته باشن، يك ستون دارن و اون هم همون ستوني هست كه نامش رو ذكر كردين و بقيه ستونها لحاظ نميشن، ولي اگه ستاره بزارين هر سطر از جواب شامل تمام ستونها ميشه (اگه به اطلاعات تمام ستونها نياز ندارين، ميتونين با ذكر نام مثلاً فقط دو ستون از تمام ستونها، حجم جوابهاي برگشتي رو كم كنين و راحت تر پردازششون كنين)
 
آخرین ویرایش:

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
آقای nevecom نمی تونین چیزی رو که من گفتم رو بسازین ؟
متاسفانه وقت اجازه نمیده که یه پروژه ی کامل رو برای شما انجام بدم،
ولی خب، فکر کنم با توجه به پرسش و پاسخ های انجام شده تو این مبحث، قادر باشین که مقداری از کار رو انجام بدین، هر جا هم که مشکل داشتین، مثل آقا پوریا سوالتون رو مطرح بفرمایین، با کمال میل در خدمتتون خواهم بود.
 

BEHESHT

Well-Known Member
بازم ممنون

متسفانه یه مشکلی واسم پیش اومده نمی تونم فعلا ادامه بدم(تا پنجشنبه)

تورو خدا بنده رو عفو کنید محمد جان
 

behjati mohamma

کاربر VIP
با سلام لطفا درمورد کد آپدیت هم توضیح دهید منظورم این کد میباشد
کد:
Title$ = 'Updating Record'
Text$ = '"Are you sure?"'
Flag= 1
Params$ = Text$+','+CHAR(Flag)
MessageEx("Title$","Params$")
If (CBK_MsgEx =1) Then
  If (R<>0) Then
    UpdateQuery1$ = 'UPDATE contacts SET FirstName = \''+FirstName$+'\',LastName = \'' + LastName$ +'\',Company =\''+Company$+'\''
    UpdateQuery2$ = ',Street=\''+Street$+'\',City=\''+City$+'\',State=\''+State$+'\',Country=\''+Country$+'\',ZipCode=\''+ZipCode$+'\''
    UpdateQuery3$ = ',Telephone=\''+Telephone$+'\',Email=\''+Email$+'\',Website=\''+Website$+'\',Comment=\''+Comment$+'\''
    UpdateQuery4$ = ' WHERE ID = '+CHAR(R)+';'
    UpdateQuery$  = UpdateQuery1$ + UpdateQuery2$ + UpdateQuery3$ + UpdateQuery4$
    PluginSet("PlugIn","UpdateQuery$")
    PluginRun("PlugIn","UpdateDB")
    PluginGet("PlugIn","Updated")
    PluginRun("PlugIn","DBError")
    PluginGet("PlugIn","Error$")
    If (Updated = 1) Then
      Message("Record updated successfully.","")
      R=1
      RunScript("ReadFirstRow")
      Return()
    Else
      Message("Error updating record.","Error$")
      Return()
    End
  Else
    Message("No record found.","")
    Return()
  End
End
با تشکر
بهجتی
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
َشما چه قسمتی از این کد رو متوجه نمیشید ؟
این کد همونطور که فرمودید اطلاعات یک رکورد رو با اطلاعات جدید آپدیت میکنه
این کد در واقع اطلاعات یک رکورد در جدول contacts رو آپدیت میکنه، بشکلی که اطلاعات موجود در فیلد FirstName رو برابر متغیر$FirstName قرارمیده، و برای فیلد LastName بهمین شکل و ...، و تمام این عملیات روی رکوردی انجام میگیره که مقدار فیلد ID اون برابر متغیر عددی R باشه (';'+(WHERE ID = '+CHAR(R')
متغیر $UpdateQuery حاوی کد SQLite مربوطه هست که توسط دستور UpdateDB این کد به پلاگین ارسال میشه و پلاگین عملیات آپدیت رو انجام میده.
 

behjati mohamma

کاربر VIP
بعد این پلاگین ListViewPlugIn به کار رفته درصفحه 4 مثال اول را از کجا میشه دانلود کرد
 

silvercover

کاربر متخصص
چرا این کد باید (';'+(where id = '+char(r باشد
کلمه char چرا

از این تابع در بیلدر برای تبدیل اعداد به رشته استفاده میشه. از اونجایی که باید دستور sql به صورت رشته ای به پلاگین ارسال بشه ما نیاز داشتیم که مقدار r رو که از نوع متغیر های صرفا عددی بوده به رشته ای تبدیل کنیم.

بعد این پلاگین listviewplugin به کار رفته درصفحه 4 مثال اول را از کجا میشه دانلود کرد

از اینجا:
 

پیوست ها

  • listview.zip
    6.1 کیلوبایت · بازدیدها: 53

M.A.D.S

Banned
آین پلاگین رو کی ساخته ؟
این پلاگین فارسی رو هم ساپورت می کنه ؟
 

silvercover

کاربر متخصص
آین پلاگین رو کی ساخته ؟
این پلاگین فارسی رو هم ساپورت می کنه ؟

کدوم پلاگین؟ اگر منظور شما SQLite هست که بنده پیشکش شما دوستان کردم. اما پلاگین ListView رو سازنده پلاگین SmallPlugIn یعنی سرگئی کوچرف ساخته.

بله از فارسی هم پشتیبانی می کنند.
 

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

بالا