TIP: Use Markdown or, <pre> for multi line code blocks / <code> for inline code.
These forums are read-only and for archival purposes only!
Please join our new forums at discourse.kohanaframework.org
БД....пустые ячейки
  • Всем привет! В общем сложилась у меня такая ситуация. Я получаю данные с формы в контроллер, передаю их в модель а та в свою очередь отправляет данные в БД, но проблема вот в чем, ячейки для данных в таблице создаются но они пустые. Уточняю если заполнять форму на русском языке то поля в таблице БД куда должны были записаться данные остаются пустым, если же заполнять форму на английском то приходит только один символ(первый). В чем может быть проблема? Использую модуль ORM для работы с базой.

    Код Контроллера:

    public function action_addNews() { if(isset($_POST['submit'])){

            $news = Arr::extract($_POST, array('name', 
                                               'author',
                                               'date', 
                                               'category', 
                                               'preview', 
                                               'link', 
                                               'nofollow-source', 
                                               'nofollow-news', 
                                               'text'
                                               ));
            Model::factory('articles')->addArticle($news['name'], 
                                                   $news['author'], 
                                                   $news['date'],
                                                   $news['category'], 
                                                   $news['preview'],
                                                   $news['link'], 
                                                   $news['nofollow-source'],
                                                   $news['nofollow-news'], 
                                                   $news['text']
                                                  );
            $this->action_add();                                          
        }else{
            $this->action_err();
        }
    
    }
    

    Код Модели:

    <?php defined('SYSPATH') or die('No direct script access.');

    class Model_Articles extends ORM{

    protected $_table_name = 'articles';
    
    public function addArticle($news)
    {
        ORM::factory($this->_table_name)
            ->set('news_name', $news['name'])
            ->set('news_text', $news['text'])
            ->save();
    }
    

    } Всем спасибо!

  • @vitya325, логика несколько не верная, даже совсем не верная на мой взгляд. Посмотри примеры работ из мануала.

    При переносе на Линукс у тебя код гарантированно не заработает.

    Помимо этого покажи структуру таблицы.

  • @Ramallah, подскажи какая же должна быть логика? Сделай хоть набросок как оно должно быть? Укажи где я ошибаюсь.

  • Хотя бы так, если сохранение перенести в модель. Это только один из доступных методов. Можно не через set, а values. Все дело завернуть в try..catch, что бы отлавливать ошибки и написать для модели функцию фильтр, что бы обезопаситься.

    Контроллер:
    
    public function action_addNews(){
     $news = Model::factory('articles')->addArticle($_POST);
    
     if ($news->saved())
         echo 'Записано';
     else
         echo 'Не записано по каким-то причинам';
    
    }
    
    Модель
    
    public function addArticle($post)
    {
        return ORM::factory('articles')
            ->set('news_name', Arr::get($post,'name'))
            ->set('news_text', Arr::get($post,'text'))
            ->save();
    }
    
    
  • @vitya325, судя по всему, при создании таблиц вы не указали длину поля, а потому у вас в таблице в каждом столбце помещается по одному символу (возможно varchar(1) ). Для кодирования одной буквы кирилицы в юникоде используется два байта (грубо говоря - два символа), и именно поэтому у вас может не проходит кирилица, тогда как английские буквы кодируются одним байтом.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

In this Discussion