• توجه: در صورتی که از کاربران قدیمی ایران انجمن هستید و امکان ورود به سایت را ندارید، میتوانید با آیدی altin_admin@ در تلگرام تماس حاصل نمایید.

کار با دیتابیس در PHP

Mahdi Askari

مدير فنی
سلام
امروز نمیدونم چه چیزی شده بود مرا گفتم یک آموزش بنویسم:giggle:
چند روزی هست که حوصله هیچ کاری ندارم و نمیدونم چیم شده ولی امروز اومدم تا یکی از پر استفاده ترین موارد PHP که همون کار با دیتابیس هست رو آموزش بدم
در این آموزش قرار هست موارد زیر به صورت کامل اما نه مفصل شرح داده بشه
علت این هم که اگر مفصل به بحث بپردازیم و تک تک مشکلاتی که برای برنامه نویسانی که تازه شروع کردن رو حل کنیم دیگه دنبال یادگیری بیشتر نمیرن:giggle:
ولی اگر به مشکل بخورن و دنبال حل مشکل بگردن در این ما بین چند چیز اضافه تر از موضوع خودشان یاد خواهند گرفت
خلاصه من درس رو کامل میدم اما مشکلات رو خودتون باید حل کنید:نیش:
اگرم به مشکلی خوردید که حل نمیشد من در خدمتم:گل:

سر فصل این تاپیک:


  1. برقراری اتصال با دیتابیس

    [*]درج اطلاعات در دیتابیس
    [*]انتخاب اطلاعات از دیتابیس
    [*]آپدیت قسمتی از اطلاعات ذخیره شده
    [*]حذف اطلاعات از دیتابیس


مختصر و مفید سرفصل محتویات این تاپیک رو براتون نوشتم

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

تاپیک بروز خواهد شد:گل:

موفق باشید:گل:




منبع آموزش: ایران انجمن
 

Mahdi Askari

مدير فنی
1- برقراری ارتباط با دیتابیس:



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

این موارد رو با همشون کار داریم ولی میرسیم به موقعش همه رو میگم



اما ارتباط برقرار کردن با دیتابیس:
اول از همه برای کارکردن با دیتابیس در PHP توابعی داریم که از آن همیشه استفاده میشه و اون تایع هم از پیش تعریف شده هستن


  1. mysql_connect ارتباط برقرار کردن با دیتابیس
  2. mysql_query کار کردن با دیتابیس
  3. mysql_select_db انتخاب دیتابیس
  4. mysql_close خاتمه ارتباط با دیتابیس

1- ارتباط:

کد:
$connect = mysql_connect($db_host,$db_user,$db_pass);

mysql_query("SET CHARACTER SET  utf8",$connect);

mysql_select_db($db_name , $connect) ;

در خط اول این کد ما به وسیله تابع کانکت به دیتابیس متصل شدیم
در خط دوم ما داریم با اطلاعات ارتباط برقرار میکنیم و میگیم اطلاعاتی که ما میخوایم اطلاعات به صورت یونیکد utf-8 هست(برای عملیات به زبان فارسی)
در خط سوم هم ما به وسیله تابع مخصوص دیتابیسی که میخوایم باهاش کار کنیم انتخاب میکنیم

اما تابع اول چه ورودی هایی دریافت میکنه؟
این تابع به ترتیب از چپ به راست
1- db_host این متغییر هاست دیتابیس رو مشخص میکنه اکثرا روی سروری که کار میکنید این مقدار localhost هست
2- db_user یوزر دیتابیس هست که موقع ساخت دیتابیس تعیین کردید و ساختید
db_pass -3 پسوردی که موقع ساخت دیتابیس تعیین کردید
این تابع و متغییر های درون اون رو با نام connect مشخص کردیم

تابع سوم که دیتابیس رو انتخاب کرد هم دو متغییر ورودی داره که db_name نام دیتابیس و متغییر دوم ارتباط با دیتابیس هست(ارتباط با دیتابیس رو نامش رو connect تعیین کردیم)

در آخر هم برای لغو ارتباط باید تابع زیر رو بنویسیم:

کد:
mysql_close($connect);
 

Mahdi Askari

مدير فنی
خب ادامه بحث رو در پی میگیریم:گل:

اول از همه بگم برای هر یک از اعمالی که قرار هست با دیتابیس انجام بدید لازم هست حداقل یکبار با دیتابیس ارتباط برقرار کنید
اگر در یک جا این اعمال را انجام میدید یکبار اتصال کافی هست
اگر در صفحات جدا اعمال جدا انجام میدید در هر صفحه حداقل یکبار لازم هست:گل:


درج اطلاعات در دیتابیس

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

کد:
INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)

در این کد ما بیان کردیم اطلاعات value1, value2, value3 و.. رو درون جدول table_name بریزه در جایی که column1, column2, column3 قرار داره
به عنوان مثال ما در دیتابیس جدولی با نام register داریم که هر کسی عضو میشه اطلاعاتش رو میخوایم درون اون بریزیم
این جدول 4 رکورد داره name , user , pass , email
اطلاعات رو که از فرم دریافت میکنیم در متغییر های زیر میریزیم:

کد:
$name , $ user ,$pass , $email

حالا میخوایم این اطلاعات رو درون دیتابیس بریزیم
ارتباط برقرار کردن با دیتابیس رو که در پسا قبلی شرح دادیم اونو اگر هنوز برقراری ارتباط داریم که هیچ در غیر اینصورت مجددا باید اونها رو بنویسیم و ارتباط برقرار کنیم
سپس با کد بالا اطلاعات رو درج میکنیم:

کد:
$Query="INSERT INTO `register`(`name`, `user`,`pass`, `email`) values ('$name','$user','$pass','$email')";

ترتیب قرار دادن متغییر ها نسبت به رکورد های دیتابیس و همچنین نسبت به رکوردهایی که در کد نوشته میشه اهمیت داره
 

Mahdi Askari

مدير فنی
انتخاب اطلاعات از دیتابیس

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


در آموزش قبل ما یاد گرفتیم اطلاعات رو درون دیتا بیس ذخیره کنیم
امروز میخوایم اونها رو برداریم

شکل کلی دستور به اسن صورت هست:

کد:
SELECT column_name(s)
FROM table_name

انتخاب یک ستون از جدول
کل دستور بالا معنیش همین جمله ای بود که نوشتم
شما انتخاب میکنید یک ستون رو و اطلاعاتش رو بر میدارید

اما اگر شما بخواید کل ستون ها اطلاعاتش رو بردارید قسمت وارد کردن نام ستون یا ستون ها رو با * پر میکنید

کد:
SELECT * FROM table_name

جدولی داریم با اطلاعات افراد که نام کاربری و اسم و یک شماره آی دی که به هر نفر تخصیص داده میشه(در مورد این قسمت بعدا توضیح میدم) درش ذخیره هست
حالا ما چندین کاربر داریم و میخوایم نام کاربری و اسم اونها رو چاپ کنیم
کدشو مینویسم: (اسم دیتا بیس رو table انتخاب کردم)
ابتدا همانند پست قبل با دیتابیس ارتباط برقرار میکنیم و سپس:

کد:
$result = mysql_query("SELECT * FROM table");
while($row = mysql_fetch_array($result))
  {
echo " $row['name']";
echo " $row['user']";
  }

تابع mysql_fetch_array اطلاعات دیتابیس رو به یک آرایه دو بعدی( در صورتی که تمام یا حد اقل دو ستون از اطلاعات دیتابیس انتخاب بشن) یا یک بعدی(در صورتی که یک ستون از یا سطر از اطلاعات انتخاب بشن) تبدیل میکنه تا بتونید استفاده کنید

در تابع بالا ما تمام افراد رو اسمشون و نام کاربریشون رو نمایش دادیم( در دیتابیس ستون نام اسمش name و نام کاربری user نام داشت)


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

خب حالا ما میخوایم مثلا دانشجویی رو پیدا کنیم شماره دانشجویی اون 17 هست
( ستون شماره دانشجویی در دیتابیس id نام داره)

کد:
$result = mysql_query($con,"SELECT * FROM table WHERE id=$id");

تمام اطلاعات رو انتخاب میکنیم از جایی که شماره دانشجویی با شماره ای که ما میاریم یکی باشه
کد:
while($row = mysqli_fetch_array($result))
}
echo " $row['name']";
echo " $row['user']";
{
اگر تست کنید میبینید فقط و فقط نام و نام کاربری کسی رو نشون میده که شماره دانشجوییش 17 هست
 

Mahdi Askari

مدير فنی
آپدیت قسمتی از اطلاعات ذخیره شده

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

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

در این آموزش تغییرات رو بر اساس کلید میذارم براتون

کد:
UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value

شکل کلی کد به صورت بالا هست
ابتدا ارتباط رو با دیتابیس برقرار میکنیم
سپس با استفاده از کد بالا تغییرات رو انجام میدیم

کد:
mysql_query("UPDATE table SET pass=$newpass WHERE id=$id");

به عنوان مثال آی دی یک کاربر وارد میشه و سپس پسورد جدیدی برای اون در نظر گرفته میشه
توسط کد بالا میگیم آپدیت کن اطلاعات جدول table رو به طوری که ستون pass از سطر id برابر بشه پسورد جدیدی که ما وارد کردیم و در متغییر newpass قرار گرفته

اگر قسمت WHERE id=$id قرار داده نشه و کد به صورت زیر باشه:

کد:
mysql_query("UPDATE table SET pass=$newpass");
تمامی ستون پسورد در همه سطر ها محتویاتش با متغییر جدید جایگزین میشه



_________________________________
پ.ن: در قسمت قرار دادن متغییر جدید میتونید چندین ستون رو تغییر بدید:

کد:
mysql_query("UPDATE table SET pass=$newpass , user=$newuser , email=$email WHERE id=$id");
به صورت بالا اطلاعات ستون user , pass , email از سطر id با متغییر های جدید جایگزین میشه
 

Mahdi Askari

مدير فنی
حذف اطلاعات از دیتابیس

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

کد:
DELETE FROM table_name
WHERE some_column = some_value

شکل اصلی کد به صورت بالا هست
سطری از جدول که درون اون کلید ما قرار داره حذف میشه

جدولی داریم با نام table که درون اون چندین کاربر ذخیره هستند و شما میخواید کاربری رو حذف کنید
توسط پست های قبل میتونید اطلاعات رو ذخیره و نمایش بدید و تصحیح کنید
توسط کد زیر میتونید اون سطر رو حذف کنید

کد:
mysql_query("DELETE FROM table WHERE id=$id ");
از جدول table جایی که آی دی برابر متغییر آی دی که ما وارد کرده باشیم حذف میشه

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

کد:
mysql_query("DELETE FROM table WHERE LastName='askari' , FirstName= 'mehdi'");

میتونید نام و نام خانوادگی رو از طریق متغییر به اون اضافه کنید
 

Mahdi Askari

مدير فنی
مطلبی که الان یادم افتاد نگفتم
در هنگام انتخاب اطلاعات از دیتابیس شما میتونید خروجی رو مرتب کنید
از کوچیک به بزرگ یا از بزرگ به کوچیک

مرتب کردن به عنوان مثال بر حسب سن

کد:
$result = mysql_query("SELECT * FROM table ORDER BY age");

پیش فرض از کوچک به بزرگ مرتب میکنه (اگر جلوشم بنویسید ASC باز هم کوچک به بزرگ مرتب میشه)
اگر بخواید بزرگ به کوچیک مرتب کنید باید کد DESC بذارید

کد:
$result = mysql_query("SELECT * FROM table ORDER BY age DESC");

کد بالا اطلاعات رو انتخاب میکنه و به صورت بزرگ به کوچیک مرتب میکنه:گل:
 
بالا