۱۳ امیر محمد جوادی
عدم ارسال اطلاعات فرم به دیتابیس
جامعه پی اچ پی ایجاد شده در ۰۳ دی ۱۴۰۱

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

ممنون میشم برسی فرماید

سلام امیر جان

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

  • آدرس دهی یکی از include‌ها توی فایل bootstrap/init.php اشتباه هست که باید به شکل زیر اصلاح بشه:
include BASE_PATH . "libs/lib-location.php";
// Convert to
include BASE_PATH . "libs/lib-locations.php";
  • دومین اصلاحی که باید صورت بگیره توی فایل assets/js/scripts.js هست، که در قسمت مربوط به submit فرم form#addtolocation باید کد زیر رو به اول کدتون اضافه کنید تا صفحه رفرش نشه و دستور ajax اجرا بشه.
e.preventDefault();
  • مورد بعدی هم مربوط به فایل libs/lib-locations.php هست که باید اصلاح بشه:
function insertLocation($data)
{
 global $pdo ;
    $sql = "INSERT INTO `locations` (`title`, `lat`, `lang`, `type`) VALUES ( :title, :lat, :lng, :typ;";
    $stmt = $pdo->prepare($sql);
    $stmt -> execute([':title'=>$data['title'],':lat'=>$data['lat'],':lng'=>$data['lng'],':typ'=>$data['type']]);
    return $stmt->rowCount();
}

باید تبدیل بشه به:

function insertLocation($data)
{
  global $pdo;
   
  $sql = "INSERT INTO `locations` (`title`, `lat`, `lng`, `type`) VALUES (:title, :lat, :lng, :typ);";
  $stmt = $pdo->prepare($sql);
  $stmt->execute([':title'=>$data['title'],':lat'=>$data['lat'],':lng'=>$data['lng'],':typ'=>$data['type']]);
  return $stmt->rowCount();
}
صادق برزگر ۰۳ دی ۱۴۰۱، ۱۵:۴۳

سلام مهندس

کدهارا تصحیح کرددم ارور 500 اینترنال سرور برخورد کردم

امیر محمد جوادی ۰۳ دی ۱۴۰۱، ۱۶:۴۶

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

صادق برزگر ۰۳ دی ۱۴۰۱، ۱۶:۴۹

سلام مهندس

کدهارا تصحیح کرددم ارور 500 اینترنال سرور برخورد کردم

امیر محمد جوادی ۰۳ دی ۱۴۰۱، ۱۷:۱۱

امیر جان در چه صفحه ای خطای 500 رخ میده؟


یک اصلاح دیگه هم هست که در فایل tpl/tpl-index.php و خط 32 باید انجام بدید:

14bd-photo_2022-12-24_21-25-49.jpg

اگه همچنان مشکل پابرجا بود لطفا دوباره سورسی که تغییرات رو انجام دادید پیوست کنید.

صادق برزگر ۰۳ دی ۱۴۰۱، ۱۸:۰۴

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

امیر محمد جوادی ۰۳ دی ۱۴۰۱، ۲۰:۱۱

این مورد رو انجام دادید؟

  • دومین اصلاحی که باید صورت بگیره توی فایل assets/js/scripts.js هست، که در قسمت مربوط به submit فرم form#addtolocation باید کد زیر رو به اول کدتون اضافه کنید تا صفحه رفرش نشه و دستور ajax اجرا بشه.
e.preventDefault();

اگر انجام دادید و هنوز مشکل داره، سورس جدیدتون رو ارسال کنید.

صادق برزگر ۰۳ دی ۱۴۰۱، ۲۰:۵۷

بعد از سابمیت اینولید رکوئست پیام داده می‌شود


امیر محمد جوادی ۰۴ دی ۱۴۰۱، ۰۷:۲۵

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

در فایل assets/js/scripts.js و خط 137 باید تغییر زیر رو انجام بدید:

e.preventdefualt();
// Change to
e.preventDefault();

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

صادق برزگر ۰۴ دی ۱۴۰۱، ۱۰:۲۷

سلام مهندس عزیز تغییرات اعمال کردم منتهی مراتب دکمه ثبت می‌زنم هیچ اتفاقی نمی‌افتد

امیر محمد جوادی ۰۵ دی ۱۴۰۱، ۰۷:۴۰

سلام،

تغییراتی که صادق گفتن انجام بدیدو من هم چک کردم و بدرستی کار میکنه، یکبار دیگه تغییراتی که گفته شدو بررسی کنید، تب console اینسپکت رو باز کنید چک کنید خطای جی اس نداشته باشید و زمانیکه روی دکمه کلیک میکنید اگر خطایی در تب کنسول ندیدید ب سربرگ نتورک برید و دکمه رو بزنید ببینید ریکوئست ارسال میشه یا نه... این موارد بررسی و دیباگینگ رو انجام بدید تا اشکال کارتون رو پیدا کنید و فیکسش کنید وگرنه نهایتا میگم سورس تغییر یافته رو واستون بذارن.

محسن موحد ۰۵ دی ۱۴۰۱، ۰۸:۰۷