Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZF]Zapis do bazy -> ucina po polskim znaku
IceManSpy
post
Post #1





Grupa: Zarejestrowani
Postów: 1 006
Pomógł: 111
Dołączył: 23.07.2010
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Mam problem z wrzucaniem danych do bazy. Jeśli ręcznie wrzucę do bazy polskie znaki, to działa bardzo dobrze. Jednak, jeśli chcę wrzucić przez formularz to przy wystąpieniu polskiego znaku reszta jest ucinana.
Moja funkcja w modelu na dodawanie:
  1. public function AddArticle($title, $article){
  2. $row = $this->createRow();
  3. if($row) {
  4. $row->title = $title;
  5. $row->article = $article;
  6. $row->date = date("Y-m-d");
  7. $row->save();
  8. return true;
  9. } else {
  10. throw new Zend_Exception('Nie można utworzyć artykułu. Błąd bazy danych!');
  11. }
  12. }

Kontroler:
  1. public function addAction()
  2. {
  3. $add_article = new Admin_Form_AddArticle();
  4. if($this->_request->isPost() && $add_article->isValid($_POST)) {
  5. $article_model = new Admin_Model_Article();
  6. $title = $add_article->getValue('title');
  7. $article = $add_article->getValue('article');
  8.  
  9. try{
  10. $add = $article_model->AddArticle($title,$article);
  11. }
  12. catch(Exception $ex) {
  13. $this->view->exception = "Błąd dodawania artykułu do bazy danych";
  14. }
  15.  
  16. if($add) {
  17. return $this->_redirect('/admin/article');
  18. }
  19. }
  20. if($add_article->isErrors()) {
  21. $add_article->populate($_POST);
  22. }
  23. $this->view->form = $add_article;
  24. }

Kod formularza chyba nie jest potrzebny?
A w pliku application.ini mam:
Kod
resources.db.adapter = "pdo_mysql"
resources.db.params.host = "localhost"
resources.db.params.username = "root"
resources.db.params.password = "haselko"
resources.db.params.dbname = "zendblog"
resources.db.params.charset = "utf8"
resources.db.isDefaultTableAdapter = true

Próbowałem nawet tak:
  1. public function AddArticle($title, $article){
  2. $db = $this->getDefaultAdapter(); // TUTAJ DOPISEK
  3. $db->query("SET NAMES 'utf8'"); // TUTAJ DOPISEK
  4. $db->query ("SET CHARACTER SET 'utf8'"); // TUTAJ DOPISEK
  5. $row = $this->createRow();
  6. if($row) {
  7. $row->title = $title;
  8. $row->article = $article;
  9. $row->date = date("Y-m-d");
  10. $row->save();
  11. return true;
  12. } else {
  13. throw new Zend_Exception('Nie można utworzyć artykułu. Błąd bazy danych!');
  14. }
  15. }
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
tr!ckle
post
Post #2





Grupa: Zarejestrowani
Postów: 21
Pomógł: 2
Dołączył: 12.05.2009

Ostrzeżenie: (0%)
-----


Jeśli chcesz skorzystać z tego filtra (tj zamienić inputy na małe litery), to możesz napisać własny filtr, albo ręcznie po przechwyceniu inputów zamienić. Ja przy polskich znakach korzystam z funkcji mb_convert_case()

Przykładowe użycie:
Kod
mb_convert_case($string, MB_CASE_LOWER, "UTF-8")


Sprobuj. Powinna zadziałać

Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 07:46