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

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

نام کاربری
  

گذرواژه‌
  





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

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

آمار انجمن
» اعضا: 3,540
» آخرین عضو: user5587
» موضوعات انجمن: 10,387
» ارسال‌های انجمن: 14,562

آمار کامل

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

آخرین موضوع‌ها
آینده‌ای بدون صف؛ وقتی فن...
انجمن: گفتگوی آزاد
آخرین ارسال توسط: marjan1999
دیروز، ۰۱:۲۸ عصر
» پاسخ: 0
» بازدید: 21
نقش دستگیره هوشمند در امن...
انجمن: گفتگوی آزاد
آخرین ارسال توسط: marjan1999
۰۴/۸/۲۰، ۰۴:۵۵ عصر
» پاسخ: 0
» بازدید: 34
آموزش طرز تهیه کیک مرغ با...
انجمن: گفتگوی آزاد
آخرین ارسال توسط: navidradi
۰۴/۸/۱۹، ۰۶:۱۲ عصر
» پاسخ: 0
» بازدید: 45
ویلا بابلسر؛ ترکیب دریا، ...
انجمن: سفرهای داخلی
آخرین ارسال توسط: arvin912
۰۴/۸/۱۶، ۰۲:۲۵ عصر
» پاسخ: 0
» بازدید: 58
ویلا؛ انتخابی برای سبک زن...
انجمن: سفرهای داخلی
آخرین ارسال توسط: arvin912
۰۴/۸/۱۶، ۰۲:۲۱ عصر
» پاسخ: 0
» بازدید: 44
اجاره ویلا در رشت؛ تجربه ...
انجمن: سفرهای داخلی
آخرین ارسال توسط: arvin912
۰۴/۸/۱۶، ۰۲:۱۶ عصر
» پاسخ: 0
» بازدید: 43
هوشمند سازی ساختمان در ته...
انجمن: گفتگوی آزاد
آخرین ارسال توسط: navidradi
۰۴/۸/۱۴، ۱۰:۳۷ صبح
» پاسخ: 1
» بازدید: 956
زندگی محلی را با بوم‌گردی...
انجمن: سفرهای داخلی
آخرین ارسال توسط: arvin912
۰۴/۸/۹، ۰۸:۵۶ عصر
» پاسخ: 0
» بازدید: 61
یک آخر هفته رویایی در ویل...
انجمن: سفرهای داخلی
آخرین ارسال توسط: arvin912
۰۴/۸/۹، ۰۸:۵۵ عصر
» پاسخ: 0
» بازدید: 54
کلبه چوبی؛ قصه‌ی آرامش در...
انجمن: سفرهای داخلی
آخرین ارسال توسط: arvin912
۰۴/۸/۹، ۰۸:۵۱ عصر
» پاسخ: 0
» بازدید: 56
تفریح، آرامش و لوکس بودن ...
انجمن: سفرهای داخلی
آخرین ارسال توسط: arvin912
۰۴/۸/۲، ۱۰:۳۲ عصر
» پاسخ: 0
» بازدید: 60
ویلا در شمال | سفری به سر...
انجمن: سفرهای داخلی
آخرین ارسال توسط: arvin912
۰۴/۸/۲، ۱۰:۰۹ عصر
» پاسخ: 0
» بازدید: 55
کلبه چوبی | آرامش در آغوش...
انجمن: سفرهای داخلی
آخرین ارسال توسط: arvin912
۰۴/۸/۲، ۱۰:۰۷ عصر
» پاسخ: 0
» بازدید: 43
معرفی بهترین شرکت مالیاتی...
انجمن: معرفی سایت، وبلاگ و خدمات
آخرین ارسال توسط: doorbinmarket
۰۴/۷/۲۷، ۰۲:۱۶ عصر
» پاسخ: 0
» بازدید: 84
سوئیت اصفهان؛ نفس‌کشیدن د...
انجمن: سفرهای داخلی
آخرین ارسال توسط: arvin912
۰۴/۷/۱۹، ۰۳:۲۵ عصر
» پاسخ: 0
» بازدید: 81

 
  مقدمه ای بر CSS، جادوگر طراحی وب
ارسال کننده: saberi - ۹۴/۶/۲۳، ۰۸:۵۷ عصر - انجمن: CSS - بدون پاسخ

مقدمه ای بر CSS، جادوگر طراحی وب

css مخففی از سرواژه های Cascading Style Sheets و در اصطلاح به معنی زبانی کمکی جهت شکل دهی ظاهر و فرم صفحات وب (HTML) است، تیتر مطلب گویا است که CSS را باید به راستی جادوگر طراحی وب نامید!، اگر تجربه کار با آن را داشته باشید حتما شما هم با نظر ما موافقید، فلسفه پیدایش CSS به آسان کردن کار طراحان صفحات وب جهت شکل دهی و فرم بندی ایده هایشان بر می گردد، پیش از این برای اینکه به فرض رنگ فونت یک متن را در صفحات مختلف تغییر دهیم، ناچار بودیم در هر صفحه فونتمان را پیدا کنیم و با هزاران رنج و مشقت و صرف وقت زیاد، تک تک آنها را ویرایش کنیم، اما با آمدن CSS، کار خیلی راحت شد! برای پی بردن به اهمیت این زبان (کمکی) و دیدن چند مثال، با ما همراه باشید.

فرمت بندی بدون استفاده از css

کد زیر بدون استفاده از CSS فرمت بندی شده است (برای تست کافی است کد را در یک ویرایشگر متنی یا HTML کپی و ذخیره کنید):

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

فرمت بندی با استفاده از css

و همان کد با استفاده از CSS:

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
قدرت این زبان به قابلیت ایجاد حالت های گوناگون و تعریف کلاس (CLASS) و آی دی (ID) است، به اینصورت که مثلا با تعریف یک کلاس، از آن در صفحات مختلف و بدون تکرار کدنویسی، استفاده می کنیم.

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

توضیح:
- css یک زبان کمکی است، یعنی به خودی خود کاربرد خاصی ندارد، ولی به تگ های html شکل و قالب می دهد.
- برای دیدن و مقایسه کد صفحات، کلیک راست و view source را انتخاب کنید.
- کد های css یا به صورت درون صفحه ای است یا ایمپورت به صورت فایل خارجی (شیوه استاندارد).
- تگ style برای ایجاد کدهای css داخلی کاربرد دارد.
- برای ایمپورت یک فایل css خارجی، از کد link و خاصیت های آن، درون تگ head استفاده می کنیم.

چاپ این مطلب

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

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

ساخت جداول فرضی با دستور CREATE

برای درک بهتر نحوه عملکرد دستور JOIN پیش از هر چیز لازم است که چند جدول و ستون فرضی با مقادیری از پیش تعریف شده بسازیم که در زیر پرس و جوی آن را ملاحظه می کنید.
نکته: پیش از اجرای کدهای زیر باید از طریق برنامه phpMyAdmin دیتابیسی با نام فرضی test بسازید، دقت کنید که Collation دیتابیس بر روی utf8_persian_ci تنظیم شده باشد.

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

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

همان طور که ملاحظه می کنید بین دو جدول در ستون های skill و language ارتباطی متقابل وجود دارد (هر دو ستون عناوین مربوط به زبان های برنامه نویسی را در خود دارند)، بنابراین به فرض اگر بخواهیم مسابقه ای بین افراد هم مهارت برگزار کنیم و نیاز به محاسبه تعداد رقبای اسامی موجود در جدول اول باشد، به ناچار باید در پرس و جوی خود هم از اصلاعات جدول اول (اسامی و مهارت آنها) و هم از اطلاعات جدول دوم (مهارت و تعداد شرکت کننده) استفاده کنیم، هرچند این کار با نوشتن دو پرس و جو نیز امکانپذیر است، اما حرفه ای تر آن است که به کمک JOIN و مشتقات آن (INNER JOIN، LEFT JOIN، RIGHT JOIN، OUTER JOIN) یک پرس و جوی ترکیبی نوشته و به هدف خود برسیم، بدین ترتیب می توان نوشت:

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

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

نکته: برای تعریف شرط در هنگام استفاده از دستور JOIN (و مشتقات آن)، از عبارت ON استفاده می شود.
برای آشنایی بیشتر با JOIN و مشتقات آن، در ادامه به صورت موردی این دستور را بررسی می کنیم.

حالت INNER JOIN

حالت اول از مشتقات دستور JOIN به صورت INNER JOIN می باشد، در این حالت می توان به مواردی مشترک از هر دو جدول دسترسی داشت، نتیجه پرس و جو شامل برخی موارد از جدول اول به همراه برخی موارد دیگر از جدول دوم (بر اساس شرط تعیین شده) خواهد بود، مثال:

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

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

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

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

نوع دیگر از مشتقات دستور JOIN به صورت LEFT JOIN است که در این حالت تمام ردیف های جدول اول صرف نظر از شرط تعیین شده به همراه ردیف های جدول دوم (بر اساس شرط تعیین شده) به عنوان خروجی برگردانده می شوند، مثال:

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

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
نکته: ردیف هایی که در جدول دوم بر اساس شرط تعریف شده انتخاب نشوند، با مقدار NULL برگردانده می شوند.

حالت RIGHT JOIN

مشابه حالت LEFT JOIN، حالت RIGHT JOIN است که در این صورت ردیف ها از جدول دوم صرف نظر از شرط تعیین شده انتخاب و ردیف های جدول اول بر اساس شرط انتخاب می شوند، مثال:

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

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

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

حالت آخر از مشتقات JOIN به صورت OUTER JOIN یا FULL JOIN است که در این صورت می توان دو پرس و جوی مبتنی بر JOIN را با عبارت کلیدی UNION (اجتماع) به هم مرتبط نمود، مثال:

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

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

چاپ این مطلب

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

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

شیوه نگارش (syntax) دستور DELETE


نحوه استفاده از دستور DELETE در MySQL شباهت زیادی با سایر دستوراتی که تا این لحظه بررسی کرده ایم (مانند SELECT، UPDATE و...) دارد و البته رعایت نکات خاص آن نیز ضروری است، به مثال زیر توجه کنید.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
با این دستور ساده، ردیف یا ردیف هایی در دیتابیس که مقادیر ستون id آنها برابر عدد 1 باشد حذف خواهند شد، ملاحظه می کنید که اگر به فرض پارامتر WHERE استفاده نشود یا اینکه به اشتباه تعیین گردد، موجب حذف موارد ناخواسته خواهد شد، لذا در استفاده از دستور DELETE باید دقت نمود و قبل از هر چیز از اطلاعات حساس دیتابیس پشتیبان تهیه کرده و دستورات را نیز قبل از استفاده نهایی، حتی الامکان تست کرد.
یک مثال کاربردی با دستور DELETE

برای آشنایی بیشتر با دستور DELETE، یک مثال کاربردی را با هم مرور می کنیم، فرض کنید در دیتابیس خود در جدول users اسامی و مشخصات کاربران را در ستون های id، name، pass، age و... ذخیره کرده ایم، حال می خواهیم کاربرانی که نام آنها با حرف ب فارسی یا B لاتین شروع می شود را حذف کنیم، بدین منظور خواهیم نوشت:

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

توضیح:
- همان طور که ملاحظه می کنید، در دستور DELETE می توانیم از WHERE و پارامترهای وابسته به آن مانند OR ، AND ، LIKE و... استفاده کنیم.
- هنگامی که در کنار دستور DELETE از WHERE و LIKE استفاده می کنیم، باید دقت کنیم که علامت % در ابتدا، انتها یا در هر دو سمت پارامتر، نقشی تعیین کننده در نحوه تفسیر دستورمان خواهد داشت که البته در این مورد در مباحث قبلی صحبت کرده ایم.

حذف مقادیر چندگانه با دستور DELETE

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

نکته: علامت [] در قسمت نام فیلدها باعث می شود موارد به صورت یک آرایه به سرور ارسال شوند.

سپس در سرور از حلقه های for یا foreach می توانیم استفاده کنیم، به مثال زیر توجه کنید.

*محتوای این قسمت تنها برای اعضای انجمن قابل مشاهده می باشد. *
توضیح:
- برای دریافت متغیر ارسال شده از طرف فرم HTML کافی است از روش های معمول (متد GET یا POST) استفاده کنید.
- اکنون اگر از متغیر delete_array با دستور print_r خروجی بگیرید، کلیدها و مقادیر آرایه به صورت زیر خواهد بود.

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

به این ترتیب می توان در یک دستور foreach از کلید و مقدار آرایه ارسال شده در query مربوط به DELETE استفاده کرد.

چاپ این مطلب

  به روز رسانی ردیف ها در 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، اتصال به پایگاه داده را خاتمه دهید.

چاپ این مطلب