
به نام خدا و با سلام خدمت همه دوستان عزیز در سون لرن؛در ادامه ی بحث ساخت CMS ساده با PHP برای این مطلب که قست اول محسوب میشه قصد داریم ساختار دیتابیس و جداول مورد نیاز با فیلدهای لازم رو بررسی کنیم،همون طور که میدونید بحث طراحی دیتابیس مهمترین بخش ایجاد یک پروژه تحت وب هستش،پس باید برای این مسئله اهمین زیادی قائل بشیم.
بنابر صلاح دید،قسمت اول آموزش برای معرفی بیشتر به صورت رایگان در اختیار کاربران محترم سون لرن قرار میگیره و انشالله از مطلب بعدی در بخش مطالب ویژه قرار میگیره.
فهرست محتوای این مقاله
ساختار دیتابیس و جداول
در ابتدا یه دیتابیس با نام CMS ایجاد میکنیم و جدولهای زیر رو به ترتیب ایجاد میکنیم.فایل اسکریپت SQL ساخت دیتابیس در انتهای مطلب ضمیمه شده.برای این CMS ساده ما از چهار تا جدول برای مطالب،کاربران،پستها و برگهها استفاده کردیم که ساختارشون به صورن زیر هستش.
جدول posts
این جدول مطالب ما رو در خودش نگه میداره و شامل فیلدهای زیر هستش.
CREATE TABLE IF NOT EXISTS `posts` ( `post_ID` bigint(11) NOT NULL AUTO_INCREMENT, `post_title` text COLLATE utf8_persian_ci NOT NULL, `post_body` longtext COLLATE utf8_persian_ci NOT NULL, `post_date` datetime NOT NULL, `post_slug` varchar(250) COLLATE utf8_persian_ci NOT NULL, `post_status` varchar(20) COLLATE utf8_persian_ci NOT NULL, `comment_count` bigint(20) NOT NULL DEFAULT '0', PRIMARY KEY (`post_ID`) )
شناسه،عنوان،متن،تاریخ،slug،وضعیت و تعداد نظرات فیلدهای جدول پست هستن که اطلاعات لازم رو ذخیره میکنن.شناسه به عنوان کلید اصلی ساخته میشه.
جدول comments
از این جدول برای ذخیره نظرات کاربران در مطالب استفاده میکنیم.
CREATE TABLE IF NOT EXISTS `comments` ( `comment_ID` int(11) NOT NULL AUTO_INCREMENT, `comment_post_ID` bigint(11) NOT NULL, `comment_user_id` bigint(11) NOT NULL, `comment_author` text COLLATE utf8_persian_ci NOT NULL, `comment_author_email` varchar(100) COLLATE utf8_persian_ci DEFAULT NULL, `comment_author_url` varchar(100) COLLATE utf8_persian_ci DEFAULT NULL, `comment_body` text COLLATE utf8_persian_ci NOT NULL, `comment_date` datetime NOT NULL, `parent_id` bigint(11) DEFAULT NULL, `comment_approved` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`comment_ID`), KEY `comment_user_id` (`comment_user_id`) )
خوب این جدول شامل شناسه،آیدی پست مربوطه (آیدی پستی که نظر براش ثبت شده)،آیدی کاربری که نظر رو ثبت کرده (اگه کاربر لاگین نباشه براش عدد صفر رو ثبت میکنیم یعنی مهمان بوده)،نام نظر دهنده،ایمیل نظر دهنده،آدرس وب سایت نظر دهنده،متن نظر،تاریخ ارسال نظر،شناسه والد (این شناسه والد برایاینه که کاربران بتونن به نظرات دیگه پاسخ بدن)،تایید نظر هستش که ستون شناسه به عنوان کلید اصلی و شناسه کاربر نظر دهنده رو هم به صورت کلید تعریف کردیم که باعث میشه توی کوئریها مون سرعت بیشتری برای انتخاب داشته باشیم.
جدول pages
این جدول ساختارش شبیه به مطالب هستش و دقیقا همون فیلدها براش در نظر گرفته شده و قرار برگهها یا همون صفحات سایت رو در این جا قرار بدیم(برای ساخت منو هم از همین استفاده میکنیم،البته توسعه اون هم در سریها بعدی مورد بحث قرار میگیره)
CREATE TABLE IF NOT EXISTS `pages` ( `page_ID` bigint(20) NOT NULL AUTO_INCREMENT, `page_title` text COLLATE utf8_persian_ci NOT NULL, `page_body` longtext COLLATE utf8_persian_ci NOT NULL, `page_date` datetime NOT NULL, `page_slug` text COLLATE utf8_persian_ci NOT NULL, `page_status` varchar(20) COLLATE utf8_persian_ci NOT NULL, `comment_count` bigint(20) NOT NULL DEFAULT '0', PRIMARY KEY (`page_ID`) )
خوب فکر نمیکنم توضیح خاصی بخواد چون خودتون میبینید که همون ساختار مطالب رو داره.
جدول users
CREATE TABLE IF NOT EXISTS `users` ( `user_ID` bigint(11) NOT NULL AUTO_INCREMENT, `user_login` varchar(50) COLLATE utf8_persian_ci NOT NULL, `user_password` varchar(50) COLLATE utf8_persian_ci NOT NULL, `user_email` varchar(100) COLLATE utf8_persian_ci NOT NULL, `user_register_date` datetime NOT NULL, `user_level` enum('user','admin','','') COLLATE utf8_persian_ci NOT NULL, `user_status` tinyint(1) NOT NULL, PRIMARY KEY (`user_ID`), KEY `user_status` (`user_status`) )
خوب اینم از جدول کاربران ما که اطلاعات کاربران در اون ذخیره میشه،برای لاگین کردن در سایت و ثبت نام ازش استفاده میشه و شامل فیلدهای شناسه کاربر،نام کاربری،کلمه عبور(چون برای ذخیره کلمه عبور از الگوریتمهای رمزنگاری مثل md5 استفاده میکنیم باید طول مناسب براش انتخاب بشه،الگوریتم md5 رشته ای با 32 کاراکتر تولید میکنه پس فیلد کمله عبور حداقل 32 کاراکتر باید طول داشته باشه )، ایمیل کاربر،تاریخ ثبت نام،سطح کاربری (در این آموزش فقط دو سطح کاربری admin و user ایجاد میشه و بعدا در اموزشهای بعدی به طور مفصل نحوه ساخت یه سیستم ACL کامل رو قرار میدیم) و وضعیت کاربر هستش.شناسه کاربری به صورت فیلد یکتا و کلید اصلی و وضعیت کاربر هم به صورت کلید تعریف شده تا در اجرای کوئری برای وضعیت کاربر سرعت بیشتری بهمون بده.
خوب دوستان عزیز برای این مطلب ساختار دیتابیس رو معرفی و کمی بررسی کردیم و انشالله در مطلب بعدی میریم سراغ ساختار فایلهای پروژه و بعدشم شروع به کد نویسی توابع و کدهای لازم.
سلام . من تازه شروع کردم به یاد گیری این آموزش وقتی دیتابیس رو میسازم مشکلی به وجود نمیاد فقط این ارور رو دریافت میکنم
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\wamp64\www\CMS\inc\db.php on line 3
از PDO هم که استفاده میکنم در کد های دیگر فایل ها ارور دریافت میکنم . لطفا راهنمایی کنید .
دوست عزیز این دوره منسوخ شده و پشتیبانی نمیشه
استاد
در چه مواقعی از کلمه کلیدی KEY استفاده میکنیم؟
1- KEY `comment_user_id`
آیا key با index فرق میکنه؟
تشکر
تفاوتی ندارن دوست عزیز. اینها مترادف هستند
سلام استاد
میشه در مورد این دو تا خط کد یه کم توضیح بدین. و اینکه دلیل این کار چی هست؟
1- /*!40101 SET @[email protected]@COLLATION_CONNECTION */
2- SET time_zone = “+00:00”
کار برد دستور SET چیست و در چه مواقعی (در کجاها ) باید از آن استفاده کرد؟
استاد! منظور از این دو (دش) — چی هست؟ و کارشان چی هست؟ مثل این خط زیر
— Database: `cms_w`
سپاس فراوان
دوست عزیز این کدها رو خود mysql برای dump کردن جدول ها ایجاد میکنه و یکسری متغییر ها برای اجرای اسکریپت تعریف میکنه.
درود من هرکاری میکنم این دیتا بیس اوکی بشو نیست :دی
Notice: Undefined index: admin in D:\xampp\htdocs\CMS\inc\db.php on line 3
Notice: Undefined index: alimoodi4542 in D:\xampp\htdocs\CMS\inc\db.php on line 3
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in D:\xampp\htdocs\CMS\inc\db.php on line 3
خانه
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in D:\xampp\htdocs\CMS\inc\functions.php on line 137
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, null given in D:\xampp\htdocs\CMS\index.php on line 34
اخرین مطالب
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, null given in D:\xampp\htdocs\CMS\index.php on line 61
بعد فایل های استایل دهی رو از کجا باید چک کنیم ؟
http://mohajeranifard.ir/php/
یکی واسم رفع خطا کرد دیتا بیس رو اما کلا انگاری استایل نداره از کجا باید نگاه کنم استایل هارو و مسیرهاشو
وقتی می خوام فایل sql که قرار دادین برای دانلود رو در database قرار بدم (import کنم) این error رو میده.
Error
SQL query:
—
— Database: `cms`
—
CREATE DATABASE IF NOT EXISTS `cms` DEFAULT CHARACTER SET utf8 COLLATE utf8_persian_ci;
MySQL said: Documentation
#1044 – Access denied for user ‘p30hosti’@’localhost’ to database ‘cms’
باید چی کار کنم ؟
یوزری که تعریف کردید مشکل داره یک یوزر جدید با بالاترین سطح دستزسی ایجاد کنید
pdf نداره چرا ؟
باید داشته باشه.
خیلی خوشحال میشیم که هر چه زودتر این کار انجام بشه. آخه می خواهم هر چه زودتر برای خودم برای وورد پرس یه قالب خوب فارسی واسه سایت خبری بسازم.
تشکر
راستی، اگه شما برام یه قالب خوب خبری بسازین، هزینه اون چقدر میشه و چند روزه آماده میشه و من تا چند مهلت دارم تا پولشو بدم؟ برای وورد پرس باش.
امیدواریم .
متاسفانه بدلیل مشغول بودن پروژه ی کاری نمی پذیرم شخصا .
عذرخواهی می کنم .
سلام خدمت شما دوستان گرامی در سایت سون لرن،
کی می تونین آموزش تصویری به زبان فارسی CMS رو برای ما تو سایت بزارین؟
ممنون میشم.
مهدی
آموزش متنیش که در حال حاضر رو سایت هست .
امیدواریم در آینده بتونیم به صورت تصویری هم آماده اش کنیم .
من sqlserver2008r2کار کردم کار با mysqlخیلی باهم تفاوت دارند؟
سلام،از لحاظ نرم افزار و کنسول های مدیریت با هم فرق دارن،ولی از لحاظ زبان SQL زیاد تفاوتی ندارن.
سلام
عید شما مبارک باشه
برا ما تازه کارا خیلی مفیده.انشاءالله که به لطف شما ما هم بتونیم یاد بگیریم. ❓
سلام . سه تا سوال داشتم .
1- تفاوت varchar و char در چیست ؟
2- توی mysql قابلیتی هست که مثلا اگر توی فیلد user یه جدول یه نام وارد کردید ، همون نام توی فیلد user یه جدول دیگه وارد بشه ؟
3- index توی mysql چیکار می کنه ؟
سلام.
1. هر دوی اینها برای ذخیره متن استفاده میشه، و تفاوتشون توی اندازه متنی که میتونن ذخیره کنن هستش. char میتونه تا 255 کاراکتر، و varchar میتونه تقریبا تا 65500 کاراکتر رو در خودش ذخیره کنه.
2. این مورد مربوط به ارتباطات فیلد ها و جدول ها یا همون relations هست. با تعریف ارتباط بین فیلد ها میتونید اینکارو انجام بدین.
3. mysql برای هر جدول یک جدول index درختی میسازه تا دسترسی به رکوردها سریعتر بشه. حالا بر حسب فیلدی که index داره اگه جستجو رو انجام بدین سرعت پردازش query شما بیشتر میشه.