# زبان های اسکریپتی > PHP > CodeIgniter >  آموزش نکات در کدایگنیتر

## joker

با سلام خدمت دوستان PHP کار و اللخصوص کسانی که با CodeIgniter نیت کردند کار کنند
نیازی به توضیح در مورد خصوصیات جالب این فریمورک نیست ، احتمالا مقالات زیادی در مورد مقایسه و کاربردها و خصوصیات فریمورکهای php  خوندید... از اونجایی که این فریمورک خیلی دستمون توش باز بود به عنوان پلت فرم کاری شرکت انتخابش کردیم و شروع کردیم روش کار کردن و در این مدت نکات ریز و درشت! زیادی یاد گرفتیم که در این تاپیک قصد دارم به مرور نکات را در اختیار دوستان قرار بدم
مقدمه اولیه :
برای دانلود فایل پی دی اف آموزشی کار با کد ایگنیتر هم میتونید از لینک زیر استفاده کنید
http://www.alt.ir/learning/CodeIgniter-Farsi.pdf

برای دانلود فایل آموزشی به زبان انگلیسی نسخه کامل که آموزش موارد پیشرفته این فریمورک  ( افزون بر راهنمای فارسی ) را هم شامل میشه میتونید از لینک مستقیم زیر استفاده کنید
http://www.alt.ir/learning/codeigniter-English.pdf
( توجه کنید که تک و توکی از دستورات در نسخه جدید کمی کوتاهتر شدند نسخه فعلی 2.1.4 میباشد موقع نوشتن این مطلب. که در مطالب عملی بعدی بهشون اشاره میکنم


خب پس از دانلود و نصب کد ایگنیتر احتمالا خیلی ها به این فکر میفتند که با دیتابیس MSSQL و IIS کار کنند  ( به جای استفاده از WAMP و MySQL)

فرض را بر این میزارم که بلدید CGI PHP را در IIS  ویندوز نصب کنید ( راهنماهای نصب و راه اندازی php به صورت تصویری در گوگل فراوان است )

خب این اولین مشکلی بود که ما بهش برخوردیم اون هم عدم ارتباط با دیتابیس MSSQL2012 بود

 البته نه به خاطر این فریمورک بلکه به خاطر عدم ساپورت شرکت میکروسافت از آخرین ورژن php که منتشر شده... پس از کلی بدبختی کشیدن متوجه شدیم که بعععععله ، میکروسافت تا *ورژن 5.4.27*  پی اچ پی بیشتر برای ارتباط با پایگاه داده MSSQL 2012 چیزی منتشر نکرده

پس به اجبار ما در تاریخ نگارش این مطلب مجبوریم از آخرین ورژن سازگار یعنی 5.4.27 استفاده میکنیم – برای دانلود این نسخه میتونید از خود سایت php استفاده کنید.
نکته بعدی نصب فایلهای مورد نیاز روی سرور ویندوزی هست که بتونه ارتباط php را با mssql برقرار کنه

من برای اینکه دردسر نداشته باشید که ویندوز جنیون کنید ! و فایلهای میکروسافت را از سایتش دانلود کنید لینک مستقیم مواد لازم را اینجا قرار میدم
http://www.alt.ir/learning/sqlncli.msi
http://www.alt.ir/learning/php_sqlsrv_54_ts.dll
http://www.alt.ir/learning/php_sqlsrv_54_nts.dll
من از نسخه Thread Safe پی اچ پی استفاده میکنم و فایلهای dll مربوطه که باید در فولدر اکستنشن php کپی کنید را از این لینک دانلود کنید
و در فایل php.ini  اون را به شکل زیر معرفی کنید
extension=php_sqlsrv_54_ts.dll

فایل php که من براتون میزارم هم کافیه مسیرهای نصب php را توی اون به مسیر فولدری که php خودتون را نصب کنید تغییر بدید
http://www.alt.ir/learning/php.ini.txt
توجه کنید که بعد از نصب نیاز دارید که IIS را با سطح دسترسی administrator ریست کنید برای این کار هم کافیه CMD را با Run as Administrator اجرا کنید و در اون بنویسیدIISRESET 

خب پس ازکپی فایل dll در شاخه php\*ext*  یکبار php-cgi.exe را که در فولدر php هست را اجرا کنید بدون خطا باید اجرا بشه و یک صفحه مشکی خالی بهتون نشون بده.
توجه کنید در بعضی از ویندوزها ممکنه به نبود یک فایل dll گیر بده که با سرچ نام این فایل در اینترنت میتونید دانلودش کنید و در فولدر ویندزتون کپیش کنید ( نکات مزخرف ولی دهن سرویس کن)

در هر حال وقتی ارور نداد – فایل dll فوق کپی شد – و sqlncli.msi را که در بالا معرفی شد را نصب کردید یک phpinfo() بگیرید باید درایور SQLSRV در لیست خصوصیات php به شما نمایش داده بشه
البته فایل sqlncli.msi  رانیازی نیست روی سرور ویندوزی که روش MSSQL 2012 نصب شده  ، نصب کنید.


چیزی که باید در خروجی تابع phpinfo() ببنید :

SQLSRV

*sqlsrv support*
*Enabled*




*Directive*
*Local Value*
*Master Value*

*sqlsrv.ClientBufferMaxKBSize*
10240
10240

*sqlsrv.LogSeverity*
0
0

*sqlsrv.LogSubsystems*
0
0

*sqlsrv.WarningsReturnAsErrors*
On
On




خب هم اکنون به جای دستورای MSSQL_CONNECT باید از مجموعه دستورات SQLSRV_xxxxx برای ارتباط با دیتابیس mssql  بدونه مشکل استفاده کنید
یک نمونه کد phpبرای اطمینان از همه چیز !
یوزر و پسورد و نام دیتابیس را هرچیزی روی سیستمتون ساختید ست کنید و تست بگیرید:

<?php
 
$connectionInfo = array( "Database" => "myDatabasename", "UID" => "sa", "PWD" => "123", "CharacterSet" => "UTF-8");
 
            $link = sqlsrv_connect( 'localhost',$connectionInfo);
            if(!$link) {
                        echo'Could not connect';
                        die('Could not connect: ' . sqlsrv_errors() );
            }
            echo'Successful connection';
            sqlsrv_close($link);
?>
 

این مجموعه نکات آموزشی ادامه دارد....

----------


## joker

خب بریم سراغ برقراری ارتباط کدایگنیتر( به قول خارجیا کدایگنایتر)
ابتدا از وجود فولدر
CodeIgniter_2.1.4\system\database\drivers\sqlsrv
مطمئن بشید ( نسخه های قدیمی ممکن است این درایور sqlsrv را نداشته باشند ، پس بهتره به آخرین نسخه ارتقا بدین کدایگنیتر خودتون را)

در فایلی که خود سایت کدایگنیتر یک غلط کوچولو هست که وقتی وارد کار میشید وارنینگش را مشاهده میکنید ، مطمئنم خودشون یکبار هم این کدشون را تست نکردند :4: )

خب اولین کار اینه که در مسیر CodeIgniter_2.1.4\application\config  فایل database.php را ویرایش کند و تنظیمات را به شکل زیر انجام بدین


$active_group = 'default';$active_record = TRUE;
$db['default']['hostname'] = 'localhost';$db['default']['username'] = 'sa';$db['default']['password'] = '123';$db['default']['database'] = 'mydatabase';$db['default']['dbdriver'] = 'sqlsrv';$db['default']['dbprefix'] = '';$db['default']['pconnect'] = FALSE;$db['default']['db_debug'] = TRUE;$db['default']['cache_on'] = FALSE;$db['default']['cachedir'] = '';$db['default']['char_set'] = 'utf8';$db['default']['dbcollat'] = 'utf8_general_ci';$db['default']['swap_pre'] = '';$db['default']['autoinit'] = TRUE;$db['default']['stricton'] = FALSE;

توجه داشته باشید که pconnect را حتما False کنید و الی با خطا مواجه میشید
dbdriver را هم برابر با sqlsrv قرار بدین


سپس در فایل autoload.php  هم دیتابیس را اضافه کنید که بتونید در هرجای پروژه دسترسی به پایگاه داده را به راحتی داشته باشید

$autoload['libraries'] = array('database');


حالا برای امتحان از صحت کارکرد میتونید فایل  welcome.php رد شاخه کنترلر را باز کنید و در ایندکس اون  کد زیر را اضافه کنید

public function index()    {  
  $query = $this->db->get('MyTableName');    foreach ($query->result() as $row) {            echo $row->MyFieldname .' <BR>';    }
            $this->load->view('welcome_message');    }

باید با مشاده صفحه دیفالت کدایگنیتر ، محتویات ثبت شده در دیتابیستون را بر اساس نام فیلدی که مشخص کردید بهتون نمایش بده

هم اکنون ارتباط کدایگنیتر شما با دیتابیس mssql برقرار میباشد.

----------


## elnaz_mrt

با سلام و خسته نباشید

بد نیست یک نکته دیگه رو هم که من بهش برخوردم اضافه کنم.

ممکنه زمانی که در حال انجام تنظیمات database در کدایگنایتر هستید، بخواید در 'dbdriver => 'sqlsrv رو تنظیم کنید ولی زمانی که این کار رو انجام می دین یک صفحه خالی واستون باز کنه و برنامه رو اجرا نکنه.

این مشکل نیاز به یک تغییر کوچیک در فایل sqlsrv_driver.php در مسیر  system/database/drivers/sqlsrv داره...

توی این فایل: function db_pconnect()  تابع مذکور رو سرچ کنین و یک کلمه return قبل از (this->db_connect(TRUE$ قرار بدین تا مشکل به خوبی و خوشی حل بشه... :لبخند:

----------


## joker

یعنی علاوه بر اینی که نوشتم در فایل کانفیگ اعمال کنید :



> توجه داشته باشید که pconnect را حتما False کنید و الی با خطا مواجه میشید


باز هم نیاز به این تغییر در فایل sqlsrv_driver هست ؟

----------

