اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

سؤالك غير واضح، يٌرجى إعطاء تفاصيل أكثر حتى يستطيع المدربين هنا مساعدتك، و إن كان سؤالك متعلق بدورة من الدورات يُرجى طرحه أسفل الدرس الذي تواجه فيه المشكلة.

مبدئياً من خلال رسالة الخطأ التي أرفقتها يتضح لي أنك تستعمل إطار Laravel و رسالة الخطأ توضح لك أن المسار:

/posts

لا يمكن الوصول له عبر الطريقة GET و إنما POST، تأكد أنك قد أنشأت هذا المسار بالطريقة get في الملف الخاص بـ routes أو أنك قد أنشأته بشكل مغاير مثلاً post/ في هذه الحالة تأكد أن عملية إعادة توجيه المستخدم بعد إضافة البيانات تتم نحو المسار الصحيح.

  • 0
نشر

الخطأ يعني طريقة GET لا تدعم عملية الإرسال (POST) ولن تستطيع استخدام GET لإضافة عناصر جديدة إلى قاعدة البيانات، بل يتم استخدام طريقة POST بدلاً من ذلك.

ومثلاً إذا كنت تستخدم لغة جافاسكريبت فإليك مثال بالإعتماد على مكتبة axios لإرسال طلب إضافة:

// استيراد المكتبة اللازمة لإجراء طلبات الشبكة
import axios from 'axios';

// بيانات العنصر الجديد الذي سيتم إضافته إلى قاعدة البيانات
const newItem = {
  name: 'اسم العنصر',
  description: 'وصف العنصر'
};

// إجراء طلب POST لإضافة العنصر إلى قاعدة البيانات
axios.post('رابط الخادم/المسار', newItem)
  .then(response => {
    console.log('تمت إضافة العنصر بنجاح!', response.data);
  })
  .catch(error => {
    console.error('حدث خطأ أثناء إضافة العنصر:', error);
  });

وإذا كنت تستخدم لغة PHP فإليك مثال:

<?php
// بيانات العنصر الجديد الذي سيتم إضافته إلى قاعدة البيانات
$newItem = array(
  'name' => 'اسم العنصر',
  'description' => 'وصف العنصر'
);

// معلومات الاتصال بقاعدة البيانات
$servername = 'اسم خادم قاعدة البيانات';
$username = 'اسم مستخدم قاعدة البيانات';
$password = 'كلمة مرور قاعدة البيانات';
$dbname = 'اسم قاعدة البيانات';

// إنشاء اتصال بقاعدة البيانات
$conn = new mysqli($servername, $username, $password, $dbname);

// التحقق من نجاح الاتصال
if ($conn->connect_error) {
  die('فشل الاتصال بقاعدة البيانات: ' . $conn->connect_error);
}

// استعلام SQL لإضافة العنصر إلى قاعدة البيانات
$sql = "INSERT INTO اسم_جدول_قاعدة_البيانات (اسم_العمود_1, اسم_العمود_2) VALUES ('" . $newItem['name'] . "', '" . $newItem['description'] . "')";

// تنفيذ الاستعلام والتحقق من نجاحه
if ($conn->query($sql) === TRUE) {
  echo 'تمت إضافة العنصر بنجاح!';
} else {
  echo 'حدث خطأ أثناء إضافة العنصر: ' . $conn->error;
}

// إغلاق الاتصال بقاعدة البيانات
$conn->close();
?>

وبالطبع عليك استبدال "اسم_خادم_قاعدة_البيانات" و "اسم_مستخدم_قاعدة_البيانات" و "كلمة_مرور_قاعدة_البيانات" و "اسم_قاعدة_البيانات" و "اسم_جدول_قاعدة_البيانات" و "اسم_العمود_1" و "اسم_العمود_2" بالقيم المناسبة وفقًا لبيئة قاعدة البيانات لديك، وأيضًا تعديل الاستعلام SQL وفقًا لهيكل جدول قاعدة البيانات.

 

  • 0
نشر

لا يمكن تحديد الخطأ بالضبط بدون المزيد من التفاصيل ولكن السبب عموماً بسبب استخدام GET 

يتم استخدام طريقة GET عادةً لاسترداد بيانات من المورد المحدد، ولا يتم تغيير أو تعديل المورد. يرسل المتصفح طلب GET إلى الخادم لاسترداد المورد، ويتم عادةً عرض المورد على الصفحة. ومع ذلك، يتم استخدام طريقة POST عادةً عندما يتم إرسال بيانات إلى المورد المحدد، ويمكن استخدامها لإضافة بيانات جديدة، أو تعديل بيانات موجودة، أو حذف بيانات.

عند استخدام نموذج HTML لإرسال البيانات إلى الخادم، يتم تحديد الطريقة المستخدمة في النموذج باستخدام العنصر "method" في عنصر النموذج "form"، ويتم تعيين قيمة هذا العنصر إلى "POST" عندما تحتاج إلى إرسال البيانات إلى الخادم باستخدام طريقة POST.

في حالة الخطأ "The GET method is not supported for route posts. Supported methods: POST."، يشير هذا إلى أن الطريقة التي تم استخدامها للوصول إلى مسار "posts" هي GET، والتي لا تدعمها الخادم. لحل هذه المشكلة، يجب تحديد الطريقة المستخدمة في النموذج إلى POST، أو التحقق من الكود الخاص بمسار "posts" على الخادم والتأكد من دعمه لطريقة POST. بمجرد استخدام الطريقة الصحيحة، يجب أن تتمكن من إضافة العناصر إلى قاعدة البيانات بنجاح والعرض بشكل صحيح على الصفحة.

  • 0
نشر

مشكلتك غير واضحة فهي مشكلة عامة، ولكن يرجح أن الخطأ خاص باستهداف مسار POST باستخدام GET باطار عمل لارافيل. 

يحدث مثل هذا عادة عند نسيان تصريح الخاصية method بالنسبة لعنصر form معين تحاول تقديمه. فيأخذ ذلك السلوك الافتراضي وهو اعتماد GET كطريقة للطلب. 

ابحث عن عنصر form المرافق وقم باسناد قيمة POST لهاته الخاصية method: 

<form method="POST" 

قد يكون أيضا من الضروري تصريح حقل يحدد نوع الطلبية: 

طريقة أولى:

@method('POST')

طريقة ثانية:

input type="hidden" name="_method" value="POST">

وطبعا لا تنسى حقل csrf لطلبيات POST: 

@csrf

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...