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

مشكلة في تضمين الملفات php بطريقة المسار النسبي بعد اختلاف مكان الاستدعاء

محمد المصري12

السؤال

سلام عليكم

مثلا عندي مجلد اسمه includes

جواه ملف اسمه sidebar.php

جوه الملف ده كود مثلا

  <a href="addfabric.php">

الان لما انا باجي استدعي الملف ده من فايل في الروت الرئيسي بيشتغل كويس جدا ، هايفتح عادي جدا لانه شايف ملف sidebar في مجلد includes عادي و شايف ملف addfabric.php  في مكانه عادي

طيب قمت انا فتحت مجلد تاني اسمه hassob مثلا

و جواه ملف اسمه view.php هبرمجة يجيب داتا معينه مش ازمتنا الان

لما يعمل تضمين للسايد بار 

 

include ("../sidebar.php");

جابه عادي جدا و مفيش مشكلة 

لكن من الصفحة دي جوا مجلد hassob و حابب مثلا ادوس على ملف addfabric.php اللي هو مكانه اصلا في الروت 

ما بيقراهوش لانه ببساطة هو بيدور عليه جوا مجلد حسوب 

و لو غيرت اللينك  في ملف sidebar.php بالطريقة دي مثلا

  <a href="../addfabric.php">

يشتغل من جوا مجلد حسوب زي الفل لانه دور عليه برا المجلد و لاقاه

لكن لما اشغل اي ملف من المجلد  الرئيسي ما يشتغلش لانه هايروح يدور عليه برا المحلد الرئيسي مش هايلاقيه

السؤال ازاي احل المشكلة دي ، اني اعمل الملفات اللازمة لتشغيل كل صفحات الموقع و استدعيها باي شكل مهما فتحت من مجلدات لانه مش منطق ابدا كل ملفات الموقع تبقى جوا المجلد الرئيسي

تم التعديل في بواسطة Wael Aljamal
توضيح السؤال
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1
بتاريخ 1 ساعة قال محمد المصري5:

تاني حل ، لو متوفر قدام حضرتك اي لينك توضيح للفكرة او تتفضل عليا باعطائي مثال اكون ممنون جدا

القصد هو عمل ملف منفصل، يقوم هو باستيراد الملفات:

<?php

$path1 = "path\to\file1.php";

$path2 = "path\to\file2.php";

$path3 = "path\to\file2.png";

public function my_include($fileName) {
  
	if   ($fileName == "file1") { 
    	include($path1); 
    } 
  	elif ($fileName == "file2") {
    	include($path2);
    } 
  	elif ($fileName == "file3") {
    	return $path3;
    }
}


?>

حاول هذه الطريقة.

توضيح:

ضع الملف المساعد في المسار الجذر للمشروع و تكون المسارات نسبية لهذا الملف.

ثم قم بتضمين الملف في بداية كل صفحة لديك، و استدعي الدالة في المكان المناسب.

يمكنك جعل الدالة تعيد المسار فقط أو تقوم بتضمين الملف اختر الطريقة المناسبة لك حسب نوع الملف.

لاحظ التضمين الثالث.

'<a href=' <?= my_include("file3")?> '>'

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

ما فهمته أنك تريد نضمين ملف/وضع رابط حيث يتم استدعائه من مسارين مختلفين، لذلك الرابط النسبي relative path لا يعمل بالشكل المطلوب، الحل هو استخدام المسار المطلق absolute path أي وضع الرابط بشكل كامل للملف addfabric.

المسار المطلق يبدأ من اسم القرص C أو D ويحوي جميع المجلدات الفرعية التي ينتمي لها الملف:

C:\wamp64\www\my_test\test.php

 

لكي تعمل هذه الميزة، يجب أن تكون متوافقة مع مخدم الويب الخاص بك مثلا XAMPP أو WAMPP.

لدي WAMMP ولإضافة هكذا مسار يتم تحديد رابطه ك Virtual Host.

نفتح wampmanager->localhost من رابط localhost:

AJ8UU.jpg.78038ca9aee5974ee7c721c83f5e7a97.jpg

ثم تابع تعبئة البيانات، يمكن البحث عن How to create a Virtual Host in WampServer لاتباع الخطوات من التوثيق وغيره من الشروحات.

 

حل ثاني:

يمكنك إنشاء ملف مساعد يحوي على استدعائات ملفات لها مسار نسبي محدد، مثلا تضع عدة دوال ضمنه و كل دالة تقوم بتضمين ملف ما، و عندها لتضمين ملف من دالة، نضمن الملف المساعد ثم نقوم باستدعاء الدالة المسؤولة عن تحميل الملف الفرعي.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

شكرا جدا لك استاذنا 

اول طريقة فكرت بها فعلا ، بس حسيتها غير مجدية لاني مجرد مرفع السكربت عالهوست هاضطر اني اغير المسار تاني كل مرة 

تاني حل ، لو متوفر قدام حضرتك اي لينك توضيح للفكرة او تتفضل عليا باعطائي مثال اكون ممنون جدا

و متشكر جدا لتعبك

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...