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



visibility  
mode_comment   ۱۲۶

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

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

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

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

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

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

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

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

info توجه

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

ثبت نام در اموزش php حرفه ای

comment دیدگاه کاربران
منصور جواهر replyپاسخ

استاد یه سوال داشتم اسکریپت این پروژه و UI این پروژه رو هم خودتون طراحی کردید ؟

لقمان آوند

بله جناب جواهر
البته به خاطر محدودیت زمانی خیلی وقت روی ui نگذاشتم .

منصور جواهر

استاد یه سوال داشتم حالا که شما یک رابط کار خوب هستید میخوام ازتون یه مشورت بگیرم و اگه به سوالام جواب بدید ممنون میشم
استاد شما برای این پروژه از Purecss استفاده کردید و برای سایت خودتون فک کنم از Foundation
1 – میخوام بدونم که بوت استرپ و پیور سی اس اس ویا فاندیشن هرکدوم بدرد کدوم پرژه ها میخورن تا در انتخاب اونا برای پروژه ها استفاده کنم
2 – اینکه یه رابط کار فقط باید با یک فریمورک کار کنه یا با چندتا ؟
3 – اینکه رابط کاری اگه جی کوئری رو کامل فول باشه و جاوا مسلط نباشه ولی بلد باشه به مشکل میخوره ؟ منظور کاملم اینه که Library جی کوئری اونقدر قوی هست تا توی پروژه های بزرگ بتونه جای جاوا رو بگیره تا نیازی بهش نباشه ؟

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

لقمان آوند

سلام جناب جواهر
ممنون از لطف شما
پاسخ سوالاتتون :
1- انتخاب فریمورک بستگی به کار و سیاست طراحی شما داره . هر کدوم از اینها یه سری مزایا دارند . مثلا purecss خیلی سبک و پایه ای هست . اونایی که می خوان وبسایتشون رو سبک طراحی کنند شاید بهتر باشه برن سراغ اون . بوت استرپ و فاندیشن هم امکانات و قابلیت های بیشتری دارند و طبیعتا سنگینتر از pure هستند .
2- سلام، یه رابطکار حرفه ای باید کار با چند تا فریمورک معروف رو بلد باشه و بر اساس پروژه ای که می خواد کار کنه بهترین رو انتخاب کنه . اگر css رو خوب بلد باشید یادگیری فریمورک ها زمان زیادی نمیبره و سادست .
3- بله تقریبا، جی کوئری اونقدر قوی هست که به تنهایی بتونید ازش استفاده کنید . البته دونستن خود جاوااسکریپت خالص هم کمک زیادی می تونی در بعضی مواقع به شما بکنه .
ممنون از پیگیری و حمایت شما

neyvid replyپاسخ

عالیههههه..ممنون جناب دکتر عزیز

لقمان آوند

ممنون

ata77 replyپاسخ

آقای آوند لطفآ دیگه مطلبی منتشر نکن تا ما هم به شما برسیم 😀
ما دیر ثبت نام کردیم خودم من الان فصل 7 هستم 🙁

خسته نباشید آقای آوند و واقعآ ازتون ممنونم که بدون اینکه نکته ی رو رد کنید همه چی رو به صورت کامل میگید . ❓ ❓ ❓ ❓ ❓ ❓

لقمان آوند

نگران نباشید
شما که فایل ها رو می تونید دانلود کنید . با یه برنامه ریزی مناسب و سر فرصت می تونید همه رو ببینید .
از لطف شما سپاسگزارم

Ata77

آقای آوند میشه از setting نرم افزار phpstrom خودتون اکسپورت بگیرید بدید به ما ؟ ❗

لقمان آوند

سلام
یه فایل jar تو توی این فایل زیپ هست . می تونی اونو ایمپورت کنی .

neyvid replyپاسخ

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

لقمان آوند

ایشالله سعی می کنیم این کارو انجام بدیم .

مهدی عبدی replyپاسخ

سلام آقای آوند امکانش هست که همین الان پکیج رو برای من ارسال کنین (25 جلسه تدریس شده).

لقمان آوند

در حال حاضر به صورت پکیج و DVD چاپ شده نمی تونیم براتون بفرستیم !
مگه اینکه بخواید ساده براتون رایت کنیم و بفرستیم که پیشنهاد می کنم دو هفته صبر کنید تا با بسته و DVD چاپ شده کل فایل ها رو براتون بفرستیم .

مهدی عبدی replyپاسخ

با سلام جناب آوند من پایان دوره هم میتونم پکیج کاملو بگیرم با هزینه خودم.

لقمان آوند

ما هزینه ای برای خود پکیج نمی گیریم و فقط هزینه ی پستی رو هر کی بخواد می پردازه .
حالا اگه خیلی عجله دارید می تونم فعلا عادی براتون رایت کنم ویدیو ها رو بفرستم . اگر پکیج رو خواستید که چاپ شده و شکیل تر هست و ساختار فایل هاش مرتبتر، باز می تونید درخواست بدید .
اگه تمایل داشتید لطفا از اینجا هزینه ی پستی (پیشتاز) رو بپردازید و آدرس پستی + کد پستی برام ایمیل کنید .
موفق باشید

منصور جواهر replyپاسخ

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

لقمان آوند

ایشالله در جلسه ی جمع بندی صحبت میشه .

مهدی عبدی replyپاسخ

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

لقمان آوند

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

مهدی عبدی replyپاسخ

با سلام آقای آوند آدرس به ایمیلتان ارسال شد.

لقمان آوند

دریافت و اقدام شد .

دانشجو replyپاسخ

سلام استاد آوند عزیز

با تشکر از زحمات بی دریغ شما

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

اگه امکانش هست یه برنامه یا توضیحی هم در مورد ایجاد کرون جاب با php بدید که مثلا در یک

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

لقمان آوند

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

دانشجو

خیلی ممنونم استاد آوند عزیز

اگر این مورد رو آموزش بدید لطف بزرگی میکنید. یک دنیا ممنون

دانشجو

سلام استاد آوند عزیز خدا قوت

بازم اومدم کرون جان انشالله حتما آموزش میدید استاد 😳

لقمان آوند

ایشالله در پروژه ی آخر …

neyvid replyپاسخ

سلام.آقا در مورد مبحث سرچ در سایت و کد نویسی آن هم تو پروژه آخر توضیحاتی داده اید؟ممنون

لقمان آوند

بله ایشالله تو پروژه ی وبلاگ هم توضیح داده میشه .

Amir Khan replyپاسخ

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

لقمان آوند

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

sara salami replyپاسخ

دست مریزاداستاد!وسلام مادرaspهیچ کویری در برنامه نمی نوشتیم بلکه درخواستهای insert,update,deleteرادرقالب storeproducerپیاده می کردیم ودرلایه توابع باکمک اوناپارامتر می دادیم ودرکنترلرداده هایی که ازبرنامه میاومدرودراین توابع صدازده شده مقداردهی می کردیم آیا درphpهم میشه اینطوری کارکرد.اگه میشه پس چرا اینقدر ابتدایی نوشتیدپروژه رو. من باsqlserver2008r2می نوشتم وبا visualsteduioممنون ازپاسختون.خواهش میکنم سطح آموزش ها روبالاترببرید.

لقمان آوند

سلام و ممنون بابت دیدگاهتون
کارهای ویژوال و اینجور کارها رو تو ویژوال استدیو راحتتر می تونید انجام بدید. و روش کار تو php متفاوته و برنامه نویس با جزئیات بیشتری کد میزنه و استفاده میکنه. برای این اعمال تو php تابع می نویسید که کوئری میزنه به دیتابیس و کارا رو انجام میده! روش کار در php همینه …
چیزی که شما گفتید (استور پروسیجرها) توی mySql می تونند تعریف بشن که وارد مباحث پیشرفته mySQL باید بشیم که موضوع این دوره نیست. ممکنه بعدا یه دوره حرفه ای کار با mySQL رو برگزار کنیم که این مباحث رو توش ارائه میدیم.

sara salami

استاد من تصور می کنم با این دوره کامل phpکاملا زمینه برای دوره های پیشرفته وفوق پیشرفته فراهم شده باشه بالاخره این سایت باید تک باشه ودراریه مباحث پیشقدم .من شاهدبازتاب گسترده آموزشهایی که سایت شما گذاشته هستم در جامعه وب شایدفقط300نفرپکیج راخریده باشن ولی زمزمه هایی ازاطراف به گوش میرسه که با چشمان ناباورفقط خیره شدند!.خیلی ها به چه کنم افتادن … ازاین به بعد کارشما در ارایه مباحث سنگین تر شده وباید اینو بپذیریداین دوره mysqlراحتما برگزارکنیدممکنه نبایددرکارشما باشه به یاری خداوندبلند مرتبه وبزرگ.یاعلی!

لقمان آوند

سلام و ممنون از لطف شما
ما کارمون رو تازه شروع کردیم در زمینه وره های آموزشی. ایشالله دوره های پایه ای که برگزار بشه حتما به مباحث پیشرفته تر خواهیم پرداخت …
ممنونم

sara salami replyپاسخ

سلام استاد.یک سوال ازحضورتون داشتم بخش پرسش وپاسخ درسایت سون با phpاختصاصی برنامه نویسی شده یاباکامنت های آماده وردپرس واینکه گفته میشه اگه فرم ورودپیش فرض وردپرس راتغییر بدیم واز یک فرمی مثلا مثل سون استفاده کنیم بعضا بابرخی پلاگین ها مشکل پیدا میکنه درسته در چه صورت با این مشکل مواجه نخواهیم نشد.ممنون ازراهنماییتون.

لقمان آوند

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

hoseyn replyپاسخ

باخره این جلسه پنج ساعته رو تمومش کردم…
رفتم در مورد فول تکست جستجو کردم یه ایراد خ مهم براش پیدا کرد…
“” برای زبان فارسی حداقل 10 حرف نیاز است تا جستجو رو انجام بده “” اما همه سرعتش رو تو جستجو تایید میکنم.
میخواستم بدونم میشه و یا اصلا به صرفه هست که داده ورودی رو بگیریم و اگه کمتر از 10 کاراکتر بود با LIKE جستجو کنیم و اگه بیشتر از 10بود (که معمولا بعیده به ده تا برسه) با همون FULL-TEXT جستجو رو انجام بدیم.
در مورد این جلسه هم مثل همیشه عالی بود اما من خودم که html و CSS و JQ رو بلدم سرگیجه گرفتم…
انشاالله در دوره های بعدی آموزشتون هم باهاتون خواهم بود و امیدوارم اینجوری سرگیجه نگیرم.
موفق و سر بلند باشد. 😛

لقمان آوند

ممنون آقا حسین
بله روشی که گفتید رو می تونید انجام بدید.
ضمن اینکه عبارت های جستجو زیاد پیش میاد که از 10 کاراکتر بیشتر بشه .
مثلا عبارت ساده کد جاوااسکریپت خودش 14 کاراکتره …

sara salami replyپاسخ

باسلام درموردصفحه بندی سوال دارم نمیدونستم سوالمو کجامطرح کنم من اگه بخوام بخش پرسش وپاسخ ونیزبخش صفحاتم دروردپرس صفحه بندی بشه بدون پلاگین بایدبرای هرکدوم ازتوابع خاص خودش استفاده کنم مثلا برای کامنت از تابع paginate_comments_links() درسته !سایت سون هم آیا باهمین روش صفحه بندی شده یاساده تر؟لطفا راهنمایی بفرماییدویک منبع برای مطالعه در مورد کامنت ها وصفحه بندی به من لینک بدید.واقعا ازصبروبردباری شما نهایت سپاس رادارم.

لقمان آوند

برای صفحه بندی تو وردپرس یکم بحث متفاوته به خاطر ساختار و امکاناتی که خود وردپرس داره !
اتفاقا تو وردپرس پیشنها میکنیم از پلاگین ها استفاده کنید. ما هم از پلاگین WP-Paginate برای هر دو مورد (مطالب و نظرات) استفاده می کنیم.

erfanpj replyپاسخ

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

Notice: Use of undefined constant QA_QUSETION_PER_PAGE – assumed ‘QA_QUSETION_PER_PAGE’ in C:\xampp\htdocs\project-ui\inc\functions.php on line 140

Notice: Use of undefined constant QA_QUSETION_PER_PAGE – assumed ‘QA_QUSETION_PER_PAGE’ in C:\xampp\htdocs\project-ui\inc\functions.php on line 141

Notice: Trying to get property of non-object in C:\xampp\htdocs\project-ui\inc\functions.php on line 153

Notice: Trying to get property of non-object in C:\xampp\htdocs\project-ui\inc\functions.php on line 154

Fatal error: Call to a member function query() on null in C:\xampp\htdocs\project-ui\inc\functions.php on line 168

مشکل از کجاست ؟
با تشکر

لقمان آوند

فایل config.php درست include نشده …
این مورد رو چک کنید.

erfanpj

ممنون اما مشکلی نبود توش بررسی کردم

لقمان آوند

این مواردی که گفته تعریف نشده است همه تو فایل کافیگه.
شما اون config.php رو اول functions.php اینکلود کن و تست کن این مورد رو.

آرمین replyپاسخ

سلام آقای آوند یه سوال دارم این روشی که برای صفحه بندی به ما آموزش دادید زیاد استاندارد نیست چون فرض کنید سایت ما 70 صفحه داشته باشه و با این روش باید 70 لینک رو چاپ کنیم که منطقی نیست اگه روش بهتری برای جلوگیری از مشکل میدونید به ما هم بگید مثلا فرم نظرات دوره php بالای 70 نظر داره ولی با این حال بیشتر از چند صفحه رو نشون نمیده !

لقمان آوند

نمی تونید بگید استاندارد نیست . چون منطقش همینه. ولی می تونید در نحوه و تعداد نمایش لینک ها خودتون تصمیم گیری کنید.
مثلا 3-4 تا لینک قبل و بعد از صفحه کنونی و صفحات اول و آخر رو میتونید لینکشون رو ایجاد کنیید که خیلی شلوغ نشه …

majid zare replyپاسخ

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

Deprecated: mysql_real_escape_string(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\wamp\www\25\project-ui\inc\functions.php on line 68

خط 68 مربوط به کد :
$output = mysql_real_escape_string($input);
می باشد

ممنون

لقمان آوند

سلام
خود تابع mysql_real_escape_string از زیر مجموعه های اکستنشن mysql هست دیگه !
به جاش باید از mysqli_real_escape_string استفاده کنید که البته نیاز به یه پارامتر اضافه تر داره !

majid zare replyپاسخ

بله ممنون
به دلیل اینکه شما از mysql_real_escape_string استفاده کرده بودید و این خطا ظاهر نشده بود سوال کردم
فکر میکنم display_error در فایل config.php شما در زمان اجرا off بوده

لقمان آوند

احتمالا همینطوره که شما میفرمایید …

majid zare replyپاسخ

سلامخ خدمت استاد آوند
پروژه سوال و جواب که خیلی برای من جالب بود را تا انتها انجام دادم همه موارد به درستی اجرا شدند فقط یک نکته حل نشد و آن ارسال پاسخ و درج آن در زیر سوالات بود که همواره با خطا روبرو بود با اینکه همه توابع را کنترل کردم ولی به نتیجه نرسیدم
لطفا اگر زمان داشتید یک بررسی بفرمایید
ممنون
لینک فایل پروژه:
http://s4.picofile.com/file/8172065276/project_ui.zip.html

لقمان آوند

سلام
لطف کنید عکس ارور و یا متن دقیقش رو برای من بفرستید که بررسی کنم.

majid zare

بله
خطای خاصی در مورد کدها درج نشده فقط مواردی که در برنامه به عنوان خطا در نظر گرفته شده نمایش داده شده:
خطای :(خطایی در هنگام ثبت پاسخ شما رخ داده است .)
و یک مورد (درخواست نامعتبر است .) در بالای صفحه
تصویر صفحه:
http://s4.picofile.com/file/8172169584/Untitled.png

لقمان آوند

سلام
خوب اینو باید بررسی کنید . مقدار متغیر ها و کوئری ها رو چاپ کنید ببینید کجا مشکل هست . اون isValidAjaxRequest رو تو خط 4 ajax.php حذف کن از تو شرط ببین درست نمیشه .

Behnam Ahmadi replyپاسخ

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

لقمان آوند

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

azi azi

سلام منم دقیقا همین مشکل رو دارم میشه بفرمایید دقیقا با چه دستوری header رو باید به جای دیگه منتقل کنم؟

لقمان آوند

به این شکل میشه :
header("Location: http://www.7Learn.com");
منتهی چون ممکنه یه سری خطاها مثل ارسال دوباره هدر رو ایجاد کنه می تونید از دستور زیر هم استفاده کنید که از جاوااسکریپت بهره میبره :

nasrin replyپاسخ

سلام استاد
فرم مربوط به سوال رو به درستی پر میکنم اما در دیتابیس ذخیره نمیشه و پیغام خطا هم نمیده
تابع isValidQuestion به درستی اجرا میشه اما تابع addQuestion اصلا انگار اجرا نمیشه . مشکلش چیه؟
من کد هامو واستون ایمیل کردم

لقمان آوند

سلام
به احتمال زیاد در کوئریتون مشکل دارید. کوئری ایجاد شده رو چاپ کنید و ببینید ایا اشتباه نوشتاری داره ؟؟؟

Eagle Seein replyپاسخ

یه ویرایشگرمتن هست داخل سایتتون استفاده کردین برای پاسخ به پست ها هست فکرکنم اسمشو اگه میشه میخواستم بدونم و اینکه آیا فقط مختص ورد پرس هست یا تو سیستم های اختصاصی خودمون هم میشه به کاربردش.

لقمان آوند

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

Eagle Seein

ممنونم اینم چیز جالبی هستش حتما به دردم میخوره اما من منظورم این بودش قربان:
http://s6.picofile.com/file/8185983234/s.png
ببخشید زیاد مزاحمتون میشم.

لقمان آوند

اینو من خودم نوشتم و می تونید خودتون برای سیستم های مختلف بنویسید که در نهایت از یکی از همون syntax highligher ها استفاده میکنه …

آرمین replyپاسخ

سلام آقای آوند عزیز
من همون طور که گفتید از روش دیگر جستجو استفاده کردم همون قضیه fulltext و اینا
در کوئری ها باید اینطوری باشه درسته ؟
select * from tableName where match(columnName) against(“world”)
سوالم اینه که تابع against رو نمیشه کاریش کرد که مثل like بشه درش از % استفاده کرد ؟

لقمان آوند

از * به جای % استفاده کنی. البته باید فقط در انتهای رشته استفاده کنی.
از عبارت های منظم می تونی بهره بگیری. در موردش بخون.

Amir Saleh replyپاسخ

سلام استاد
با توجه به مباحثی که در این جلسه فرمودید من یک دفتر تلفن نوشتم که یک فرم داره و نام و شماره تلفن رو میگیره اطلاعات من در دیتا بیس ذخیره میشه اما مشکل من جایی است که در همون صفحه یک جدول گذاشتم که مخاطب های ثبت شده رو نمایش بده و تو جدول از حلقه foreach استفاده کردم وقتی اجراش می کنم یک ارور میده که میگه Notice: Undefined variable: users من چه جوری می تونم به متغییر users بگم که باید اطلاعاتش رو از جدول user باید بیاره

لقمان آوند

مثالهاش رو که زدیم. کوئری بزنید به دیتابیس و نتایج رو بگیرید و در متغیر users قرار بدید …
چندین بار چنین کاری رو توی دوره انجام دادیم و اطلاعات دیتابیس رو گرفتیم و در متغیری قرار دادیم و اونو چاپ کردیم .

mohamad mohamadi replyپاسخ

سلام ❓

لقمان آوند

سلام علیکم

john replyپاسخ

سلام استاد هنگام import فایل اس کیو ال با این خطا مواجه میشم : #1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘–CREATE DATABASE IF NOT EXISTS `project_qa` DEFAULT CHARACTER SET utf8 COLLATE ‘ at line 4

لقمان آوند

خطی که ارور داده رو کامنت کن و مجدد ایمپورت کن.

john

متاسفانه همون خط کامنته خودش . نمیدونمش چرا ارور میده . پاکش هم میکنم باز ارور میده . متاسفانه با این خطا ها زیاد روبرو میشم

لقمان آوند

پاک کنید که دیگه نیستش! ارور جدید میده ؟

masouti replyپاسخ

سلام جناب آوند
جناب اوند من وقتی میخوام فایل دیتابیس رو ایمپورت کنم این ارور میده :
SQL query:


— Database: `project_qa`

–CREATE DATABASE IF NOT EXISTS `project_qa` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
MySQL said: Documentation

#1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘–CREATE DATABASE IF NOT EXISTS `project_qa` DEFAULT CHARACTER SET utf8 COLLATE ‘ at line 4

لقمان آوند

دیتابیس رو دستی بسازید و کد ساخت جدول ها رو به صورت دستی توش اجرا کنید تا ساخته شن …

masouti replyپاسخ

جناب اوند یک سوال دیگه هم داشتم
وقتی داشتم 2ساعت اول ویدئو رو تمرین میکردم و در قسمت ثبت سوال در دیتا بیس با این ارور مواجه شدم :
( ! ) Fatal error: Call to undefined function sanitize() in C:\wamp\www\1\project-ui\inc\functions.php on line 28

وحید صالحی

سلام توی لاین 28 فایل function.php تاتبعی رو فراخوانی کردید که یا وجود نداره یا نامش کاملا با تابع مورد نظر یکسان نیست اون رو بررسی کنید.

masouti

اون رو رفع کردم اما در ادامه این ارور رو داد :
Deprecated: mysql_real_escape_string(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\wamp\www\1\project\inc\functions.php on line 256

وحید صالحی

این ارور هم مربوط real scape هست و اکستنشن mysql و کاملا واضح چون رشته کانکشن mysql دیگه منسوخ شده پیشنهاد میشه که از رشته اتصال mysqli و یا pdo بجاش استفاده کنید کافیه در تابع کانکشن اتصال به دیتالبیس بجای mysql از mysqli استفاده کنید و یا رشته اتصال pdo رو بکار ببرید البته با انجام تغییرات در فایل php.ini میشه از وجود اینگونه ارور ها جلوگیری کرد تا نمایش داده نشه اما استاندارد و اصولی نیست می تونید طبق مثال زیر :
تابه اتصال mysql رو با تغییری ساده به mysqli تبدیل کنید

تغییر یافته به mysqli

masouti replyپاسخ

رشته کانکشن من از mysqli استفاده شده :

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

لقمان آوند

به جای mysql_real_escape_string از mysqli_real_escape_string استفاده کنید … کاربردشو اینجا بخونید .

masouti

اینکار که فرمودین رو انجام دادم اما این ارور رو ادامه داد :


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

لینک دانلود :
http://uplod.ir/4ezkcddl2rfp/Desktop.rar.htm

لقمان آوند

در حال حاضر امکان تست کد رو ندارم. ولی ارور خودش گویا هست. این ستون vcvcvcvcvcvccc میگه وجود نداره! بررسی کنید ببینید در اون خط چه اشتباهی انجام دادید .

masouti replyپاسخ

سلام
میخواستم بدونم مفهومی کاربرد fetch_object و fetch_all چیست ؟
سرچ هم کردم اما بازم مفهمومی متوجه کاربرد این 2تابع نشدم
ممنون

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

سلام fetch_object رکورد ها رو به صورت یک شی از کلاس std برمیگردونه مثلا اگه رکورد دارای فیلدی به نام ID باشه در حلقه ای که رکورد ها دریافت میشه برای دسترسی به فیلد ID باید بنویسی row->ID$ اما fetch_all به شما امکان میده رکورد ها رو به صورت آرایه دریافت کنی یعنی فیلد های هر رکورد به صورت ی آرایه مجزا در دسترس شماست.میتونی به صورت آرایه با اندیس عددی یا آرایه با اندیس اسم فیلد رکورد رو دریافت کنی و به فیلد ها دسترسی داشته باشی.در دسترسی عدد اگه فیلد ID اولین ستون باشه در حلقه به صورت [0]row$ قابل نمایش و در دسترسی به صورت اسم فیلد به صورت $row[‘ID’] قابل نمایش هست.

masouti

اول از همه ممنون بابت پاسخ
دوم اینکه منظورتون اینه fetch_object “کل” رکوردها رو به صورت شی برمیگردونه ؟ با این اوصاف این خط کد :


یعنی کل رکوردها رو به صورت یه شی اورده که ما برای رسیدن به فیلد c به این شکل نوشتیمش

fetch_all هم یعنی یک رکورد رو بصورت ارایه برمیگردونه یا چندین رکورد هم میتونه برگردونه ؟

بازم ممنون

Massud Tarekhi replyپاسخ

با سلام
استاد آیا می تونیم از جستجوی باینری در php استفاده کنیم؟؟؟؟و اگر بتونیم چگونه؟؟؟؟

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

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


function binary_search($x, $list, $left, $right) {
if ($left > $right) {
return -1;
}

$mid = ($left + $right)/2;

if ($list[$mid] == $x) {
return $mid;
} elseif ($list[$mid] > $x) {
return binary_search($x, $list, $left, $mid - 1);
} elseif ($list[$mid] < $x) { return binary_search($x, $list, $mid + 1, $right); } }

x مقدا مورد نظر،list آرایه مورد نظر برای جستجو دو مقدار دیگه هم اولین و آخرین مقدار ایندکس آرایه برای جستجو هستن.
پیچیدگی زمانی اون برابر (log(n هستش که n برابر تعداد اعضای آرایه هستش.وقتی تعداد اعضا زیاد باشه بسیار بهتر از جستجوی خطی عمل میکنه.

Massud Tarekhi

میشه کد رو تو ضیح بدید.

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

اولش مقدار اول و آخر اندیس هایی که بهش دادیم رو مقایسه میکنه و اگه درست نباشن -1 برمیگردونه بعدش میاد اونارو جمع و تقسیم بر 2 میکنه اگه نتبجه با عددی که دنبالش هستیم برابر باشه اونو برمیگردونه و گرنه میاد میاد نتیجه رو با مقدار مورد نظر مقایسه میکنه اگه بزرگتز از مقدار مورد نظر باشه اونو رو جای متغییر right (اندیس آخر) میذاره و اگر کوچیکتر باشه اونو جای اندیس کوچیکتر میذاره و دوباره تابع فرخوانی میشه (تابع بازگشتی) این روند ادامه داره داره تا بالاخره نتیجه بدست بیاد.

Keivan Shalileh replyپاسخ

سلام و خسته نباشید .
به نظر شما در دایرکتوری function اونجایی که داریم تابع getQuestion رو مینویسیم تا اطلاعات را در دیتا بیس ثبت کنیم. آیا بهتر نبود در اون تابع status رو برابر با pending قرار میدادیم.
منظورم اینه که مگر نباید سوالاتی که از طرف کاربر میاد به صورت پیش فرض pending باشه؟؟
ممنون از پاسخگوییتون

لقمان آوند

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

Keivan Shalileh

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

لقمان آوند

ممنون جناب شلیله
محبت دارید

Rasoul Abedi replyپاسخ

سلام اقای آوند خسته نباشید
من فایل پروژه رو دانلود کردم و اطلاعات دیتابیس رو هم وارد کردم و وصل شد مشکلی نبود ولی هنگام اجرا کردن این ارور رو میده :
Notice: Use of undefined constant QA_QUSETION_PER_PAGE – assumed ‘QA_QUSETION_PER_PAGE’ in C:\xampp\htdocs\25\inc\functions.php on line 140

Notice: Use of undefined constant QA_QUSETION_PER_PAGE – assumed ‘QA_QUSETION_PER_PAGE’ in C:\xampp\htdocs\25\inc\functions.php on line 141

Notice: Trying to get property of non-object in C:\xampp\htdocs\25\inc\functions.php on line 153

Notice: Trying to get property of non-object in C:\xampp\htdocs\25\inc\functions.php on line 154

Fatal error: Call to a member function query() on null in C:\xampp\htdocs\25\inc\functions.php on line 168

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

لقمان آوند

دقت کنید که حتما فایل کانفیگ پروژه لود شده باشه. چون اون ثابت ها توی کانفیگ تعریف شده بودن.

Rasoul Abedi

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

لقمان آوند

من پروژه رو تو سیستم خودم دارم و الانم چک کردم . به این مشکل برنخوردم . این ثابت QA_QUSETION_PER_PAGE رو ببینید در فایل کانفیگ وجود داره یا نه …
اگر حل نشد همین پروژه رو یه جایی روی هاستی آپلود کنید و آدرس بدید به من که براتون چک کنم.

mehdi eslami replyپاسخ

من مشکل اون خطایی رو که اول اجرای پرژه میده رو متوجه شدم!
عزیزان هر کسی که از xamp استفاده میکنه به اون خطا مواجه میشن برید wamp server رو نصب کنید و از اون استفاده کنید تا مشکلتون برطرف شه.
یا علی

ehsan a replyپاسخ

سلام آقای آوند خسته نباشید استاد به یه اروری خوردم که راه حلشو
پیدا نکردم همه کارارو درست انجام دادم ولی این ارور همش ظاهر میشه conect failed:Access denied for user ‘projectt’@’localhost’ (using password: YES)

لقمان آوند

یوزر مربوطه دسترسی لازم به دیتابیس رو نداره. از یوزر روت استفاده کنید باید درست بشه . یا اینکه دسترسی یوزرتون رو بالا ببرید .

ehsan a replyپاسخ

استاد آوند یه مشکل دیگه پیدا کردم utf-8 رو نمیخونه علامت سوال میاد به جای نوشته ها چیکار باید بکنم؟

لقمان آوند

سلام
اطلاعاتی که از دیتابیس میگیرید به صورت علامت سواله یا همه متن ها ؟
از تگ متای html برای انکودینگ utf8 استفاده کردید ؟

علی اصغر جهانی replyپاسخ

سلام
خسته نباشید . من از session در پروژه خودم استفاده می کنم . ولی وقتی از صفحه ای که session را start کردم دکمه back مرورگر میزنم خطای cache_Err میده . حتی تو پروژه سیستم سوال و پاسخ هم این خطا cache رو میده . راه حلشو اگه میشه بگید واسه چی اینجوری میشه . تو همین پروژه هم اینجوری میشه . ممنون

لقمان آوند

تصویری از صفحه خطا رو برای بنده بفرستید. با مرورگرهای دیگه هم تست کنید ببینید همین مشکل رو داره ؟

فرهاد replyپاسخ

استاد ومپ سرور من تا الان درست کار می کرده ولی از امروز phpmyadmi از کار افتاده حتی فکر می کردم مشکل تداخل پورت باشه که پورت ها رو عوض کردم . اما باز هم درست نشد. php درست کار می کنه اما phpmyadmin درست نمیشه. توی اینترنت هم خیلی سرچ کردم و تموم راه حل ها رو بررسی کردم ولی درست نشد. تصویر متن خطا رو براتون اینجا می ذارم که ببینید.
http://uploadboy.com/fy4wv92nd2eh/110//jpg
استاد امکانش هست که اگه درست نشد از طریق تیم ویوور بیاین مشکل رو برای من حل کنید؟
با تشکر

لقمان آوند

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

Syd Ali Bararsani replyپاسخ

با سلام وتشکر فراوان و خداقوت به استاد آوند عزیز که واقعا وقتی دوره هاتون را با سایرین مقایسه می کنیم به ارزش کار شما پی می بریم.
فیلد های دو جدول 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']

علیرضا حاجی بابایی replyپاسخ

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

( ! ) 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 replyپاسخ

با سلام
من پروژه ی سیستم پاسخگویی رو اجرا کردم (از خود آقای آوند)
و بعد از ثبت سوال با این 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 replyپاسخ

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

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

لقمان آوند

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

حسین آقاتبار replyپاسخ

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

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

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

حسین آقاتبار

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

Milad Ghorbani replyپاسخ

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

لقمان آوند

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

حمیدرضا بیطرفان replyپاسخ

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

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

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

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

محمد علی رمضانی لف شاگرد replyپاسخ

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

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

ارسال نظرات

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