دوره مجازی PHP (جلسه 25): طراحی و پیاده سازی پروژه سیستم پاسخگویی به سوالات



visibility  
mode_comment   ۱۲۴

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

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

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

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

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

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

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

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

info توجه

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

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

comment دیدگاه کاربران
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']

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

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

( ! ) 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)

لقمان آوند

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

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 به نسخه جدید تبدیل کنید

ppp

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

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

لقمان آوند

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

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

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

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

حسین آقاتبار

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

Milad Ghorbani

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

لقمان آوند

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

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

سلام زمانی که دکمه 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>
وحید صالحی

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

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

کاربر گرامی، امکان ارسال نظر و پشتیبانی برای دوره های مجازی فقط برای دانشجویان این دوره امکان پذیر می باشد.

1 3 4 5