# زبان های اسکریپتی > PHP > Zend Framework >  ست كردن ديتابيس در application.ini

## UnnamE

سلام رفقا
يه سوال داشتم كه از مشكل ام سرچشمه ميگيره
من واسه اينكه تنظيمات اتصال به ديتابيس رو توي فايل application.ini ست كنم به اين روش عمل كردم

[production]
resources.db.adapter = "pdo_mysql"
resources.db.params.host = "127.0.0.1"
resources.db.params.username = ""
resources.db.params.password = ""
resources.db.params.dbname = "my_db"
resources.db.isDefaultTableAdapter = true

ديتابيس سرور من user & pass نداره
خب حالا چيزي لازم نيست در جاي ديگه اضاف كنم؟
يعني بدون هيچ هيچ مشكلي ميتونم Query ست كنم و با ديتابيس كار كنم؟
چون تا الان اين كار رو انجام دادم ولي هيچ كويري اجرا نميشه!

مرسي

----------


## HRezaei

نه
از نظر من که کانفیگ دیگه ای لازم نیست.
فقط اینم میتونی اضافه کنی که بعدها به مشکلی برنخوری
resources.db.params.charset="utf8"



> چون تا الان اين كار رو انجام دادم ولي هيچ كويري اجرا نميشه!


باید ایراد از جای دیگه ای باشه.
پیغام خطای خاصی؟ کد اجرای کوئری تون مشکلی نداره؟

----------


## UnnamE

مرسي واسه جواب!
ببين اين مدل من واسه يه جدول هست!
<?php
class Model_Bug extends Zend_Db_Table_Abstract
{
	protected $_name = 'bugs';
	
	public function createBug($name, $email, $date, $url, $description, $priority, $status)
	{
		// create new row in the bugs table
		$row = $this->createRow();
		
		//set the row data
		$row->author = $name;
		$row->email = $email;
		$dateObject = new Zend_Date($date);
		$row->date = $dateObject->get(Zend_Date::TIMESTAMP);
		$row->url = $url;
		$row->description = $description;
		$row->priority = $priority;
		$row->status = $status;
		
		//save the new row
		$row->save();
		
		// now fetch the id of the row you just created  and return it
		$id = $this->_db->lastInsertId();
		return $id;
	}
و اين هم كنترل من واسه ذخيره:
<?php

class BugController extends Zend_Controller_Action
{

    public function submitAction ()
    {
        $bugReportForm = new Form_BugReportForm();
        $bugReportForm->setAction('/bug/submit');
        $bugReportForm->setMethod('post');
        if ($this->getRequest()->isPost()) {
            if ($bugReportForm->isValid($_POST)) {
                $bugModel = new Model_Bug();
                // if the form is valid then create the new bug
                $result = $bugModel->createBug(
                	$bugReportForm->getValue('author'), 
                	$bugReportForm->getValue('email'), 
                	$bugReportForm->getValue('date'), 
                	$bugReportForm->getValue('url'), 
                	$bugReportForm->getValue('description'), 
                	$bugReportForm->getValue('priority'), 
                	$bugReportForm->getValue('status'));
                // if the createBug method returns a result 
                // then the bug was successfully created
                if ($result) {
                    $this->_forward('confirm');
                }
            }
        }
        $this->view->form = $bugReportForm;
    }
خب بعد از اجرا شدن كنترلر submit در آخر باس از شرط بگذره كه اگه موفقيت آميز بود به كنترل *confirm* منتقل ميشه!
ولي در صورتي كه اين اتفاق نميفته و همچنان در كنترلر submit ميمونم يعني result$ موفقيت آميز نبوده!!

اصلا من درست استفاده كردم ؟
كلا وقتي تنظيمات ديتابيس رو توي application.ini ست ميكنيم به چه شكل باس استفاده كرد؟
مرسي

----------


## HRezaei

در مورد مشکل فعلیتون جواب قطعی ای ندارم. بهتره خط به خط اجرای برنامتون رو کنترل و دیباگ کنید ببینید دقیقا کجا لنگ میزنه.
اما به نظر میرسه ساختار توصیه شده ی ZF  در مورد پروژه های MVC رو رعایت نمی کنید. حالا که به انگلیسی هم علاقه دارید این لینک رو ببینید و صفحات بعدیش رو هم به ترتیب دنبال کنید:
http://framework.zend.com/manual/en/...e-project.html
اینم سمپل زند استودیو هستش که همون تئوری ها رو پیاده کرده:
example.rar
البته با mysql کار نکرده اما چندان فرقی نمی کنه.
موفق باشید

----------


## UnnamE

مرسي واسه لينك ها!
در مورد Example هم تا حالا با زند با SQLite كار نكرده بودم
جالبه!!

----------


## HRezaei

خط
$id = $this->_db->lastInsertId();
رو با این
$id = $this->getAdapter()->lastInsertId()
عوض کن. کد شما هربار id=0 رو برمی گردونه

----------


## UnnamE

واي چه جالب و خفن
همين حالا همزمان با جوابت من هم جواب رو فهمديم 
حدس ميزدم بايد مشكل از كتاب باشه
اين صفحه رو نگاه كن
http://apress.com/book/errata/1130
زير فرم ايراد هفتم به همين اشاره كرده!!!
مرسي زياد!

----------

