طراحی و پیاده سازی پروژه سیستم پاسخگویی به سوالات

دسته بندی: آموزش
زمان مطالعه: ۳ دقیقه
۲۴ مهر ۱۳۹۳

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

قابلیت های این سیستم پرسش و پاسخ به این شکل هستند :

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

هدف از انتخاب و طراحی این پروژه برای شما این موارد هست :

  • آشنایی با نحوه طراحی و ایجاد پایگاه داده برای این اسکریپت
  • آشنایی با نحوه ی نمایش، ثبت، حذف و ویرایش یک موجودیت (محتوا - سوال/جواب ) در پایگاه داده
  • آشنایی با نحوه ی پیاده سازی برنامه بر اساس پارامترها و ایجاد راحتی بیشتر در تغیرها بعدی
  • آشنایی با نحوه ی پیاده سازی عملیات ورود و خروج کاربر (ادمین)
  • آشنایی با نحوه ی پیاده سازی قابلیت جستجو برای سایت (فرم جستجو)
  • آشنایی با منطق و نحوه ی صفحه بندی مطالب (سوالات) در برنامه های PHP
  • آشنایی با نحوه ی مدیریت سیستم بر روی رابط کاربری اصلی و عدم استفاده از پنل مدیریت
  • آشنایی با برخی ترفندهای امنیتی در پیاده سازی برنامه های PHP
  • آشنایی با نحوه ی آگاه سازی کاربران از طریق ایمیل پس از رویدادی خاص
نکته :

مدت زمان ویدیوی آموزشی این جلسه بیش از 4 ساعت است . در واقع دو جلسه ی مربوط به طراحی این پروژه رو یکجا و امروز در اختیار شما قرار دادیم تا منتظر نمونید. اگر در میانه ی دیدن ویدیو خسته شدید حتما به خودتون استراحت فکری بدید . می تونید در دو مرحله ی 2 ساعته این ویدیو رو ببینید .

سوالات و پیشنهادات :

سوالات و یا پیشنهادات خود رو در مورد این پروژه و یا پروژه های بعدی در بخش نظرات همین مطلب بنویسید.

:: توجه

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

ثبت نام در آموزش PHP

نویسنده
بیش از 15 سال هست که برنامه نویسی می کنم و از بین همه زبون هایی که کار کردم جاوا، اسمبلی و php رو دوست دارم. دانشجوی دکترای نرم افزارم و توی دانشگاه روی پردازش بیگ دیتا و پردازش موازی کار کردم و عاشق چالش از هر نوعیش هستم! سون لرن مثل بچه منه که 12 سال براش وقت گذاشتم، اینجا همه تلاش می کنیم از شروع یادگیری تا ورود به بازر کار حوزه برنامه نویسی و IT همراهتون باشیم.

جلسات دوره

نظرات کاربران

marzieh abii

function isValidStatus($status)
{
$statusArr = array(‘pending’, ‘publish’, ‘answered’);
if (in_array($status, $statusArr))
return true;
return false;
}

function getValidStatus($status)
{
if (isValidStatus($status)) {
return $status;
} else {
return ‘all’;
}
}

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

محمدحسین بیطرفان

سلام وقتتون بخیر.
من پروژه رو در لوکال نوشتم و بدون هیچ مشکلی . اما الان که روی هاست بردم خطای زیر رو داره :
Fatal error: Call to undefined method mysqli_result::fetch_all() in /home/ferestoc/mhbitarafan.ir/myprojects/ticketing/inc/functions.php on line 101
لطفا راهنمایی کنید. سپاس

محمد علی رمضانی لف شاگرد

سلام موقع اجرای پروژه و کلیک روی دکمه با ارور زیر مواجه می شوم

Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO

Webirooni _com

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

وحید صالحی

مقدار value هر input رو سینتکسش اشتباهه باید مقدار متغییر سوپر گلوبال POST رو هم با حروف بزرگ بنویسید مثال:
در ضمن input اولی چرا 2 تا اتریبیوت value داره ؟!!! اولی رو که متغییر $uName رو اکو کردید رو حذف کنید.

value="<?php echo $_POST[‘uName’]; ?>"
یا کامل تر و اصولی ترش حالت زیره
value="<?php if (isset($_POST[‘uName’])) echo $_POST[‘uName’]; ?>"
حمیدرضا بیطرفان

سلام زمانی که دکمه submitQuestion رو اجرا می کنم فرم کلا خالی می شود ولی می خواهم بعد از اجرا فرم مجددا به همان مقادیر قبلی مشاهده شود این کد را زدم ولی ارور می دهد لطفا راهنمایی کنید.

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post" class="pure-form searchform">
                                <input type="text" name="uName" value="<?php echo $uName ?>" placeholder="نام کامل شما" value="<?php echo $_post[‘uName’] ?>"/>
                                <input type="text" name="uMail" class="ltr" placeholder="ایمیل شما"  value="<?php echo $_post[‘uMail’] ?>/>
                                <input type="text" name="uMobile" class="ltr" placeholder="شماره موبایل شما"  value="<?php echo $_post[‘uMobile’] ?>/>
                                <textarea type="text" name="uQuestion" placeholder="متن سوال شما"> value="<?php echo $_post[‘qText’] ?></textarea>
                                <input type="submit" name="submitQuestion" value="ارسال سوال" class="pure-button button-green">
                            </form>
Milad Ghorbani

سلام من قبلا سوال پرسیدم جواب ندادین
در ضمن اصلا آموزشتون خوب نبوده و بی ثبات

لقمان آوند

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

حسین آقاتبار

با سلام و خسته نباشی خدمت شما ، یک سوال داشتم اونم در مبحث صفحه بندی ،اینکه طبق این آموزش هربار برای هر صفحه با کوئری لیمیت خب صفحه بندی میشه ، اگر کل صفحات را یا محدوده بیشتری بگیریم و با js یا حالا مثلا انگولار صفحه بندی کنیم ، چطوره ؟ بهتره اونطوری؟
با تشکر

کیوان علی محمدی

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

حسین آقاتبار

ممنون بابت پاسخ ، بیشتر برای کمتر فشار اومدن روی دیتابیس گفتم که فک نکنم هم تأثیری داشته باشه 😕

ppp

استاد بنده نفهمیدم فرق $sql و $countSql در چی هست البته توضیح دادید اما کم توضیح دادید اگه میشود بیتشر توضیح بدید و فرق این دوتا رو بگید

http://rozup.ir/view/2113029/888.png

لقمان آوند

کوئری $sql همه اطلاعات سوالات رو بهتون میده ولی $countSql فقط یه عدد (تعداد سوالات) رو بهتون میده

fara php16

با سلام
من پروژه ی سیستم پاسخگویی رو اجرا کردم (از خود آقای آوند)
و بعد از ثبت سوال با این error مواجه شدم

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\xampp\htdocs\FCoders\Loghman Avand – PHP_SQLi\25\project\inc\functions.php on line 257

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\xampp\htdocs\FCoders\Loghman Avand – PHP_SQLi\25\project\inc\functions.php on line 257

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\xampp\htdocs\FCoders\Loghman Avand – PHP_SQLi\25\project\inc\functions.php on line 257

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\xampp\htdocs\FCoders\Loghman Avand – PHP_SQLi\25\project\inc\functions.php on line 257

در خط 255 هم $output = mysqli_real_escape_string($input); است که البته خودم sqli نوشتم قبلا sql بود.

نتیجه :
پیام ثبت اطلاعات نمایش داده میشه …
وضعیت اطلاعات و تاریخ ثبت میشه اما نام – ایمیل – تلفن – سوال — رشته ی خالی است و هیچ چیز ثبت نمیشه و رکود اضافه میشه… به تعداد سوال هایی که ثبت میکنم..
لطفا جواب بدید … نمی تونم جلو برم.

لقمان آوند

سلام
مشکل همینه که تبدیلش کردید به sqli. چون این تابع نیاز به دو تا پارامتر داره. اون ورژن قبلی هم که با sql بوده منسوخ شده. سعی کنید با خوندن مستندات توابع mysqli به نسخه جدید تبدیل کنید

علیرضا حاجی بابایی

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

( ! ) Warning: mysqli::mysqli(): in E:\wamp\www\php\25\project\inc\config.php on line 29
Call Stack
# Time Memory Function Location
1 0.0025 152872 {main}( ) ..\index.php:0
2 0.0045 163584 include_once( ‘E:\wamp\www\php\25\project\inc\actions.php’ ) ..\index.php:1
3 0.0068 211280 include_once( ‘E:\wamp\www\php\25\project\inc\functions.php’ ) ..\actions.php:2
4 0.0084 217912 include_once( ‘E:\wamp\www\php\25\project\inc\config.php’ ) ..\functions.php:3
5 0.0085 219608 mysqli ( ) ..\config.php:29
Connect failed: Accès refusé pour l’utilisateur: ‘qa_db_user’@’@localhost’ (mot de passe: OUI)

لقمان آوند

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

Syd Ali Bararsani

با سلام وتشکر فراوان و خداقوت به استاد آوند عزیز که واقعا وقتی دوره هاتون را با سایرین مقایسه می کنیم به ارزش کار شما پی می بریم.
فیلد های دو جدول answers و question را join inner کردم .اما برای چاپ اطلاعات مشکل دارم.. ممنون میشم راهنمایی بفرمایید.

$sql=”SELECT questions.id,questions.uname,questions.text,answers.text FROM questions INNER JOIN answers WHERE questions.id=answers.qid”;
$result=$db->query($sql);
while ($row = $result->fetch_assoc()) {
echo ????
}
اگر یک جدول بود مشکلی نبود و بعنوان مثال با دستور echo $row[‘id] چاپ می کردم ولی حالا…

لقمان آوند

فیلد های select رو با کیورد as نامگذاری کنید و استفاده کنید. اینطوری مثلا :
SELECT questions.id AS qid,questions.uname AS qUname , ...
=> echo $row['qid']

لقمان آوند

یکبار حذف و دوباره نصب کنید ببینید مشکل رفع نمیشه …

پایان زمان پشتیبانی

دانشجوی گرامی، بازه پشتیبانی فعال برای این دوره ۳ ماه است که برای شما به پایان رسیده است.

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

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.
گزارش مشکل