توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : سوال : نحوه ساخت دیتابیس
minicup
November 11th, 2015, 15:33
سلام دوستان خسته نباشید .
من PHP رو بصورت مبتدی و ویرایش کردن و اینا بلد بودم گفتم برم سراغ آموزش های حرفه ای که شروع کردم برای تمرین یه CMS ساده بنویسم .
اما در ساخت تیبل توی دیتابیس به مشکل میخورم و فکر کنم دلیل اکثر خطا هایی که PHP هم میده همینه که قابل ویرایش نیستن :
http://s6.uplod.ir/i/00703/5j2r5fdrcn2q.png
میخوام یه تیبل بسازم که اینجوری باشه :
http://s6.uplod.ir/i/00703/ivtmi69r3nhc.png
در ضمن میخوام از طریق PHPmyadmin بسازم . ممنون میشم کوئری یا نحوه ایجادش رو بگین .
chiktarh
November 11th, 2015, 15:41
درود و وقت بخیر
برای این منظور، وارد وب اپلیکیشن phpmyadmin می شویم:
همانطور که در تصویر فوق می بینیم، با یک فلش قرمز رنگ نشان داده شده است که وارد دیتابیسی تحت عنوان new_db شده ایم. وقتی که وارد یک دیتابیس می شویم، در Tab مخصوص Structure، فیلدی وجود دارد تحت عنوان Name به معنی "نام" که می بایست داخل آن نام مد نظر خود را وارد کنیم که در این مثال نام users به معنی "کاربران" را وارد نموده ایم. در کنار این فیلد، فیلد دیگری وجود دارد تحت عنوان Number of columns به معنی "تعداد ستون ها" که عدد 3 را وارد این فیلد نموده ایم. به عبارت دیگر، جدول مربوط به کاربران فقط می تواند سه سری اطلاعات را در خود ذخیره سازد. حال می توانیم روی دکمه Go کلیک نماییم و وارد صفحه ای به شکل زیر می شویم:
http://static-b.netshahr.com/www.netshahr.com/images/netshahr/amoozesh/php/shahrivar-93/500x326x2_how_to_create_a_table_with_php_script_in _MySQL.jpg.pagespeed.ic.sHYt0MFt92.jpg
در ردیف اول در فیلد مربوط به Name نامی همچون id را وارد کرده ایم. علت اینکه اولین ردیف را به id یا "شناسه" اختصاص داده ایم برای این است که می بایست هر رکوردی که داخل جدول ثبت می شود قابل شناسایی باشد و با اختصاص id به هر رکورد این کار امکان پذیر خواهد بود. در بخش Type به معنی "نوع" گزینه INT که مخفف واژه Integer به معنی "عدد صحیح" است را انتخاب نموده ایم چرا که شناسه هر رکورد یک عدد خواهد بود مثل یک، دو، سه و ... . در فیلد مربوط به Length/Values به معنی "طول/مقادیر" عدد 11 را وارد نموده ایم چرا که عرف است برای شناسه ها این مقدار وارد می شود. به عبارت دیگر، تعداد شناسه ها می تواند تا عددی به طول 11 رقم افزایش یابد.
همانطور که در تصویر فوق مشخص است، ردیف مربوط به id نسبت به دو ردیف دیگر از خصوصیات بیشتری برخوردار است. به عبارت دیگر، در بخش Index گزینه PRIMARY برای این فیلد تک خورده است و چک باکس A.I. که مخفف واژگان Auto Increment به معنی "افزایش به صورت خودکار" است نیز تیک خورده است. کاری که این چک باکس انجام می دهد این است که رکورد اول که در این جدول به ثبت می رسد شناسه شماره یک به آن اختصاص داده می شود، رکورد دوم شناسه شماره دو را می گیرد الی آخر.
در توضیح PRIMARY بایستی گفت که توصیه می شود تا در هر جدول یکی از ستون ها همچون id به صورت PRIMARY باشد که در این صورت آن ستون که PRIMARY شده است به عنوان ستونی محسوب می شود که برای ارجاع به هر رکورد ثبت شده در دیتابیس مبنا قرار داده می شود. توجه داشته باشیم که در هر جدول فقط و فقط یک ستون می تواند PRIMARY باشد.
در ردیف دوم username را به عنوان نام این ستون در نظر گرفته ایم و در فیلد مربوط به Type هم گزینه VARCHAR را انتخاب نموده ایم. علت انتخاب VARCHAR این است که این جدول برای ذخیره سازی نام کاربری و رمز عبور اختصاص یافته است و زمانیکه کاربران در یک سایت نام کاربری و رمز عبور انتخاب می کنند، نام کاربری و رمز عبور ایشان تلفیقی از عدد، علائم، حروف و ... است و از آنجا که VARCHAR چنین قابلیتی را دارا است، این گزینه را انتخاب نموده ایم. در فیلد مربوط به Length/Values هم عدد 255 را وارد نموده ایم چرا که این امکان را به کاربران می دهیم تا بتوانند رشته ای به طول 255 کاراکتر را به عنوان نام کاربری یا رمز عبور خود انتخاب نمایند. به همین صورت ستون مربوط به رمز عبور را هم تکمیل نموده و روی دکمه Save به معنی "ذخیره" کلیک می کنیم:
http://static-d.netshahr.com/www.netshahr.com/images/netshahr/amoozesh/php/shahrivar-93/500x366x3_how_to_create_a_table_with_php_script_in _MySQL.jpg.pagespeed.ic.APusnepp5u.jpg
می بینیم که جدولی تحت عنوان users ساخته شده است. حال اگر روی Tab مربوط به Structure کلیک کنیم، با تصویر زیر مواجه خواهیم شد:
http://static-a.netshahr.com/www.netshahr.com/images/netshahr/amoozesh/php/shahrivar-93/500x368x4_how_to_create_a_table_with_php_script_in _MySQL.jpg.pagespeed.ic.UsHouI0ePF.jpg
می بینیم که ستون هایی که در جدول ایجاد کردیم به همراه کلیه خصوصیات آنها به نمایش در آمده اند. در این مرحله از کار، ساخت جدول تکمیل شده و فقط نیاز است تا با اسکریپت هایی که بعداً یاد خواهیم گرفت اقدام به ثبت دیتا در این جدول خواهیم نمود.
گفتیم که علاوه بر روش ساخت جدول به صورت دستی، این امکان نیز برای ما وجود دارد تا با استفاده از کدهای SQL هم اقدام به ساخت جدول نماییم. برای درک بهتر این موضوع، قصد داریم تا با تکمیل کدهایی که پیش از این مورد استفاده قرار دادیم، اقدام به ایجاد یک جدول تحت عنوان new_table نماییم. برای این منظور، کدهای فایل index.php را به صورت زیر تکمیل می کنیم:
? (http://www.netshahr.com/%D8%A2%D9%85%D9%88%D8%B2%D8%B4/php/19417-%D8%B3%D8%A7%D8%AE%D8%AA-%DB%8C%DA%A9-%D8%AC%D8%AF%D9%88%D9%84-%D8%AF%D8%B1-mysql-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-%D9%87%D8%A7%DB%8C-php#)
در تفسیر کدهای فوق بایستی گفت که پس از انتخاب دیتابیسی تحت عنوان new_db، از یک دستور شرطی if استفاده نموده ایم که اگر این دیتابیس انتخاب شد، دستورات داخل if اجرا شوند و در غیر این صورت هم هیچ اتفاقی رخ ندهد.
دستورات داخل if هم عبارتند از متغیری تحت عنوان sql که حاوی مقداری است معادل با یکسری کد SQL. این کدها را داخل علامت های " " قرار داده ایم. از آنجا که می خواهیم یک جدول جدید بسازیم ابتدا دستور اس کیو ال CREATE TABEL را می نویسیم (توجه داشته باشیم که برای نوشتن کدهای SQL نیازی نیست تا آنها را با حروف بزرگ بنویسیم اما مابین برنامه نویسان پی اچ پی حرفه ای روال است که این دستورات را با حروف بزرگ بنویسند تا به راحتی بتوانند این دستورات را از اسامی همچون new_table تمیز دهند.) سپس نامی برای جدول خود در نظر می گیریم تحت عنوان new_table که این نام دلخواه را داخل علامت های ` ` قرار می دهیم که اصطلاحاً Grave نامیده می شوند. سپس یک جفت پرانتز قرار می دهیم و داخل آنها ستون هایی که می خواهیم جدول ما داشته باشد را لیست می کنیم.
اولین ستونی که می خواهیم ایجاد کنیم id نام دارد که آنرا مابین دو علامت ` ` قرار داده ایم. سپس یک فاصله قرار داده و مشخصات این شناسه را نوشته ایم. به عبارت دیگر، از آنجا که می خواهیم id از جنس عدد صحیح باشد، دستور اس کیو ال INT را می نویسیم. علاوه بر این، می خواهیم که شناسه به صورت خودکار افزایش یابد لذا دستور AUTO INCREMENT را می نویسیم. از آنجا که می خواهیم این ستون PRIMARY باشد، دستور PRIMARY KEY را هم در ادامه می نویسیم. برای آنکه یک ستون جدید ایجاد شود، یک کاما قرار داده سپس همانند id نامی جدید مثلاً username در نظر می گیریم. از آنجا که این ستون قرار است حاوی مقادیر مختلفی باشد، نوع آنرا از جنس VARCHAR قرار می دهیم و از آنجا که می خواهیم در ستون مربوط به نام کاربری، کاربران بتوانند اطلاعات زیادی وارد کنند، طول آنرا برابر با 255 قرار می دهیم (طول این مقدار را می بایست داخل دو پرانتز قرار دهیم.) به همین صورت ستون مربوط به رمز عبور را وارد می کنیم.
در ادامه متغیری می سازیم تحت عنوان create_db که این متغیر برابر است با متد mysql_query که حاوی پارامترهای به ترتیب sql و my_connection می باشد سپس با استفاده از یک دستور if تست کرده ایم ببینیم که آیا متد mysql_query اجرا شده است یا خیر که اگر به درستی اجرا شده باشد جواب true بازگردانده می شود و عبارت داخل if که همان !Table created به معنی "جدول ساخته شد!" است به نمایش در می آید و در غیر این صورت هم دستور داخل else که حاوی عبارت .Failed to create the table به معنی "عدم موفقیت در ساخت جدول." می باشد به نمایش در می آید. اکنون می توانیم یک بار دستور خود را داخل مرورگر اجرا کنیم:
http://static-c.netshahr.com/www.netshahr.com/images/netshahr/amoozesh/php/shahrivar-93/506x426x5_how_to_create_a_table_with_php_script_in _MySQL.jpg.pagespeed.ic.F40nPFFKq0.jpg
می بینیم که دستور داخل if اجرا شده است. نگاهی هم به اپلیکیشن phpmyadmin می اندازیم:
http://static-d.netshahr.com/www.netshahr.com/images/netshahr/amoozesh/php/shahrivar-93/500x398x6_how_to_create_a_table_with_php_script_in _MySQL.jpg.pagespeed.ic.7FLD7RXE6l.jpg
می بینیم که داخل دیتابیس new_db جدولی ساخته شده است تحت عنوان new_table که دارای ستون های id و username و password می باشد که خصوصیات در نظر گرفته شده برای تک تک آنها هم اعمال شده است. در آموزش بعد خواهیم دید که به چه شکل می توان رکوردی داخل جدول ثبت کرد.
minicup
November 11th, 2015, 15:59
کامل ترین جواب ممکن .
ممنون دوست عزیز .
chiktarh
November 11th, 2015, 16:01
خواهش میکنم
موفق باشید
minicup
November 11th, 2015, 16:05
خواهش میکنم
موفق باشید
عزیز شاید باید یه تاپیک جدید میزدم ولی ترجیح دادم همینجا بپرسم چون مربوط هم میشه .
اگه بخوام فیلد Password رو بصورت MD5 ذخیره کنم باید چه تغییری در این row بدم ؟
chiktarh
November 11th, 2015, 16:13
منظورتون و متوجه نشدم؟
minicup
November 11th, 2015, 19:52
از طریق php باید md5 میکردم که جواب رو با سرچ پیدا کردم شرمنده اسپم زدم .
از هردو شما بزرگوارا ممنون .
TiTVPS
November 11th, 2015, 20:03
از طریق php باید md5 میکردم که جواب رو با سرچ پیدا کردم شرمنده اسپم زدم .
از هردو شما بزرگوارا ممنون .
تابع MD5برای mysql هم تعریف شده و میتوانید در query خودتون از این تابع استفاده کنید برای مثال : pass = MD5('123456')