نقل قول: مشکل خطای PHP MVC
سلام
وقتی با مشکل مواجه می شوید مرحله به مرحله دیباگ کنید تا مشکل را پیدا کنید. همانطور که ملاحظه می کنید متغییر $option حاوی اندیس tel نمی باشد.
از printr_r و var_dump برای مشاهده محتوای متغییرها استفاده کنید تا مشکل را پیدا کنید.
با توجه به کدهای برنامه شما باید حداقل یک آبجکت از مدل بسازید تا constructor اجرا شود و $db مقدار دهی شود. وقتی شما از تابع استاتیک استفاده می کنید constructor اجرا نمی شود. اگر کد خود را بصورت زیر بنویسید نباید مشکلی پیش بیاید.
$model = new Model();
$option=Model::getoption();
هر چند بهتر است برای این کار از توابع استاتیک استفاده نکنید.
اگر همچنان مشکل داشتید کوئری خود را مستقیم روی دیتابیس ران کنید مثلا با استفاده از phpmyadmin و خروجی آن را بررسی کنید تا مطمئن شوید مشکل از کوئری نمی باشد.
جهت جلوگیری از ایجاد چند اتصال به دیتابیس باید دقت کنید که new PDO تنها یکبار اجرا می شود:
function __construct()
{
if(self::$db){
return;
}
$servername='localhost';
$username='myd';
$password='123';
$dbname='test1';
$farsi = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
self::$db=new PDO('mysql:Host='.$servername.';dbname='.$dbname,$ username,$password,$farsi);
}
با توجه به اینکه تنها یک نمونه از کلاس Model کافیست، میتوانید کلاس Model را بصورت singleton طراحی کنید. در مورد php singleton مطالعه کنید.
نقل قول: مشکل خطای PHP MVC
سلام
من print _r کردم ولی آرایه رو خالی نشون میده
ببین مستقیم صفحه footer.php اجرا میکنم میگه کلاس Model پیداا نشد
نقل قول: مشکل خطای PHP MVC
ممکنه مشکل از نام جدول باشد بهتر است از بکارگیری علائم خاص در نام جدول پرهیز کنید.
کوئری را به زیر تغییر دهید یا نام جدول را اصلاح کنید مثلا از خط زیر استفاده کنید.
$select='SELECT * FROM `tbl-settings`';
نقل قول: مشکل خطای PHP MVC
احتمالا کوئریت مشکل داره که آرایه خالی برمیگردونه
توی مدلت بعد از اجرای کوئری اول چک کن ارور نداشته باشی .. اگه داشتی ارورر رو چاپ کن که ببینی مشکل از چیه