Я получаю пустое место в текстовой области при каждом обновлении - PullRequest
1 голос
/ 24 апреля 2011
<textarea name="email_message" id="email_message" cols="65" rows="15"><?php echo trim($entry['message']);?></textarea>

Когда я обновляюсь с помощью HTML-кода, приведенного выше, он дважды создает пустую строку, которая содержится в сообщении.

Например:

Dear Sir
(here is one now now)
How are you?

при обновлении базы данных сохраняется как:

Dear Sir
(here is two lines)

How are you?

Увеличивает пустую строку при каждом сохранении.

PHP-код здесь:

function email_template_save()
    {
        $content = $this->input->post('email_message');
        $this->load->model('templates');
        $data['msg']=$this->templates->update_email_template($content,$this->session->userdata('username'));
        $data['main_content']='message';
        $this->load->view('template',$data);

    }


function update_email_template($content,$username)
    {
        $data=array(
            'message'=>$this->input->post('email_message'));
            $this->db->where('username', $username);
            $this->db->update('email_format', $data); 
            return 'Successfully Updated';


    }

Ответы [ 3 ]

2 голосов
/ 25 апреля 2011

Я знаю все об этом, это проблема с последним выпуском CI и новых строк Windows.

Смотрите этот ответ: PHP textarea сохраняет дополнительные новые строки в БД MySQL

Это обходной путь, который я использую, расширение входного класса:

<?php defined('BASEPATH') OR exit('No direct script access.');

/**
 * CI 2.0 (Reactor version) did something funny to newlines.
 * Textareas would $_POST an extra newline, this is a patch for that "feature".
 * 
 * @package     Codeigniter
 * @subpackage  Input
 */
class MY_Input extends CI_Input {

    public function __construct()
    {
        if (PHP_EOL == "\r\n")
        {
            $this->_standardize_newlines = FALSE;
        }
        parent::__construct();
    }
}
/* end file */

Это относится и к вашему другому вопросу: ошибка разнесения \ r \ n и \ n вWindows и Linux-сервер

См. здесь объяснение: Когда я использую PHP-константу "PHP_EOL"?

0 голосов
/ 24 апреля 2011

Возможно, вы экранировали значения дважды, у меня недавно была та же проблема, проверьте, экранируете ли вы значение при получении сообщения и при сохранении данных.

0 голосов
/ 24 апреля 2011

Возможно ли, чтобы заготовки были представлены как \r\n, а когда вы печатаете их, \r и \n разделяются?Попробуйте запустить <textarea name="email_message" id="email_message" cols="65" rows="15"><?php echo trim(str_replace("\r\n","\n",$entry['message']));?></textarea>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...