من فقط همیجنا از وردامپ استفاده کردم ؟جای دیگه که نیاز نیست باشه؟
Hossein S۰۳ فروردین ۱۴۰۲، ۱۷:۱۷
سورس پروژه رو میخوای توی تلگرام ارسال کنم اینجا نمیشه هم بخار اینترنتم هم اینکه نشون نمیده لود شدن رو؟
Hossein S۰۳ فروردین ۱۴۰۲، ۱۷:۲۰
پروژه رو در گیت قرار بده بررسی بشه.
احمدرضا فاطمی کیا۰۴ فروردین ۱۴۰۲، ۱۰:۲۵
https://gitlab.com/hosseinsarlaK/to-do
Hossein S۰۴ فروردین ۱۴۰۲، ۱۵:۰۵
بررسی کردم اکی بود با تغییر علامت کوچکتر که در بالا اشاره شد.
احمدرضا فاطمی کیا۰۴ فروردین ۱۴۰۲، ۱۵:۴۱
این هم پروژه
احمدرضا فاطمی کیا۰۴ فروردین ۱۴۰۲، ۱۶:۱۰
سلام دوست عزیز ریسپانس ۱ که نشون بده به دیتابیس اضافه شده نشون نمیده
Hossein S۰۴ فروردین ۱۴۰۲، ۱۷:۳۵
اصلا فکرنکنم به فانکشین add task برسه که بخواد کویری دیتا بیس اجرابشه؟
Hossein S۰۴ فروردین ۱۴۰۲، ۱۷:۴۲
من تست کردم رسپانس یک رو هم نشون داد.
پروژه که پیوست کردم رو بررسی کن.
احمدرضا فاطمی کیا۰۴ فروردین ۱۴۰۲، ۱۹:۰۶
اقای فاطمی کیا میشه شماره تماستونو بدید؟ مشکل من حل نشد
Hossein S۰۴ فروردین ۱۴۰۲، ۱۹:۳۲
در تلگرام به این آیدی پیام بدید ریموت شم بررسی کنم:
ahmadreza_fatemikia@
احمدرضا فاطمی کیا۰۴ فروردین ۱۴۰۲، ۱۹:۳۸
سلام دوست عزیز
مشکلتون مربوط به میشه به لاین 35 از تصویری کدی که اولای تاپیک فرستادین که باید بصورت زیر تصحیحش کنید:
if (!isset($taskTitle) || strlen($taskTitle) < 3)
تصویر مربوطه:
صادق برزگر۰۵ فروردین ۱۴۰۲، ۲۲:۰۵
sسلام میشه انی دیسک بزنی روی سیستم من این مشکل داره ؟ولی مشکل این نیست
Hossein S۰۵ فروردین ۱۴۰۲، ۲۲:۰۸
خب مشکلتون چی هست؟ بگید تا حلش کنیم.
صادق برزگر۰۵ فروردین ۱۴۰۲، ۲۲:۲۸
مشک اینه که سورس کد من دست شما درست کارمیکنه ولی برای من داخل سیتم خودم ن؟ اگه انی دیسک میتونی بزنی مشکلمو حل کنید ممنون میشم
Hossein S۰۶ فروردین ۱۴۰۲، ۱۷:۰۱
سلام،
سیستمتون برای اتصال مشکل دارد.
اگر سورسی که در بالا گذاشتید رو تغییری ندادید مشکلی ندارد ولی اگر تغییراتی داخلش داشتید باید مرحله به مرحله دیباگ کنید.
بجای enter از باتن Add New Task استفاده کنید و کدتون رو تغییر بدید و بگید زمانی که روی دکمه کلیک شد ...
مرحله ی بعدی باید یک آلرت بذارید یا console.log و مقداری که که در اینپوت وارد شده توسط خودتون رو دریافت کنید ببینید درست هست یا خیر.
مرحله بعدی این مقادیرو به سمت سرور ارسال کنید و پاسخی از سمت سرور ارسال کنید و response رو بصورت alert یا log چاپ کنید.
در این مراحل تب console رو هم باید ببینید که خطایی دارید یا نه.
اگر مشکل نرم افزاری وجود نداشته باشد متوجه مشکل خواهید شد. اگر مشکل نرم افزاری باشد که موضوع متفاوت خواهد بود.
در نهایت تمام این کار هارو کردید و نتونستید، سلوشن آخر این است که روی یک هاست آپلود کنید و دسترسی بدید تا روی هاست بررسی کنیم. چون یکبار سورستون رو روی سیستم تست کردیم و مشکلی نداشته و ویدیوی تست رو هم براتون ارسال شد.
محسن موحد۰۷ فروردین ۱۴۰۲، ۱۹:۱۱
سلام استاد عزیز اقای موحد
من این سناریو قبلا اجرا کردم یازم جواب ندادشاید من بلد نبودم درست اجراش کنم اگه ممکنه همین سناریو بالا رو برام فیلم بگیرید داخل واتساپ ارسال کنید
Hossein S۰۸ فروردین ۱۴۰۲، ۱۳:۳۷
سلوشن آخر این است که روی یک هاست آپلود کنید این کارو چجور انجام بدم ؟؟
Hossein S۰۸ فروردین ۱۴۰۲، ۲۳:۲۵
جواب نداد که نمیشه، باید یا خطا بده و یا یک آلرتی داشته باشید. حتی اگر مقداری هم خروجی نده باز میشه نتایجی گرفت.
شما که تا این مرحله آموزش رو رفتید جلو، دیباگ کردن نباید کار سختی باشه چون فقط کافیه آلرت یا console.log بگیرید.
اگر هاست دارید روی یک هاست پروژه تون رو آپلود کنید اگر هاست ندارید که هیچی.
باتن Add New Task رو یک کلاس بهش اضافه کنید مثلا کلاس new-task:
<divclass="button active new-task">Add New Taskdiv>
و داخل کدهای جاوااسکریپت انتهای صفحه اینها رو بنویسید: (داخل document.ready)
قبل از هرگونه تستی باید یکی از فولدرهارو از سمت چپ صفحه انتخاب کنید تا folder_id در آدرس بار ست شود.
بعد داخل اینپوت چیزی تایپ کنید و دکمه Add New Task رو کلیک کنید. همزمان تب console رو هم ببینید خطایی نداشته باشه. چون اگر خطای قرمز رنگی وجود داشته باشه کدها اجرا نمیشن. اگر کدها بدرستی اجرا شدن و مقدارو بدرستی آلرت گرفتید، مرحله بعدی نوشتن کدهای ajax هست ....
محسن موحد۰۹ فروردین ۱۴۰۲، ۰۱:۴۷
Hossein S۰۹ فروردین ۱۴۰۲، ۱۵:۱۷
Hossein S۰۹ فروردین ۱۴۰۲، ۱۵:۱۷
خوب حالا این قسمت اجرا کردم
Hossein S۰۹ فروردین ۱۴۰۲، ۱۵:۱۹
بازم نشد
Hossein S۰۹ فروردین ۱۴۰۲، ۱۸:۴۴
Hossein S۰۹ فروردین ۱۴۰۲، ۱۸:۴۴
Hossein S۰۹ فروردین ۱۴۰۲، ۱۹:۲۹
بعنوان taskTitle باید $('#TaskNameInput').val() ارسال بشه.
سمت سرور هم پیام خطا رو چاپ نگیر. $taskTitle رو echo کنید تا ببینید چه چیزی ارسال شده است که وارد if میشود.
محسن موحد۱۰ فروردین ۱۴۰۲، ۰۰:۲۹
خوب مقدار$taskTitleاکو گرفتم دارمش
Hossein S۱۰ فروردین ۱۴۰۲، ۰۳:۵۰
Hossein S۱۰ فروردین ۱۴۰۲، ۰۳:۵۰
مقدار فولدر ایدی روهم اکو گرفتم دارمش
Hossein S۱۰ فروردین ۱۴۰۲، ۰۳:۵۲
Hossein S۱۰ فروردین ۱۴۰۲، ۱۸:۱۵
response رو اگر alert کردید تا اون قسمت همه چیز به درستی کار میکند.
همینطور ادامه بدید و از if که strlen رو چک میکند هم باید رد بشید اگر داخل if میوفته یکبار این رو هم چک کنید:
echo strlen($taskTitile);
alert بگیرید. از if که گذشتید وارد تابع addTask شوید و خط به خط از اونجا هم alert بگیرید و ببینید. برای مثال میتونید:
echo$stmt->rowCount();
ببینید تا این مرحله پیش اومدید، انتظار میره بقیه ی دیباگ رو هم بتونید انجام بدید، این تصاویری که گذاشتید همه نشون از درستی کار تا اون مرحله بوده و روی درستی کار نمیشه نظری داد. پس باید ادامه بدید تا به خطا و مشکلی بخورید. یا حلش کنید یا اگر نتونستید خطا رو بذارید.
خطای 500 رو هم بررسی کنید چه تغییری دادید یا وقتی به کدوم خط از کد سمت سرور میرسید این خطا رخ میدهد تا فیکسش کنید.
محسن موحد۱۱ فروردین ۱۴۰۲، ۰۳:۰۸
این ارور جی کویری واسه چیه؟
Hossein S۱۱ فروردین ۱۴۰۲، ۱۹:۵۷
خطا به این مورد مربوط نیست و علتش سمت سرور هست که 500 internal server error میگیرید.
تا زمانی که alert هارو نمایش دادید، عبارت هایی مثل hossein و 58 درست بوده، بعد ازون چه تغییری ایجاد کردید؟ (تنظیمات وب سرورو تغییر دادید یا ... ؟)
علت این خطای جی اس، بخاطر خطاییه که از سرور دریافت کرده و اتصالش موفق نبوده.
ببینید من تغییراتی داخل کدها انجام دادم سه فایل tpl-index.php و lib-tasks.php و ajaxHandler.php ضمیمه میکنم بهمراه فایل sql دیتابیس.
هم با Enter و هم با کلیک روی دکمه Add New Task میتونید تسک جدید اضافه کنید.
کدهای js به این شکل خواهد بود:
$(document).ready(function () {
$('.new-task').click(function (e) {
addTask();
})
$('#addFolderBtn').click(function (e) {
var input = $('input#addFolderInput');
if(input.val().length < 3) {
alert('نام فولدر باید بزرگتر از 2 حرف باشد');
return;
}
$.ajax({
url: "process/ajaxHandler.php",
method: "post",
data: {action: "addFolder", folderName: input.val()},
success: function (response) {
if (response == 1) {
$(' ' + input.val() + '').appendTo('ul.folder_list');
input.val('');
} else {
alert(response);
}
},
error: function (jqXhr, textStatus, errorMessage) { // error callbackalert('Error: ' + errorMessage);
}
});
});
$('#TaskNameInput').on('keypress', function (e) {
if (e.which == 13) {
addTask();
}
});
});
functionaddTask() {
const folderId = <?= $_GET['folder_id'] ?? 'undefined' ?>;
const taskTitle = $('#TaskNameInput').val();
if (folderId === undefined) {
alert('Folder ID is empty!');
return;
}
if(taskTitle.length < 3) {
alert('عنوان تسک باید بزرگتر از 2 حرف باشد');
return;
}
$.ajax({
url: "process/ajaxHandler.php",
method: "post",
data: {action: "addTask", folderId: folderId, taskTitle},
success: function (response) {
if (response == 1) {
location.reload();
return;
}
alert(response);
},
error: function (jqXhr, textStatus, errorMessage) { // error callbackalert('Error: ' + errorMessage);
}
});
}
یه بکاپ از کدهای خودتون بگیرید و کدهایی که من نوشتمو تست کنید. یک دیتابیس جدید ایجاد کنید و فایلی که ضمیمه کردمو import کنید و روی دیتابیس جدید تست بگیرید.