شما عضو این انجمن نبوده یا وارد نشده اید. لطفا برای مشاهده کامل انجمن و استفاده از آن وارد شوید یا ثبت نام کنید .

مهمان گرامی، خوش‌آمدید!
شما قبل از این که بتوانید در این انجمن مطلبی ارسال کنید باید ثبت نام کنید.

نام کاربری
  

گذرواژه‌
  





جستجوی انجمن‌ها

(جستجوی پیشرفته)

آمار انجمن
» اعضا: 3,556
» آخرین عضو: Knomid
» موضوعات انجمن: 10,404
» ارسال‌های انجمن: 14,588

آمار کامل

کاربران آنلاین
در حال حاضر 306 کاربر آنلاین وجود دارد.
» 0 عضو | 306 مهمان
،

آخرین موضوع‌ها
Womens From Your City - N...
انجمن: پزشکی
آخرین ارسال توسط: hnmhamid70
5 ساعت پیش
» پاسخ: 0
» بازدید: 13
Find Casual Dates in Your...
انجمن: معرفی سایت، وبلاگ و خدمات
آخرین ارسال توسط: alimahammadian
۰۴/۱۱/۱۱، ۱۲:۰۱ عصر
» پاسخ: 1
» بازدید: 686
Spice Up Your Night: Meet...
انجمن: معرفی سایت، وبلاگ و خدمات
آخرین ارسال توسط: imatinrezaei
۰۴/۱۱/۱۱، ۰۴:۵۶ صبح
» پاسخ: 2
» بازدید: 828
verified women seeking ad...
انجمن: معرفی سایت، وبلاگ و خدمات
آخرین ارسال توسط: asadj
۰۴/۱۱/۱۰، ۱۲:۴۷ صبح
» پاسخ: 2
» بازدید: 554
فروش لوله و اتصالات پلیمر...
انجمن: گفتگوی آزاد
آخرین ارسال توسط: farzaneh
۰۴/۱۰/۱۷، ۰۲:۲۱ صبح
» پاسخ: 0
» بازدید: 108
هامون ابزار؛ انتخاب حرفه‌...
انجمن: گفتگوی آزاد
آخرین ارسال توسط: ngeekgirl
۰۴/۱۰/۱۴، ۱۱:۴۱ عصر
» پاسخ: 0
» بازدید: 128
Womens In Your Town - No ...
انجمن: پزشکی
آخرین ارسال توسط: hichkas62
۰۴/۱۰/۱۰، ۰۱:۴۲ صبح
» پاسخ: 0
» بازدید: 118
Girls In Your City - No S...
انجمن: معرفی سایت، وبلاگ و خدمات
آخرین ارسال توسط: mohsen.h
۰۴/۱۰/۶، ۰۷:۱۹ عصر
» پاسخ: 0
» بازدید: 134
Local Ladies Looking for ...
انجمن: معرفی سایت، وبلاگ و خدمات
آخرین ارسال توسط: sima12
۰۴/۱۰/۵، ۰۳:۲۹ عصر
» پاسخ: 3
» بازدید: 1,286
Meet Fun Women Tonight in...
انجمن: معرفی سایت، وبلاگ و خدمات
آخرین ارسال توسط: black13
۰۴/۹/۳۰، ۰۶:۰۱ عصر
» پاسخ: 1
» بازدید: 634
verified profiles for adu...
انجمن: معرفی سایت، وبلاگ و خدمات
آخرین ارسال توسط: Amfh
۰۴/۹/۲۸، ۰۶:۵۶ صبح
» پاسخ: 1
» بازدید: 336
Womens In Your City - Ano...
انجمن: معرفی سایت، وبلاگ و خدمات
آخرین ارسال توسط: ofoghit
۰۴/۹/۲۷، ۰۱:۲۲ صبح
» پاسخ: 0
» بازدید: 152
Girls From Your Town - An...
انجمن: معرفی سایت، وبلاگ و خدمات
آخرین ارسال توسط: ofoghit
۰۴/۹/۲۵، ۰۳:۳۷ عصر
» پاسخ: 0
» بازدید: 160
JAILBAIT YOUNG VIDEO ДАРН...
انجمن: معرفی سایت، وبلاگ و خدمات
آخرین ارسال توسط: golabybahbah
۰۴/۹/۲۴، ۰۵:۴۴ عصر
» پاسخ: 3
» بازدید: 881
Womens From Your Town - A...
انجمن: معرفی سایت، وبلاگ و خدمات
آخرین ارسال توسط: moji13688@gmail.com
۰۴/۹/۲۳، ۱۰:۵۷ عصر
» پاسخ: 0
» بازدید: 159

 
  به روز رسانی ردیف ها در MySQL با UPDATE
ارسال کننده: saberi - ۹۴/۶/۲۳، ۰۷:۵۳ عصر - انجمن: MySql - بدون پاسخ

یکی دیگر از دستورات مربوط به مدیریت اطلاعات در MySQL، دستور UPDATE است که پس از INSERT INTO و SELECT FROM می تواند بیشترین کاربرد را داشته باشد، فلسفه پیدایش و تعریف این دستور نیز به این جهت است که بتوانیم بدون حذف ردیف های موجود، اطلاعات آنها را به روز کنیم، به طور مثال فرض کنید اسامی افرادی را در یک جدول به همراه شماره تلفن آنها ذخیره کرده ایم و اکنون می خواهیم بدون اینکه ردیف مورد نظر حذف شود، تنها شماره تماس فرد را تغییر دهیم، یعنی اطلاعات قبلی مربوط به شماره تماس را حذف و اطلاعات جدید را جایگزین آن کنیم، در این گونه موارد است که دستور UPDATE کاربرد دارد، در ادامه به صورت جزئی تری با این دستور آشنا خواهیم شد.
شیوه نگارش (syntax) دستور UPDATE

شیوه نگارش (syntax) و نحوه استفاده از دستور UPDATE در MySQL بسیار ساده و کاربردی است، در واقع مانند سایر دستورهای مربوط به پایگاه داده، از جمله INSERT INTO و SELECT FROM، دستور UPDATE نیز از عناصر تعریف شده و خاص خود پیروی می کند که عبارتند از SET،UPDATE و WHERE، عنصر UPDATE بخش کلیدی پرس و جو، SET عملیات مورد نظر و WHERE ردیف هایی است که تحت تاثیر قرار می گیرند، به مثال زیر توجه کنید.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
در مثال بالا، از جدول فرضی tb_name، ستون های tel_column و age_column را به روز رسانی کردیم در جایی که ردیف یا ردیف های ستون user_column برابر مقدار فرضی ali باشد، به این ترتیب اطلاعات قبلی ذخیره شده در ردیف ها حذف و با مقادیر جدید به روز رسانی می گردند، بدون اینکه خود آن ردیف ها حذف شوند.
نکته: برای به روز رسانی چندین ستون با یک دستور UPDATE و جداسازی آنها، از علامت , به صورتی که در مثال آمده است استفاده کنید.

یک مثال کاربردی با دستور UPDATE

برای آشنایی بیشتر با کاربرد دستور UPDATE در MySQL، این قسمت از آموزش را با یک مثال کاربردی به پایان می بریم؛ فرض کنید اسامی کاربران سایت خود را در جدولی به نام users ذخیره کرده ایم که این جدول دارای چند ستون با نام های username، password، status و ... است، حال می خواهیم این امکان را به کاربران بدهیم تا بتوانند کلمه عبور خود را تغییر دهند، در چنین شرایطی می توان با استفاده از دستور UPDATE این کار را به راحتی انجام داد که در زیر یک نمونه از آن را ملاحظه می کنید.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
توضیح:
- دقت کنید، دستورات MySQL در اکثر مواقع، قبل از هر چیز باید توسط کدهای php کنترل شده و با هدف مشخصی استفاده گردند، به این معنی که هیچ زبان برنامه نویسی خود به خود نباید کاری انجام دهد بلکه تنها باید به عنوان یک ابزار در اختیار برنامه نویس باشد تا منظور او را به مفسر سیستم تفهیم کند، از این رو باید بدانید که کی و کجا از چه دستوری می توانید استفاده کنید، البته این موضوع تا حدود زیادی به تمرین و تجربه نیز بستگی دارد.
- پرس و جوی فرضی بالا اطلاعات کلمه عبور یک کاربر را به روز رسانی می کند، همان طور که ملاحظه می کنید از WHERE و AND برای اطمینان و محدودسازی ردیف های مورد نظرمان استفاده کرده ایم، همچنین از متغیرهایی برای مقادیر در دستور استفاده شده است که می توانند به فرض از یک فرم HTML و با متد POST دریافت شده باشند.
- همان طور که گفتیم، قبل از اجرای پرس و جوهای مربوط به دیتابیس، می توانید عملیات کاربر را با برنامه نویسی php کنترل و مدیریت کنید، به فرض از اعتبار سنجی با if و else یا isset استفاده کرده و سپس اجازه اجرای پرس و جو را بدهید، یا از دیگر قابلیت های php با توجه به هدف و برنامه خود استفاده کنید.

چاپ این مطلب

  توابع تجمعی (Aggregate Functions) در MySQL
ارسال کننده: saberi - ۹۴/۶/۲۳، ۰۷:۴۳ عصر - انجمن: MySql - بدون پاسخ

اگر آموزش های مقدماتی بخش MySQL را دنبال کرده باشید، حتما به خاطر دارید در مبحث گذشته که در مورد استفاده از GROUP BY صحبت کردیم، گفتیم که توابع مربوط به GROUP BY را در اصطلاح توابع تجمعی یا aggregate functions می گویند (شامل COUNT، MAX، MIN، SUM، AVG و...) و قرار شد که در آموزش های بعد به آن بپردازیم، از این رو طبق روال، این مطلب را اختصاص داده ایم به مبحث مذکور تا با فراگیری آن، بیش از پیش و با تسلط بیشتر بتوانیم به نحو دلخواه با php، اطلاعات موجود در دیتابیس MySQL را مدیریت کنیم، ذکر این نکته نیز لازم است که استفاده از این توابع همیشه هم ضروری نیست و بستگی به نوع نیاز شما دارد، اما در کل یک برنامه نویس خوب کسی است که از همه ظرفیت های موجود آگاه باشد، حتی اگر از آنها هرگز استفاده نکند.
توابع تجمعی (Aggregate Functions) به چه معنی است؟

شاید این سوال به ذهن شما رسیده باشد که در کل توابع تجمعی (Aggregate Functions) به چه معنی است؟ پاسخ این سوال را اینگونه می توان داد که در PHP و MySQL برای گروه بندی در هنگام کار با اطلاعات عددی و آماری و بدست آوردن نتایج، بعد از یک سری محاسبات ریاضی (در حد معمولی یا پیشرفته)، توابعی از پیش تعریف شده که با تنظیم آنها در هنگام پرس و جو از پایگاه داده، طبق نیاز ما عملیات مورد نظر انجام شده و نتایج برگردانده می شوند، به فرض در مثالی که در ادامه خواهیم دید، اطلاعات خودروهایی با قیمت ها و رنگ های مختلف در دیتابیس موجود است، حال اگر بخواهیم خودرو ها را بر اساس رنگ گروه بندی کرده و در عین حال، ارزان ترین قیمت آن رنگ ها را انتخاب کنیم، ناچاریم از تابع MIN که جزء Aggregate Functions است استفاده نمائیم (در ادامه خواهیم دید).

ساخت جدول و وارد کردن اطلاعات نمونه در MySQL

اجازه بدهید برای یادآوری هم که شده، ابتدا با استفاده از کد زیر، اطلاعات نمونه ای را در دیتابیس فرضی test ایجاد کنیم، این اطلاعات شامل جدول tb_cars و شش ردیف پنج ستونه از اسامی، مدل، رنگ و قیمت خودروها است (به اضافه ستون id که با خاصیت AUTO_INCREMENT است و به صورت خودکار ایجاد شده و افزایش می یابد).

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
توضیح:
- برای ذخیره این اطلاعات نمونه در پایگاه داده، کافی است یک دیتابیس با نام test، ترجیحا در لوکال هاست بسازید و کد بالا را در یک فایل php ذخیره کرده و اجرا کنید.
- در کد بالا، ابتدا با دستور CREATE TABLE جدول فرضی tb_cars را ساخته ایم که درون خود ستون هایی با نام id (از نوع INT) و name، model، color و price (همگی از نوع VARCHAR) را دارد.
- در قسمت ALTER TABLE یک دستور اضافه برای کار با حروف فارسی قرار داده ایم تا یونیکد جداول به صورت استاندار utf8 تبدیل شود که برای کار با داده های زبان فارسی در MySQL مناسب است (البته در این مثال تنها از حروف انگلیسی استفاده شده است).
- در بخش بعد از کد بالا، اطلاعات خودروها در یک آرایه چند بعدی یا (Multidimensional) ذخیره شده است تا با یک حلقه for مقادیر با دستور INSERT INTO وارد دیتابیس شوند (برای درک صحیح این بخش به آموزش های php در مبحث حلقه و آرایه مراجعه کنید).

استفاده از تابع MIN

اولین تابعی که قصد بررسی آن را داریم، تابع MIN در MySQL است، به کاربردن این تابع باعث می شود که کم ترین مقادیر از موارد مورد نظر انتخاب شوند، به طور مثال در کد زیر، از خودروهای با رنگ همسان، ارزان ترین (رنگ ها) را انتخاب کرده ایم.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

خروجی پرس و جوی بالا از پایگاه داده به صورت زیر خواهد بود:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

همانطور که ملاحظه می کنید، رسم الخط یا همان syntax این تابع به گونه ای است که باید هم در query و هم در تابع mysql_fetch_array از آن در ستون مورد نظر استفاده شود، نکته دیگری که باید به آن توجه شود این است، ستونی که به عنوان گروه بندی از آن استفاده می شود به عنوان مبنای کار و ستونی که پائین ترین مقادیر از آن انتخاب می شود به عنوان پارامتر دوم دارای اهمیت است.

استفاده از تابع MAX

تابع دیگری که جزء خانواده توابع تجمعی یا Aggregate Functions است، تابع MAX است که دقیقا کارکردی شبیه MIN دارد، با این تفاوت که در اینجا بزرگ ترین مقادیر انتخاب می  شوند.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
خروجی پرس و جوی بالا از پایگاه داده به صورت زیر خواهد بود:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
استفاده از تابع AVG

بعد از آشنایی با تابع MIN و MAX نوبت به بررسی تابعی دیگر از این خانواده است، این تابع AVG نام دارد که در واقع مخفف عبارت average یا میانگین است، با استفاده از تابع AVG می توانیم حد متوسط مقادیر مورد نظر را از ستون های گروهی، محاسبه کرده و نشان دهیم.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
خروجی پرس و جوی بالا از پایگاه داده به صورت زیر خواهد بود:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

استفاده از تابع SUM

تابع دیگری که در خانواده توابع تجمعی (Aggregate Functions) دسته بندی می شود، تابع SUM یا حاصل جمع است، این تابع در واقع مقادیر مجموع ستون هایی که با هم گروه بندی می شوند را نشان می دهد.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
خروجی پرس و جوی بالا از پایگاه داده به صورت زیر خواهد بود:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
استفاده از تابع COUNT

آخرین تابعی که در این آموزش قصد معرفی آن را داریم، تابع COUNT است که در واقع نمایانگر تعداد آیتم های هر گروه است، به فرض اگر 5 خودرو مشکی رنگ داشته باشیم، در هنگامی که از ستون color برای GROUP BY استفاده کنیم، تابع COUNT مقادیر 5 را برای این ستون برمی گرداند.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

خروجی پرس و جوی بالا از پایگاه داده به صورت زیر خواهد بود:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
لیست توابع تجمعی به MIN MAX AVG SUM و COUNT محدود نمی شود، MySQL توابع دیگری نیز برای محاسبات آماری پیچیده تر در نظر گرفته است که البته معمولا در برنامه های عادی، کم تر مورد استفاده قرار می گیرند، برای کسب اطلاعات بیشتر در این خصوص، می توانید به سایت رسمی MySQL در آدرس زیر مراجعه کنید:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

چاپ این مطلب

  استفاده از ORDER و GROUP در MySQL
ارسال کننده: saberi - ۹۴/۶/۲۳، ۰۷:۳۶ عصر - انجمن: MySql - بدون پاسخ

در ادامه آموزش مقدماتی کار با php و mysql، نوبت به آشنایی با نحوه استفاده از دستورات  ORDER BY و GROUP BY رسیده است، با ذکر این مقدمه که دستورات ذکر شده در واقع با هدف دسته بندی و مرتب سازی دقیق تر نتایج و به دست آوردن مقادیر مورد نظر در هنگام کار با php و mysql ایجاد شده اند، به عبارتی دیگر، در برنامه نویسی کاربردی، مواردی پیش می آید که ناگزیریم اطلاعات را به صورت مرتب شده نشان دهیم، یا نتایج مشابه را در یک مورد خلاصه کنیم، اینجاست که کاربرد ORDER BY و GROUP BY رهگشای ما خواهد بود که در ادامه آموزش به آن خواهیم پرداخت.

دستور ORDER BY

همانطور که در مباحث گذشته از آموزش  مقدماتی MySQL به طور مختصر دیدیم، از ORDER BY در یک دستور SELECT * FROM استفاده می شود، هدف از به کاربردن آن، تفهیم نحوه مرتب سازی و چینش سلیقه ای و سفارشی نتایج و ردیف های درخواست شده از mysql است، به فرض اگر کاربرانی با مقادیر سنی متفاوت در سایت خود داشته باشیم و بخواهیم اسامی آنها را بر اساس سن مرتب کنیم، خواهیم نوشت:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
خروجی کد بالا می تواند به فرض به شکل زیر باشد.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

همانطور که ملاحظه می کنید، در مثال بالا از جدول table و دو ستون فرضی name و age استفاده کرده ایم.

استفاده از DESC، ASC و تابع rand

در حالت پیش فرض، mysql نتایج را به صورت صعودی (از کوچک به بزرگ یا Ascending) مرتب سازی می کند، اما مرتب سازی به صورت نزولی (از بزرگ به کوچک یا Descending) و همچنین مرتب سازی اتفاقی یا رندوم (Random) با افزودن عباراتی که در زیر مشاهده می کنید، امکان پذیر است.
DESC: مرتب سازی پیش فرض یا صعودی (از کوچک به بزرگ)
ASC: مرتب سازی نزولی (از بزرگ به کوچک)
rand: مرتب سازی به صورت اتفاقی (رندوم)
به مثال های زیر توجه کنید.
نحوه استفاده از DESC برای مرتب سازی و نمایش نتایج به صورت چینش صعودی:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

نحوه استفاده از ASC برای مرتب سازی و نمایش نتایج به صورت چینش نزولی:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
نحوه استفاده از تابع rand برای مرتب سازی و نمایش نتایج به صورت چینش اتفاقی:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
استفاده از LIMIT

استفاده از دستور ORDER BY به تنهایی و بدون محدود کردن تعداد نتایج، می تواند منجر به نمایش تعداد خیلی زیادی از اطلاعات با یک درخواست از دیتابیس شود، از این رو یک پارامتر دیگر به نام LIMIT را می توانیم به دستور خود اضافه کنیم، LIMIT تعداد ردیف هایی را که به عنوان نتایج یک پرس و جو از دیتابیس به دست می آید، محدود می کند، به فرض دستور زیر:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
تنها 5 کاربر را به صورت اتفاقی انتخاب می کند، همچنین می توان نقطه شروع انتخاب ردیف ها را نیز به mysql تفهیم کرد، بدین منظور برای LIMIT از دو عدد استفاده می کنیم، عدد اول مقادیر ردیفی است که با توجه به ORDER BY آن را انتخاب کرده ایم (به فرض شروع از سن 35 سال) و عدد دوم تعداد نتایجی است که پرس و جو را به آن محدود کرده ایم (به فرض 5 عدد).
*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
با استفاده از این شیوه به صورت داینامیک، می توان قابلیت هایی مثل نمایش صفحه به صفحه مطالب را ایجاد نمود که در بحث آموزش های کاربردی در این باره خواهیم گفت.

استفاده از AND و OR

شیوه نگارش (syntax) دستورات php در هنگام کار با mysql این اجازه را به ما می دهد که همانند علامت های && و || از دو عبارت AND و OR در یک query استفاده کنیم، البته نحوه کاربرد آنها در اینجا کمی متفاوت است اما هدف از به کارگیریشان یکی است، از AND برای محدودتر و دقیق تر کردن نتایج و از OR برای وسیع تر کردن شمول نتایج یک پرس و جو استفاده می شود، به فرض اگر بخواهیم فقط کاربران دارای سن بالاتر از 40 و پائین تر از 20 را نمایش دهیم، می نویسیم:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
دستور بالا، کاربرانی را که سن آنها بالاتر از 40 یا پائین تر از 20 باشد، در لیست نتایج پرس و جو از پایگاه داده نمایش می دهد.

استفاده از GROUP BY

یک قابلیت کاربردی دیگر که در دسته بندی و نمایش بهتر نتایج حاصل از پرس و جوی پایگاه داده می توان از آن استفاده کرد، قابلیت گروه بندی نتایج دارای وجه مشترک در یک نتیجه است، این قابلیت توسط پارامتر GROUP BY به دست می آید، به فرض اگر بخواهیم گروه بندی را بر اساس شهر کاربران داشته باشیم، خواهیم نوشت:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
به این صورت از بین کاربران یک شهر، تنها یک عضو با توجه به نحوه چینش دستور ORDER BY انتخاب شده و در نتایج نشان داده می شود.

مثال دیگر از کاربرد GROUP BY در mysql:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

در هنگام استفاده از قابلیت GROUP BY و ORDER BY باید دقت کنید که از آنها به ترتیب استفاده شود، در غیر اینصورت mysql خطای syntax را نمایش خواهد داد.

توابع مربوط به GROUP BY را در اصطلاح توابع تجمعی یا aggregate functions می گویند (شامل COUNT، MAX، MIN، SUM، AVG و...) که در آموزش های بعدی به تفصیل راجب آنها خواهیم گفت.

چاپ این مطلب

  نحوه استفاده از WHERE در MySQL
ارسال کننده: saberi - ۹۴/۶/۲۳، ۰۷:۳۰ عصر - انجمن: MySql - بدون پاسخ

همان طور که پیش تر در آموزش های مقدماتی MySQL گفتیم، هنگامی که با دستور SELECT FROM در MySQL کار می کنیم، نیاز به ایجاد محدودیت هایی داریم تا اطلاعات دقیق تری بدست آوریم، به عنوان مثال اگر لیست اسامی ده هزار نفر را در دیتابیس خود به صورت نام، نام خانوادگی و سن داشته باشیم و بخواهیم به فرض تنها افرادی را که اسم آنها بهرام است، در خروجی داشته باشیم، باید از WHERE و پارامترهای آن استفاده کنیم، WHERE در واقع نشانی دقیق ستون و سطرهایی که ما از MySQL پرس و جو می کنیم را تعریف می کند، از اینرو در کار با پایگاه داده و کدهای php اهمیت و کاربرد زیادی دارد، در ادامه آموزش، خواهیم دید که این عنصر تا چه میزان می تواند دقت و سرعت کار ما را افزایش دهد.

چگونه از WHERE استفاده کنیم؟

شیوه نگارش یا همان syntax عنصر WHERE و پارامترهای آن چندان سخت نیست، کافی است آن را در ادامه دستور SELECT FROM قرار دهید، مثال زیر یک نمونه از آن را نشان می دهد.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

در مثال بالا از جدول فرضی table جایی که ستون id برابر یک است را انتخاب کرده ایم، با این کار اطلاعات کل یک ردیف که آی دی آن برابر یک است، در دسترس قرار می گیرد، مثلا ممکن است در آن ردیف اطلاعات دیگری نظیر نام، نام خانوادگی، سن و... را (از قبل) ذخیره کرده باشیم.

استفاده از علامت بزرگتر، کوچکتر و مساوی در WHERE

عبارت WHERE در یک دستور SELECT FROM، تعیین کننده منظور دقیق ما در انتخاب اطلاعات است، درست مثل اینکه در یک کتابخانه به کتابدار بگوییم ازمیان قفسه ها، بخش تاریخ، کتاب تاریخ جهان، انتشارات فلان و... را بیاورد، تمام جزئیات در درخواست ما باید با عباراتی بیان شوند، این کار در MySQL با پارامترهای WHERE صورت می گیرد، یکی از این پارامترها علامت های بزرگتر، کوچکتر و مساوی (<=>) هستند، با این علامت ها مثلا می توانیم به دیتابیس بگوییم ردیف هایی را انتخاب کند که به فرض سن کاربر از 25 سال بیشتر باشد، این کار را به صورت زیر به پایگاه داده تفهیم می کنیم.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
در واقع عبارت بالا به این معنی است: از جدول فرضی table ستون age، تنها ردیف هایی را انتخاب کن که مقادیر سن کمتر از 25 باشد.

همین کار در مثال زیر، این بار با علامت نا مساوی انجام شده است.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
مفهوم عبارت بالا به این معنی است: از جدول فرضی table ستون age، ردیف هایی را انتخاب کن که مقادیر سن برابر 20 نباشد.
به خاطر داشته باشید، عبارات بزرگتر و کوچکتر، تنها در مقایسه اعداد کاربرد دارند و بهتر است نوع داده ها به صورت INT یا عددی باشند، اما از علامت مساوی (و نامساوی)، هم برای اعداد و هم برای مقادیر رشته ای (متنی) می توان استفاده کرد.

استفاده از عبارت LIKE در WHERE

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

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

اکنون می خواهیم تنها کسانی که دو حرف اول نام آنها با حروف A و R شروع شده را انتخاب کنیم، واضح است که این کار با علامت هایی که پیشتر گفتیم ممکن نیست، چرا که آنها یک عدد یا یک مقدار صحیح را مقایسه می کنند، مثلا با عبارت مساوی تنها می توانیم بنویسیم:
*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
این دستور فقط ردیف یا ردیف هایی را که مقادیر نام در آن Arman باشد، انتخاب می کند، اما با استفاده از عبارتی دیگر در WHERE، این مشکل قابل حل است، این عبارت نیز LIKE و علامت  % (percent Wildcard) است، در مثال زیر با کاربرد آن بیشتر آشنا می شوید.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

وقتی پس از دو حرف Ar علامت % را قرار می دهیم، در واقع به دیتابیس می گوییم که فقط دو حرف اول برایمان اهمیت دارد و بقیه عبارت، هر چیزی می تواند باشد، دستور بالا اسامی زیر را برایمان انتخاب می کند.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

حال تصور کنید کاربری با نام فرضی PHPArmin نیز در بین کاربران خود داریم، دستور بالا این کاربر را انتخاب نمی کند، چرا که حروف ابتدایی عبارت  PHPArmin با Ar شروع نشده است، اما تغییر آن به صورت زیر، شامل این نوع اسامی نیز می شود.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

در واقع با افزودن یک % در ابتدا و انتهای عبارت مورد پرس و جو، دیتابیس چنین برداشت می کند که تنها برایمان وجود عبارت Ar در بین یک اسم مهم است و به ابتدا یا انتهای آن کاری ندارد.
ذکر این نکته ضروری است که در کار با  عبارت LIKE و علامت  %، باید دقت کنید که دامنه انتخاب ردیف ها را بیش از حد مورد انتظار، توسعه ندهید، برای اعداد نیز بهتر است از علامت های <=> به جای LIKE استفاده کنید.
در مباحث بعدی در رابطه با تکمیل WHERE با پارامترهای بیشتر و نحوه نمایش و دسته بندی اطلاعات، صحبت خواهیم کرد.

چاپ این مطلب

  انتخاب ردیف ها با دستور SELECT FROM در MySQL
ارسال کننده: saberi - ۹۴/۶/۲۳، ۰۷:۲۵ عصر - انجمن: MySql - بدون پاسخ

تا این قسمت از آموزش مقدماتی کار با mysql و کدهای php، دیدیم که چگونه با دستورات مربوط به پایگاه داده در mysql، php را مدیریت کنیم، نحوه اتصال، ساخت دیتابیس، جدول و ردیف با دستور CREATE را فرا گرفتیم و اطلاعات را با INSERT INTO در پایگاه داده خود ذخیره کردیم، همچنین در آموزش قبلی به طور مختصر کلیاتی در رابطه با mysql_query گفتیم و وعده دادیم که در ادامه در این خصوص بیشتر خواهیم گفت، اکنون می خواهیم به وعده خود جامع عمل بپوشانیم و در مورد دستور SELECT FROM در MySQL صحبت کنیم.

کاربرد SELECT FROM در MySQL چیست؟

اگر خاطرتان باشد، پیش تر گفتیم که صرف ساخت دیتابیس، جدول و ردیف و وارد کردن اطلاعات در آن، تمام نیازهایمان (و شاید خیلی از نیازهایمان) را پوشش نمی دهد، با این کار، صرفا اطلاعات را دریافت می کنیم، اما اگر بخواهیم از آنها مجددا استفاده نمائیم، نیاز داریم که به کمک PHP موارد را فراخوانی کنیم، این کار در تعامل بین PHP و MySQL توسط SELECT FROM و پارامترهای آن انجام می شود که وظیفه دارد با توجه به نیاز شما و تنظیماتی که انجام داده اید، اطلاعات خاصی را از ردیف های موجود در جداول، فراخوانی کند، تا پردازش روی آنها صورت گرفته و به خروجی ارسال شوند.

شیوه نگارش (syntax) دستور SELECT FROM در MySQL

شیوه نگارش یا syntax دستور SELECT FROM در MySQL به صورت زیر است.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
توضیح:
- در مورد mysql_query، قبلا گفته ایم که یک تابع درونی php برای کار با پایگاه داده است و در واقع یک پُرس و جو و عملیات را بین php و mysql مدیریت می کند.
- دستور SELECT FROM با پارامترهای دیگری از جمه WHERE تکمیل می شود که در بحث های بعدی به طور مفصل در این خصوص خواهیم گفت.
- پس از اینکه یک mysql_query با SELECT FROM اجرا شد، بر اساس نوع درخواست و تنظیمات شما، مقادیری برگردانده می شود (این مقادیر می تواند اطلاعات موجود در دیتابیس یا مثلا تعداد ردیف ها و ... باشد)، برای استفاده از این مقادیر بهتر است mysql_query را با یک متغیر فراخوانی کنیم تا اطلاعات در متغیر قابل دسترسی باشد (در ادامه خواهیم دید).

پارامترهای دستور SELECT FROM در MySQL

SELECT FROM در حالت عادی و بدون وجود پارامترهای محدود کننده، معمولا تمام موارد را از یک جدول برمی گرداند، لذا برای اینکه بتوانیم به دنبال محتوای مخصوصی بگردیم، باید از پارامترهای اضافه استفاده کنیم، یکی از این پارامترها WHERE است که خود زیرمجموعه های دیگری دارد (مثلا استفاده از LIKE و علامت های <،=،> و...)، چون بحث ما به دستور SELECT FROM محدود می شود، موارد پیشرفته تر را که نیاز به دانستن مقدمات بیشتر است، به آینده موکول و در اینجا به ذکر چند مثال بسنده می کنیم.
در مثال های زیر ما با پارامترهای بیشتر، اطلاعاتی دقیق تر از پایگاه داده به دست می آوریم.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

توضیح:
- مقادیر در مثال های بالا کاملا فرضی هستند و صرفا برای آشنایی شما با نحوه نگارش دستورات و پارامترهای SELECT FROM تعریف شده اند.
- همانطور که می بینید برای سه متغیر فرضی name، family و age سه query متفاوت (صرفا جهت مثال) تنظیم کرده ایم.
- به پارامترهایی که بعد از قسمت WHERE آمده اند دقت کنید، در متغیر اول از مقایسه برابری (=) ستون user با مقادیر your name استفاده کرده ایم (یعنی تنها ردیف هایی انتخاب می شوند که نام کاربر your name باشد)، در متغیر دوم از LIKE و LIMIT و در متغیر سوم از علامت های کوچکتر بزرگتر به همراه ORDER BY استفاده کرده ایم (بحث تفصیلی در این خصوص را به آینده موکول می کنیم).
- ملاحظه می کنید که دستورات مربوط به mysql_query در پایگاه داده، بی شباهت به حالت معمول برنامه نویسی با php نیستند.
- دقت کنید که در ارتباط با پایگاه داده توسط php، قبل از همه چیز باید اطلاعات اتصال را فراهم کرده باشید.
نمایش اطلاعات با mysql_fetch_array

پس از اینکه اطلاعات ستون ها و ردیف های مورد نظر را به متغیر خود نسبت دادیم، باید در یک حلقه while در php با کمک تابع mysql_fetch_array، مقادیر موجود را جایگزین کرده و خروجی دهیم، یا پردازش های دیگری روی آنها صورت دهیم.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
توضیح:
- وظیفه تابع mysql_fetch_array این است که مقادیر برگردانده شده توسط mysql_query که در یک متغیر نگهداری می شود را به صورت آرایه هایی قابل استفاده در php در آورد.
- سپس این آرایه ها با کلید ها و مقادیری در دسترس هستند که در قسمت {} درون حلقه while ملاحظه می کنید.
- در مثال بالا درون قسمت {} در حلقه while، مقادیر داخل [] در واقع همان نام ستون های موجود در پایگاه داده هستند که در هر دور حلقه while تا زمانی که مقادیری برای خروجی دادن وجود داشته باشد، تکرار می شوند.
- به طور ساده کد بالا این طور تفسیر می شود: ابتدا مقادیر query با SELECT * FROM و محدود شده با WHERE به متغیر result تعلق می گیرد، سپس mysql_fetch_array مقادیر موجود در result را به متغیر row اختصاص می دهد، در هر دور حلقه while تا زمانی که آرایه ای وجود داشته باشد (true باشد)، ردیف به ردیف (سطر به سطر) به صورت داینامیک مقادیر موجود در ستون ها با عناوین آنها جایگزین می شود و در قسمت خروجی با دستور echo چاپ می گردند.

چاپ این مطلب

  آشنایی با mysql_query در php و دیتابیس
ارسال کننده: saberi - ۹۴/۶/۲۳، ۰۷:۲۳ عصر - انجمن: MySql - پاسخ (2)

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

انتخاب اطلاعات از دیتابیس با php و mysql

در کار با سیستم مدیریت پایگاه داده، انتخاب اطلاعات از دیتابیس امری عادی و پرکاربرد است، مثلا اگر بخواهید مطالب خود را به کاربران نشان دهید، باید آنها را از دیتابیس انتخاب و به صفحه مرورگر انتقال دهید، این کار در php و mysql به کمک عنصری به نام SELECT انجام می شود، به همراه این عنصر، باید از FROM نیز استفاده کنیم، به اینصورت به سیستم خواهیم گفت که ما قصد انتخاب از چه جدولی را داریم، برای مثال کد زیر شیوه نگارش یک درخواست از پایگاه داده به کمک SELECT و FROM را نشان می دهید.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
خروجی اطلاعات از دیتابیس با php و mysql

برای اینکه بتوانیم اطلاعات ارسالی از دیتابیس را در کد php خروجی دهیم به تابع mysql_fetch_array نیاز داریم، ردیف های (سطرهای) انتخاب شده با SELECT و FROM به کمک mysql_fetch_array به صورت آرایه ای از اطلاعات درمی آیند که می توان با شیوه نگارشی زیر از آنها خروجی گرفت.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
در مثال بالا از جدولی فرضی با دو ردیف (ستون) نام و نام خانوادگی، اطلاعات را انتخاب و خروجی داده ایم، درک نحوه کارکرد mysql_fetch_array چندان سخت نیست (در بحث های آینده در این خصوص بیشتر خواهیم گفت)، به طور ساده این تابع اطلاعات ردیف ها را بر اساس SELECT * FROM در خود نگهداری می کند و با متغیر row (عنوانی دلخواه است)، با توجه به مقادیر داخل [] خروجی می دهد.

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

چاپ این مطلب

  نحوه ذخیره کردن اطلاعات با دستور INSERT در MySQL
ارسال کننده: saberi - ۹۴/۶/۲۳، ۰۷:۲۱ عصر - انجمن: MySql - بدون پاسخ

پس از آشنایی با نحوه ساخت دیتابیس، جدول و ردیف با دستور CREATE در MySQL، اکنون نوبت به فراگیری قابلیتی دیگر از این سیستم مدیریت پایگاه داده است، هدف این آموزش آشنایی شما با نحوه ورود اطلاعات از کدهای PHP به وسلیه دستور INSERT INTO در جداول و ردیف های MySQL است، چرا که صرف ساختن پایگاه داده، جدول و ردیف، کاربردی ندارد و همه ی این مقدمات برای فراهم کردن شرایطی است که بتوانیم اطلاعاتمان را ذخیره سازی و در مواقع لزوم از آنها استفاده نمائیم.

گفتیم که قبل از انجام هر کاری، ابتدا باید به پایگاه داده متصل شویم، برای این کار از کدی شبیه به مثال زیر استفاده می کنیم:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
حال فرض کنید در پایگاه داده خود، جدولی داریم با نام cars که می خواهیم لیست چند خودرو و رنگ آنها را در ردیف های (ستون های) car و color ذخیره کنیم، ابتدا با دستور CREATE جدول و ردیف هایمان را ایجاد می کنیم:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
توضیح:
- اطلاعات اتصال را باید با توجه به نام کاربری و کلمه عبور پایگاه داده خود تعریف کنید.
- در مثال بالا جدولی با نام cars ساخته ایم و سه ردیف (ستون) در آن ایجاد کرده ایم (id,car,color).
- INT و VARCHAR نوع داده (Data Types) ای هستند که در ردیف ها ذخیره می شوند، این امکان در MySQL وجود دارد که از مقادیری مثل INT برای اعداد، VARCHAR و CHAR برای متن های کوتاه با مقادیر مشخص (که می توانند حاوی اعداد هم باشند)، یا TEXT، MEDIUMTEXT، LONGTEXT برای متن های طولانی و... استفاده کنید.
- مقادیر NOT NULL و AUTO_INCREMENT جزء ویژگی هایی هستند که هر نوع از داده (Data Types)، مقادیر بخصوص خود را می تواند داشته باشد، مثلا برای INT که یک مقدار عددی است خاصیت AUTO_INCREMENT به معنی افزایش خودکار است، یعنی با هر بار Insert اطلاعات در آن جدول، یک مقدار به id ما به طور خودکار اضافه خواهد شد (1، 2، 3 و...).

افزودن مقادیر با دستور INSERT INTO در دیتابیس

پس از ساختن جدول و ردیف، اکنون می خواهیم نام سه خودرو پیکان سفید رنگ، پژو مشکی و پراید نقره ای را به لیست خود اضافه کنیم، بدین منظور از کدی شبیه به مثال زیر استفاده می کنیم:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
توضیح:
- دستور INSERT INTO مقادیر را در ردیف های تعیین شده ذخیره می کند (به شیوه نگارش آن دقت کنید).
- در عمل، برنامه نویسان وب معمولا به جای نوشتن مجزای دستور INSERT INTO برای هر مقدار، آن را در حلقه های while یا for قرار می دهند و برای هر مقدار، مقادیر را جایگزین می کنند (درک این مطلب نیاز به دانستن نحوه عملکرد for و while در php است).
- در صورت بروز خطا، ادامه کد با die اجرا نخواهد شد و mysql_error علت خطا را نشان خواهد داد.
- فراموش نکنید که پس از پایان کار، حتما با تابع mysql_close، اتصال به پایگاه داده را خاتمه دهید.

چاپ این مطلب

  نگاهی به MySQL، پرکاربردترین سیستم مدیریت پایگاه داده
ارسال کننده: saberi - ۹۴/۶/۲۳، ۰۷:۱۸ عصر - انجمن: MySql - بدون پاسخ

نگاهی به MySQL، پرکاربردترین سیستم مدیریت پایگاه داده

یکی از پرکاربردترین سیستم های مدیریت پایگاه داده که تقریبا در وب رقیبی ندارد، MySQL است؛ تا حدی که امروزه سایتهای بزرگ و معروف نیز از آن استفاده می کنند، فلسفه پیدایش این سیستم جهت تسهیل دسته بندی یکپارچه و منظم اطلاعات و دسترسی آسان تر به آنها است، مخصوصا اگر مطالب و محتوای سایتی مرتب به روز شود، نیاز به پایگاه داده کاملا احساس می شود؛ هر چند فراگیری زبان های برنامه نویسی وب به خودی خود مهم و ضروری است اما امروزه دیگر آموختن MySQL جزء جدا ناپذیری از این مجموعه شده است، خوشبختانه با تسلط نسبی بر روی PHP می توان در مدت کوتاهی نکات ضروری MySQL را فراگرفت و البته مسلما گسترده گی و تنوع قابلیت های سیستم و فراوانی نیازهای کاربران، کمی کار را پیچیده و مشکل می کند.
دسته بندی اطلاعات در پایگاه داده

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

مدیریت پایگاه داده با PHPMyAdmin و PHP

خوشبختانه در اکثر سرورها به همراه MySQL برنامه ی PHPMyAdmin نیز وجود دارد که به کمک آن به راحتی می توانید دستورات مروبط به پایگاه داده را اجرا کنید، به فرض پایگاه جدیدی ایجاد کنید، جداول بسازید، جداول را ستون بندی کرده، ردیف های دلخواه ایجاد و مدیریت کنید، یونیکدها را تغییر دهید و... نکته مهم تر از این، قابلیت کنترل پایگاه داده از طریق دستورات PHP است، خوشبختانه php تقریبا امکانات کاملی را در این خصوص در اختیارمان قرار می دهد، نتیجه اینکه برنامه PHPMyAdmin کار مدیریت مستقیم (با محیط کاربری) پایگاه داده را تسهیل می کند، اما در کدنویسی و برنامه های کاربردی، باید از php استفاده کنیم؛ برای آشنایی بیشتر از بحث تئوری می گذریم و برای شروع، توجه شما را به چند مثال جلب می کنیم.

ارتباط پایگاه داده با php

برای اینکه بتوانیم با پایگاه داده ارتباط بر قرار کنیم قبل از هر چیز باید یوزر و پسورد (نام کاربری و کلمه عبور) و همچنین پایگاه داده ایجاد کنیم، انجام این کار در قسمت مربوط به پایگاه داده و برنامه PHPMyAdmin یا به صورت کدهای php ممکن است (در سرور یا در لوکال هاست)  اکنون همه چیز آماده است تا با کد php پایگاه داده را مدیریت نمائیم.
کد زیر مثالی برای ایجاد ارتباط با پایگاه داده است:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
اطلاعات پایگاه خود را در مقادیر مشخص شده وارد می کنیم، به جای یوزر نام کاربری، در قسمت پسورد کلمه عبور و در قسمت db نام پایگاه داده (دیتابیس) را می نویسیم، اگر همه چیز درست باشد پیام "ارتباط برقرار شد" و "ارتباط با پایگاه داده برقرار شد" را در خروجی خواهیم داشت در غیر این صورت قسمت or die اجرا شده و خطای مربوطه نشان داده می شود؛ نهایتا نیز با دستور mysql_close به ارتباط پایان می دهیم.

اکنون فرض کنید قصد داریم جدولی با نام school و سه فیلد (ستون) ایجاد کنیم، برای این کار از کد زیر استفاده می نمائیم:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
توضیح:
- mysql_query یک دستور مربوط به پایگاه داده را برایمان اجرا می کند.
- CREATE TABLE یکی از query های mysql است که یک جدول و ستون های آن را ایجاد می نماید.
- در کد بالا ردیف (ستون) id با مقادیر INT (عدد صحيح) و NOT NULL (در صورت خالی بودن، بی مصرف نیست) و AUTO_INCREMENT (عملکرد افزایش خودکار) ایجاد می شود و ویژگی کلید اولیه را به آن می دهیم (در این باره بعدا بیشتر خواهیم گفت).
- دو فیلد name و age با خاصیت VARCHAR ایجاد شده اند که مقدار حداکثر مجاز کاراکتر را در خود دارند.
تا اینجا صرفا جهت آشنایی با شیوه نگارش دستوارت mysql و نحوه ارتباط آن با php مثال هایی را ذکر کردیم، درک کامل نحوه عملکرد mysql، نیاز به بررسی مثال ها و مباحث آموزشی بیشتری دارد که در مطالب بعدی به جزئیات و قابلیت های گوناگون آن خواهیم پرداخت.

چاپ این مطلب

  ساخت دیتابیس، جدول و ردیف با دستور CREATE در MySQL
ارسال کننده: saberi - ۹۴/۶/۲۳، ۰۷:۱۵ عصر - انجمن: MySql - بدون پاسخ

در بخش آموزش مقدماتی MySQL و در مطلب گذشته با کلیاتی از پرکاربرد ترین سیستم مدیریت پایگاه داده یعنی MySQL آشنا شدیم، گفتیم که دستورات مربوط به پایگاه داده از طریق برنامه phpMyAdmin به طور مستقیم قابل اعمال هستند و از طرفی کدهای php قابلیت های فراوانی برای مدیریت و اعمال همان دستورات در اختیارمان می گذارند، از آنجایی که یک برنامه خوب بیشتر تکیه بر کدها و ابزار های داینامیک دارد، لذا ما از طرح مباحث مربوط به phpMyAdmin می گذریم و به نحوه اجرای دستورات در php می پردازیم، در این مطلب نیز می خواهیم در رابطه با آموزش ساخت دیتابیس، جدول و ردیف با دستور CREATE در MySQL صحبت کنیم.

ساخت دیتابیس با دستور CREATE

اگر چه ساخت دستی دیتابیس با برنامه phpMyAdmin بیشتر کاربرد دارد، اما کدهای PHP نیز این قابلیت را با دستور CREATE DATABASE دارا هستند.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
توضیح:
- پیش از اجرای هر دستوری، ابتدا باید به MySQL متصل شویم.
- mysql_connect، mysql_error، mysql_query و mysql_close از توابع درونی php هستند که برای کار با پایگاه داده مورد استفاده قرار می گیرند.

ساخت جدول و چند ردیف (ستون) با دستور CREATE

پس از ساختن دیتابیس نوبت به ایجاد جداول و ردیف ها است که این کار با دستور CREATE TABLE انجام می شود.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
توضیح:
- در کد بالا ما query ساخت یک جدول با دو ردیف (ستون) id و table را اجرا کردیم و به هر کدام ویژگی هایی را نسبت دادیم.
- INT و VARCHAR نشان دهنده نوع داده ای است که در آن ردیف (ستون) ذخیره می شود.
- ENGINE=MyISAM برای قرار دادن موتور MyISAM به صورت پیش فرض برای جدولی است که ایجاد می کنیم (در برخی نسخه ها به صورت TYPE=MyISAM قابل قبول است)، برخی نسخه های MySQL به جای MyISAM از موتور INNODB به صورت پیش فرض استفاده می کنند.

تغییر یونیکد به UTF8 برای کار با داده های زبان فارسی با دستور ALTER TABLE

برای اینکه بتوانیم داده های خود را به زبان فارسی به درستی در دیتابیس ذخیره و بازیابی کنیم، توصیه می شود همواره از یونیکد استاندارد UTF8 استفاده کنید، لذا بعد از ایجاد جدول تکه کد زیر را هم در ادامه، برای آن جدول اجرا نمائید.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
توضیح:
- ALTER TABLE یک دستور ثانویه است که می توانید به کمک آن روی جداول موجود تغییراتی اعمال نمائید یا به فرض آنها را حذف کنید.
- DEFAULT CHARACTER SET به همراه COLLATE utf8_general_ci، یونیکد پیش فرض یک جدول و ستون های زیر مجموعه آن را تغییر می دهد.
- پس از اینکه یونیکد را بر روی UTF8 تنظیم کردیم برای ارتباط صحیح و مقایسه یکسان کاراکترها باید از COLLATE و قانون utf8_general_ci استفاده کنیم که در مثال بالا این کار انجام شده است.

چاپ این مطلب

  ارسال ایمیل با php و کلاس phpmailer
ارسال کننده: saberi - ۹۴/۶/۲۳، ۰۷:۰۲ عصر - انجمن: PHP - بدون پاسخ

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

ارسال ایمیل در php با تابع mail
برای ارسال ایمیل در php روش های مختلفی وجود دارد، ساده ترین راه،  ارسال ایمیل با استفاده از تابع درونی و از پیش تعریف شده ()mail و SMTP بدون بررسی نام کاربری و رمز عبور (authentication) است، معمولا، کافی است این تابع را با چند آرگومان فراخوانی کنید تا ایمیل شما ارسال شود، به طور مثال:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

توضیح:
- تابع mail به صورت از پیش تعریف شده در php وجود دارد و تنها کافی است آن را با تکمیل پارامترها، فراخوانی کنیم.
- کارکرد صحیح این تابع، تا حدود زیادی بستگی به تنظیم درست موارد مورد نیاز آن در فایل php.ini دارد (از جمله smtp_port ،SMTP ،sendmail_from در سرورهای ویندوز و sendmail_path در سرورهای لینوکس)، در سرورهای اشتراکی، معمولا دسترسی به فایل اصلی php.ini امکان پذیر نیست، بنابراین اگر نتوانید با تابع mail ایمیل ارسال کنید، به احتمال زیاد تنظیمات این فایل به درستی انجام نشده است یا سرور هاست شما، قابلیت ارسال ایمیل را محدود کرده است که باید با پشتیبانی خود در این مورد تماس بگیرید.
- همانطور که ملاحظه می کنید، این تابع سه پارامتر اصلی و چند پارامتر فرعی را می تواند در هنگام ارسال ایمیل پوشش دهد، پارامترهای اصلی آدرس ایمیل دریافت کننده، موضوع و متن پیام است، پارامترهای اضافی به صورت سربرگ ها قابل استفاده هستند که به طور مثال می توانند به صورت زیر باشند:


*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

- علامت r\n\ در کدهای بالا برای ایجاد یک خط جدید استفاده می شوند.
- MIME یک استاندارد اینترنتی برای ارسال و دریافت ایمیل است (Multipurpose Internet Mail Extensions)، همچنین است SMTP که مخفف (Simple Mail Transfer Protocol) است.

ارسال ایمیل به صورت html با تابع mail
تابع mail علاوه بر ارسال ایمیل به صورت متن ساده یا plain text برای ارسال متون به صورت صفحات html نیز قابل استفاده است، بدین منظور دو کار را باید در هنگام ارسال ایمیل انجام دهیم:
1- متن پیام ما باید به صورت یک کد html باشد، درست شبیه صفحات ساده وب که به صورت html هستند.
2- در قسمت سربرگ ها که در بالا عنوان شد، سربرگ زیر را برای پشتیبانی از زبان فارسی، به کد خود اضافه کنیم:


*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

به طور مثال:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

البته ارسال سربرگ های اضافی همیشه هم ضروری نیست، برخی از سرویس های ایمیل به طور پیش فرض از یونیکد utf-8 استفاده می کنند، اما برای اطمینان از اینکه ایمیل شما در همه سیستم ها خوانا و قابل استفاده باشد، بهتر است سربرگ utf-8 را همراه ایمیل خود ارسال کنید.

ارسال فایل ضمیمه با تابع mail در php
ارسال ایمیل بدون فایل های ضمیمه یا همان attachment با تابع mail در php کار چندان سختی نیست، اما اگر بخواهیم به همین صورت فایل ها را نیز به همراه نامه الکترونیک خود ضمیمه کنیم، باید چند کار دیگر را نیز انجام دهیم که در ادامه خواهیم گفت؛ ابتدا کد زیر را در نظر بگیرید:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

کد بالا با استفاده از تابع mail در php، علاوه بر ارسال متن ساده و متن به صورت html قابلیت ارسال فایل ضمیمه (attachment) را نیز دارد.

توضیح:
- قبل از هر چیز در هنگام ارسال ایمیل با ضمیمه، ما به سربرگی تحت عنوان boundary یا سرحد و کرانه احتیاج داریم، برای تفکیک قسمت های مختلف یک ایمیل  (از جمله متن ساده، متن به صورت html و فایل ضمیمه) در استاندارد MIME باید از کدهای رندوم تحت عنوان boundary استفاده کنیم، البته در واقع مهم نیست این کد شامل چه عبارتی (از حروف و اعداد) باشد، مهم این است که سیستم دریافت کننده ایمیل بتواند قسمت های مختلف آن را تفکیک کند، از طرفی این کد نباید در متن پیام تکرار شده باشد، لذا معمولا از یک کد رندوم اختصاصی استفاده می شود.
- نکته مهم دیگر استفاده از تابع chunk_split و base64_encode است، به این صورت فایل ما برای انتقال به قطعات کوچکتری تقسیم شده و در چارچوب استاندارد RFC 2045 قابل انتقال است.
- همانطور که ملاحظه می کنید، در سربرگ های اولیه، مقادیر multipart/mixed را برای Content-Type در نظر گرفته ایم که این کار به دلیل ضمیمه بودن فایل به ایمیل است.
- در دو قسمت میانی کد، دو نوع متن به صورت plain text و text html ارسال کرده ایم که شما بنا بر ضرورت می توانید از هر دو یا تنها از یک روش استفاده کنید.
- نکته مهم دیگر استفاده از application/zip برای Content-Type در قسمت مربوط به فایل ضمیمه است، برای بدست آوردن Content-Type فایل های مختلف با فرمت های متفاوت، کافی است آدرس فایل خود را در سرور یا در لوکال هاست در کد زیر به جای متغیر فرضی file جایگزین کرده و آن را اجرا کنید، خروجی، Content-Type فایل شما را نشان می دهد:


*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

ارسال ایمیل با استفاده از کلاس phpmailer
اگرچه کاربرد تابع mail در php بسیار آسان و ساده است، اما این تابع تنها موارد اولیه را پوشش می دهد، به فرض امکان استفاده از SMTP به صورت authentication یا بررسی نام کاربری و کلمه عبور وجود ندارد، یا نمی توان سرور ارسال ایمیل را تغییر داد و محدودیت های دیگری از این دست، لذا برنامه نویسان php بسته ها و کلاس های دیگری بدین منظور نوشته اند که یکی از معروف ترین آنها کلاس phpmailer است، علاوه بر کلاس phpmailer بسته ایمیل  PEAR نیز برای php وجود دارد که البته به دلیل قدرت و انعطاف پذیری کلاس phpmailer کم تر مورد استفاده قرار می گیرد.

برای شروع آموزش این قسمت ابتدا کلاس مذکور را از لینک زیر دریافت کنید:

دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.

به دلیل مسدود بودن خدمات code گوگل برای ip های ایران، می توانید آخرین نسخه آن را از انتهای این مقاله دانلود کنید.

در نسخه بالا برخی فایل های غیر ضروری  مربوط به تست های جانبی کلاس، نسبت به نسخه اصلی حذف شده اند تا از سردرگمی کاربران در مواجه با تعداد زیاد فایل های این بسته جلوگیری شود، زبان فارسی نیز برای خطاها، در قسمت language قرار داده شده است که می توانید با اعمال تغییراتی در فایل class.phpmailer.php از آن نیز استفاده کنید، یادآور می شویم اگر می خواهید این کلاس را به همراه تمام فایل های جانبی در اختیار داشته باشید، بهتر است نسخه سایت گوگل را دریافت کنید، اما اگر داشتن فایل ها و مثال های اصلی برایتان مهم است و چندان اهل کنجکاوی در موارد اضافی و جانبی نیستید، این بسته نیز کامل و مناسب است.

استفاده از کلاس بالا بسیار ساده و آسان است، کافیست مطابق الگوی زیر موارد مورد نظر را با توجه به سرور خود تنظیم کرده و فایل را اجرا نمائید.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

توضیح:
- همانطور که گفتیم ارسال ایمیل با کلاس phpmailer بسیار آسان و کاربردی است، کافی است ابتدا فایل اصلی برنامه یعنی class.phpmailer.php را در صفحه خود وارد کنید (با استفاده از require یا include)، سپس موارد مورد نیاز را مطابق با سرور و حساب خود تنظیم نمائید.
- در قسمت IsSMTP مشخص می کنیم که می خواهیم از SMTP برای ارسال ایمیل استفاده کنیم و برای استفاده از این امکان باید آدرس میل سرور، نام کاربری و کلمه عبور را مطابق الگو تکمیل نمائید.
- قسمت AltBody برای کسانی است که برنامه مدیریت ایمیل آنها تنها از متن ساده پشتیبانی می کند و امکان دیدن ایمیل های html را ندارند.
- قسمت MsgHTML متن پیام به صورت html را در خود جای می دهد، این متن هم می تواند با فراخوانی یک فایل جانبی (با تابع file_get_contents) باشد یا اینکه به صورت مستقیم وارد شود، به فرض در هنگام کار با فرم های ایمیل می توان متن دریافتی از فرم را به یک متغیر نسبت داده و متغیر را به عنوان محتوای ایمیل ارسالی در نظر گرفت.
- اگر نیاز به ضمیمه کردن فایل یا فایل هایی در ایمیل خود دارید، می توانید از قسمت AddAttachment که در مثال بالا غیر فعال شده است، استفاده کنید، ذکر این نکته ضروری است که فایل شما باید از قبل بر روی سرور قرار گرفته باشد و سپس آدرس آن به صورت داینامیک جایگزین شود که خود نیاز به کمی مهارت در برنامه نویسی php دارد.

استفاده از SMTP گوگل برای ارسال ایمیل در php
با استفاده از کلاس PHPMailer شما می توانید از سایر سرورهای SMTP که در آنها حساب کاربری دارید نیز برای ارسال ایمیل استفاده نمائید، البته در عمل سرویس های ایمیل معمولا پس از مدتی برخی از پورت های عمومی خود را محدود کرده یا تغییر می دهند؛ با این وجود یکی از پرکاربردترین این سرورها، سرویس ایمیل سایت گوگل است که تقریبا محدودیت های آن از سایر موارد مشابه کم تر است، البته در لحظه ای که آین آموزش نوشته می شود، ظاهرا پورت 465 SSL آن برای برنامه های جانبی مسدود شده است و خطای timeout می دهد، اما پورت 587 TLS همچنان کار می کند، در کنار این دو پورت امن، پورت 25 نیز وجود دارد که نیازی به رمزنگاری ندارد، برای اینکه این کد در سرور شما به درستی کار کند، بهتر است همه موارد را بررسی کنید، ارسال ایمیل از این طریق محاسن و در عین حال معایبی دارد، بهترین مزیت آن این است که محدودیت برخی از هاست های اشتراکی را ندارد، توضیح اینکه در بیشتر هاست ها برای ارسال ایمیل محدودیت هایی به صورت روزانه و یا ساعتی قائل می شوند، ظاهرا و به گفته تیم پشتیبانی گوگل، در سرویس این شرکت روزانه بالغ بر 2000 ایمیل از یک اکانت قابل ارسال است، اما معایب این سرویس این است که ممکن است از طرف گوگل پورت های آن مسدود شود یا بدون اطلاع قبلی تغییر پیدا کند و یا به ip های برخی کشورها سرویس ندهد و... که این استقلال برنامه ما را تحت تاثیر قرار می دهد، به هر صورت تصمیم به استفاده یا عدم استفاده از این امکان را به عهده شما می گذاریم.

بدین منظور لازم است الگوی بالا را به شکل زیر تغییر دهید:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

پس از اجرای کد برای اولین بار، ممکن است سرویس گوگل دسترسی برنامه را مسدود کند تا از شما مجوزهای لازم را دریافت نماید، بدین جهت اگر با خطای authentication مواجه شدید، لازم است که به ایمیل خود مراجعه کرده و با پیروی از دستورالعمل پیام ارسالی از طرف گوگل، مبنی بر تلاش برای استفاده از حساب شما در یک برنامه جانبی، اجازه استفاده از حساب کاربریتان را به برنامه خود بدهید و از نو آن را اجرا کنید، توجه کنید که به اشتباه بر روی لینک ها کلیک نکنید، در غیر این صورت برنامه شما ممکن است مسدود شود و برای ارسال ایمیل از این طریق با مشکل مواجه شوید.

ارسال ایمیل در لوکال هاست و WampServer
برای ارسال ایمیل از طریق لوکال هاست و برنامه سرور محلی WampServer، با استفاده از SMTP سرویس ایمیل گوگل یا همان GMail، ابتدا لازم است که آخرین نسخه wamp را روی سیستم خود نصب کنید، این برنامه را می توانید از لینک زیر دریافت نمائید.
دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.

پس از نصب برنامه، به دلیل استفاده گوگل از پروتکل های امن و عدم پشتیبانی wamp (به طور پیش فرض) از این امکان، باید تغییراتی در فایل اصلی php.ini اعمال نمائید تا ایمیل شما از این طریق قابل ارسال باشد، لذا پوشه ای که برنامه را در آن نصب کرده اید باز کرده و آدرس زیر را ادامه دهید تا به فایل php.ini برسید.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

در این فایل با استفاده از نت پد (notepad) یا هر ویرایشگر متنی دیگر و با کمک قابلیت کلمه یاب یا Find، به دنبال عبارت openssl بگردید تا به خط مربوط به extension=php_openssl.dll برسید، اگر در ابتدای این خط علامت ; بود، آن را حذف کنید و فایل خود را ذخیره کرده و برنامه WampServer را (اگر در حال اجرا بود) بسته و مجددا اجرا کنید یا از امکان شروع مجدد آن استفاده نمائید، اکنون اگر تابع ()phpinfo را در یک فایل php خروجی بگیرید، در قسمت Phar امکان OpenSSL support باید فعال یا enabled باشد، در غیر این صورت در هنگام ارسال ایمیل از طریق phpmailer و wamp، پیام زیر را دریافت خواهید کرد.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *

حال همه چیز آماده است تا از کلاس PHPMailer و SMTP گوگل استفاده نمائیم.

در پایان مجددا یادآور می شویم که ممکن است برای اولین بار، گوگل کد شما را مسدود کند تا مجوز اجازه و دسترسی برنامه را از شما دریافت نماید، لذا اگر با این خطا در اکانت gmail خود مواجه شدید، باید از دستورالعمل آن پیروی کرده و مجوز دسترسی از حساب خود را به برنامه بدهید.



فایل‌(های) پیوست شده
.zip   PHPMailer5.2.1.zip (اندازه: 52/41 KB / تعداد دفعات دریافت: 6)
چاپ این مطلب