0

It seams I can't get the table from my custom database.

My module should list all data from the database frontend(and backend later) But I get this error

a:5:{i:0;s:93:"SQLSTATE[42S02]: Base table or view not found: 1146 Table 'ifp.mage_emailorder' doesn't exist";i:1;s:4318:"#0 /var/www/ifp.dk/public_html/lib/Varien/Db/Statement/Pdo/Mysql.php(110): Zend_Db_Statement_Pdo->_execute(Array)

What I can read on the net. Eather its the database setup, or the block I use to call it out.

Database setup

app/code/local/Puk/EmailOrder/sql/emailorder_setup/mysql-install-0.1.0.php

<?php
$installer = $this;
$installer->startSetup();
$sql=<<<SQLTEXT
create table emailorder(
 emailorder_id int not null auto_increment, 
 order_date varchar(255) not null,
 product_name varchar(255) not null,
 location varchar(255) not null,
 date_for varchar(255) not null,
 name_title varchar(100) not null,
 email varchar(255) not null,
 company varchar(255) not null,
 adress varchar(255) not null,
 zipcode varchar(255) not null,
 city varchar(255) not null,
 phone varchar(255) not null,
 comment text not null,
 order_done int not null default 0,
 primary key(emailorder_id)
);
SQLTEXT;
$installer->run($sql);
//demo 
//Mage::getModel('core/url_rewrite')->setId(null);
//demo 
$installer->endSetup();

The block

app/code/local/EmailOrder/Block/Monblock.php

<?php
class Puk_EmailOrder_Block_Monblock extends Mage_Core_Block_Template
{
 public function methodblock()
 {
 $retour='';
 $collection = Mage::getModel('emailorder/emailorder')->getCollection()
 ->setOrder('emailorder_id','asc');
 foreach($collection as $data)
 {
 $retour .= $data->getData('product_name').' '.$data->getData('location')
 .' '.$data->getData('date_for').'<br />';
 }
 Mage::getSingleton('adminhtml/session')->addSuccess('YES!');
 return $retour;
 }
}

Can someone help? :)

Piyush
5,9249 gold badges35 silver badges67 bronze badges
asked Feb 1, 2016 at 11:35
2
  • Please update the contents of your config.xml file in question. Can you see the table created in DB directly ? Commented Feb 1, 2016 at 11:56
  • The config.xml file says "emailorder" and in the db it is also "emailorder" Commented Feb 1, 2016 at 12:16

1 Answer 1

1

You have table prefixes setup in your Magento installation and you created table with SQL as emailorder. When you are calling code Mage::getModel('emailorder/emailorder'), Magento is searching for the table named 'mage_emailorder' because of the prefixes.

Drop your table and re-run the code for setup either via Magento way, or add the prefix so that table name becomes mage_emailorder in your SQL query. As a dirty work-around, you can directly modify the table in DB, just rename it to mage_emailorder.

answered Feb 1, 2016 at 12:31
2
  • Nice! now i dont get the error. But it still dont write the data from the database. Can you tell me why?? Commented Feb 1, 2016 at 12:39
  • Dont bother, it was a typo. :) Commented Feb 1, 2016 at 12:46

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.