ست كردن ديتابيس در application.ini
سلام رفقا
يه سوال داشتم كه از مشكل ام سرچشمه ميگيره
من واسه اينكه تنظيمات اتصال به ديتابيس رو توي فايل 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 ست كنم و با ديتابيس كار كنم؟
چون تا الان اين كار رو انجام دادم ولي هيچ كويري اجرا نميشه!
مرسي
نقل قول: ست كردن ديتابيس در application.ini
نه
از نظر من که کانفیگ دیگه ای لازم نیست.
فقط اینم میتونی اضافه کنی که بعدها به مشکلی برنخوری
resources.db.params.charset="utf8"
نقل قول:
چون تا الان اين كار رو انجام دادم ولي هيچ كويري اجرا نميشه!
باید ایراد از جای دیگه ای باشه.
پیغام خطای خاصی؟ کد اجرای کوئری تون مشکلی نداره؟
نقل قول: ست كردن ديتابيس در application.ini
مرسي واسه جواب!
ببين اين مدل من واسه يه جدول هست!
<?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 ست ميكنيم به چه شكل باس استفاده كرد؟
مرسي
1 ضمیمه
نقل قول: ست كردن ديتابيس در application.ini
در مورد مشکل فعلیتون جواب قطعی ای ندارم. بهتره خط به خط اجرای برنامتون رو کنترل و دیباگ کنید ببینید دقیقا کجا لنگ میزنه.
اما به نظر میرسه ساختار توصیه شده ی ZF در مورد پروژه های MVC رو رعایت نمی کنید. حالا که به انگلیسی هم علاقه دارید این لینک رو ببینید و صفحات بعدیش رو هم به ترتیب دنبال کنید:
http://framework.zend.com/manual/en/...e-project.html
اینم سمپل زند استودیو هستش که همون تئوری ها رو پیاده کرده:
ضمیمه 64801
البته با mysql کار نکرده اما چندان فرقی نمی کنه.
موفق باشید
نقل قول: ست كردن ديتابيس در application.ini
مرسي واسه لينك ها!
در مورد Example هم تا حالا با زند با SQLite كار نكرده بودم
جالبه!!
نقل قول: ست كردن ديتابيس در application.ini
خط
$id = $this->_db->lastInsertId();
رو با این
$id = $this->getAdapter()->lastInsertId()
عوض کن. کد شما هربار id=0 رو برمی گردونه
نقل قول: ست كردن ديتابيس در application.ini
واي چه جالب و خفن
همين حالا همزمان با جوابت من هم جواب رو فهمديم
حدس ميزدم بايد مشكل از كتاب باشه
اين صفحه رو نگاه كن
http://apress.com/book/errata/1130
زير فرم ايراد هفتم به همين اشاره كرده!!!
مرسي زياد!