TinMCE textarea: chyby pri vkladani do DB
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- muflix
- Člen | 92
Dobrý den, snažím se rozchodit TinyMCE což se mi povedlo, ale mám problém při ukládání textarey do databáze (Nette2.0,Dibi,PHP5.3)
latte layout
...
<script type="text/javascript" src="{$basePath}/js/jquery.min.js"></script>
<script type="text/javascript" src="{$basePath}/js/tiny_mce/tiny_mce.js"></script>
...
latte šablona
...
<script type="text/javascript">
tinyMCE.init({
mode: "specific_textareas",
editor_selector: "mceEditor",
/*
entity_encoding : "raw",
entities : "160,nbsp,38,amp,34,quot,162,cent,8364,euro,163,pound,165,yen,169,copy,174,reg,8482,trade,8240,permil,60,62,8804,le,8805,ge,176,deg,8722,minus",
*/
theme : "advanced",
theme_advanced_buttons1 : "newdocument,|,bold,italic,underline,|,justifyleft,justifycenter,justifyright,fontselect,fontsizeselect,formatselect",
theme_advanced_buttons2 : "cut,copy,paste,|,bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,|,code,preview,|,forecolor,backcolor",
theme_advanced_buttons3 : "insertdate,inserttime,|,spellchecker,advhr,,removeformat,|,sub,sup,|,charmap,emotions",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : true
});
</script>
...
v Modelu Novinky.php
public function vlozNovinku($arr)
{
$this->db->query('INSERT INTO [novinky]', $arr);
}
Presenter
protected function createComponentVlozNovinkuForm()
{
$form = new Nette\Application\UI\Form;
$form->addProtection('CSFR ochrana: Vypršel časový limit, odešlete formulář znovu');
$form->addText('perex', 'Perex:');
$form->addTextArea('text', 'Text:')->getControlPrototype()->class('mceEditor');;
$form->addSubmit('vlozit', 'vložit');
$form->getElementPrototype()->onsubmit('tinyMCE.triggerSave()'); //kvuli TinyMce
$form->onSuccess[] = callback($this, 'VlozNovinkuFormSubmitted');
return $form;
}
TinyMce se mi normálně načte, ale po vložení diakritiky, obarvení text
apod (html) mi Dibi vyhodí chybu
exception ‚DibiDriverException‘ with message 'Incorrect string
value: …
při vkládání SQL
SQL: INSERT INTO `novinky` (`perex`, `text`, `id_uzivatele`) VALUES ('zxc', '<p>sda a <span style=\"color: #ff9900;\">ščě šč šč as</span></p>\r\n<p>df</p>', 1)
řekl bych, že v tom SQL dotazu, dělá problém \r\n takže sem upravil továrničku
$this->novinky->vlozNovinku(array(
'perex' => $form->values->perex,
'text' => str_replace("\r\n", "<br />", $form->values->text),
'id_uzivatele' => $this->getUser()->getId()
));
a přidal sem funkci str_replace a to pomohlo, ale jen částečně, protože mi to zase hází chybu při složitějších textech.. např
43
INSERT INTO `novinky` (`perex`, `text`, `id_uzivatele`)
VALUES ('SD65F4', '<p>ŠČŠI ĚŠÍÉÁ ÍÉĚŠ ĚŠÉI Ě<span style=\"color: #0000ff;\">Í
ĚŠÍ</span>ÁRĚŠÉ</p><br /><p>SALŮKD <span style=\"color: #0000ff;\">ASDJ ÁĚŠČ
ĚÁÍÍÁĚČ</span> ÉŠÁ Ȩ́AS</p><br /><p>ASK DJAS ÍŠÍĚ<span style=\"color:
#0000ff;\">Š ÝÁŠŽ ÁĚŽ ÍĚ</span></p>', 1)
Incorrect string value: '\xC4\x8D\xC4\x9B \xC5...' for column 'text' at row 1
prosím kde sem zase co popletl a jak to mohu spravit ? :-)