Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

Suporte geral sobre problemas técnicos para OpenCart v1.x.
#2656
Olá pessoal,

Vou relatar uma dificuldade que estou encontrando no OpenCart Versão 1.4.9.3 no Windows 7.

Após instalar a versão 1.4.9.3 tento fazer o cadastro de clientes, mas toda a palavra que digito que contenha algum tipo de acento ou cedilha, não está sendo gravada corretamente no banco de dados.
Exemplo:
Nome: João
Endereço: Palhoça

O que fica gravado é:
Nome: Jo
Endereço: Palho

Mais informações:
A instalação é feita a partir do OpenCart 1.4.9.3 original sem modificações.
No linux não ocorre este erro.
Já utilizei Wamp, Xampp, EasyPHP e agora por último fiz a instalação do Apache, PHP, MySQL separadamente.
Na versão 1.4.9.1 do opencart não ocorre este erro.

Se alguém tiver alguma dica, eu fico agradecido!!

Abraço!
#2665
Olá lehnhart.

Você está tendo este problema só com a gravação ? Na exibição dos dados com acento na loja está tudo ok ?

Acredito que o problema não está no OpenCart, tive um problema parecido mas em outra aplicação criada por mim, e neste caso a bronca estava com a configuração do PHP, em outro caso era com a codificação do Mysql para criação das tabelas e do banco de dados.

Aguardo retorno.
#2670
Olá Manoel,

Obrigado pela ajuda!

Na exibição também ocorre o erro.

Lá no banco de dados fica gravado sem o acento mesmo (mas o banco aceita acentos quando gravo diretamente nele).

Também acho que o problema não é no OpenCart.

Após fuçar muito aqui e pesquisar em vários fóruns, estou chegando a conclusão de que é alguma coisa relativa ao WampServer que instalei primeiramente acabou dando pau!
Já removi ele como falei no primeiro tópico, mas por algum motivo acabou interferindo nos outros programas de servidor (Xampp, EasyPHP, etc...)

Após fazer muitos procedimentos de instalação de servidores Web estão ocorrendo outros erros bizarros agora!

Vou formatar o PC e refazer tudo. Assim que terminar posto aqui se deu certo ou não.

Abraço!
#2671
Faz um teste antes de formatar (se você ainda não formatou).

Pelo que você me informou provalmente o problema esta no PHP, faça o seguinte:
Procure pelo arquivo php.ini (como você instalou várias versões utilize o pesquisar do windows) e edite este arquivo procurando pela seguinte linha:
;default_charset = "iso-8859-1"
Retire o ponto e vírgula da frente dela e salve o arquivo, reinicie o servidor e teste a loja.
Se não der certo troque o iso-8859-1 por UTF-8 e repita o procedimento anterior.
Provalmente isso resolverá o problema.

Espero ter ajudado e aguardo seu retorno.
#2683
Olá Manoel,

Fiz isto que você falou, mas o problema continua.


Que bruxaria!

Após formatar o PC, instalei Apache 2.2.17, PHP 5.3.5, MySQL 5.5.8

Aparentemente tudo funciona nomalmente, mas o cadastro continua não aceitando acentos.

Após realizar o cadastro, e os nomes saírem cortados (Ex: "Taíse", fica somente "Ta" / "Antônio" fica "Ant")
fui até a página onde o cliente pode editar seu cadastro.

Quando edito as Informações da conta (Nome, sobrenome, e-mail, fax), após salvar, o erro continua.

Quando edito a parte referente aos endereços do cliente (Endereço 1, Endereço 2, CEP, etc.), ele está gravando normalmente os dados, com acento e tudo.

Portanto no banco de dados a tabela "address" fica com as informações com seus devidos acentos (após a edição por parte do cliente) equanto que a tabela "customer" não aceita os acentos.

Mais um detalhe curioso. Quando coloco um nome onde a primeira letra tem acento, ele grava no banco corretamente (Ex: ônibus)

Alguma idéia? To ficando maluco com isso.

Poderia ser uma incopatibilidade do OpenCart com o PHP 5.3.5 que estou usando?
#2684
Na versão 1.4.9.3 o pessoal adicionou a função ucwords() e strtolower() em cada string antes de gravar no banco de dados. O que faz é converter todos os caracteres pra minúsculo e logo em seguida converte cada primeira letra em maiúscula.

Aqui ele gravando o primeiro nome:
$data['firstname'] = ucwords(strtolower(trim($data['firstname'])));

ucwords() e strtolower() pode eliminar letras com acentos.

Se souber programação pode remover esse recurso adicionado no 1.4.9.3
#2687
BINGO!!!!

Problema Resolvido!

Valeu Julio e Manoel !!!

Comentei as linhas referentes a esta codificação no arquivo: \catalog\model\account\customer.php

Ficando assim:

Logo no início (em torno da linha 4):
Código: Selecionar todos
     /*
		$data['firstname'] = ucwords(strtolower(trim($data['firstname'])));
		$data['lastname'] = ucwords(strtolower(trim($data['lastname'])));
		$data['company'] = ucwords(strtolower(trim($data['company'])));
		$data['address_1'] = ucwords(strtolower(trim($data['address_1'])));
		$data['address_2'] = ucwords(strtolower(trim($data['address_2'])));
		$data['city'] = ucwords(strtolower(trim($data['city'])));
		$data['postcode'] = strtoupper(trim($data['postcode']));
     */

Um pouco mais abaixo (em torno da linha 29):
Código: Selecionar todos
     /*
		$data['firstname'] = ucwords(strtolower(trim($data['firstname'])));
		$data['lastname'] = ucwords(strtolower(trim($data['lastname'])));
     */

Abraço!
:D
#2836
Não precisa fazer isso, basta fazer o seguinte:

Em "addCustomer":

$data['firstname'] = mb_convert_case(trim($data['firstname']), MB_CASE_TITLE, "UTF-8");
$data['lastname'] = mb_convert_case(trim($data['lastname']), MB_CASE_TITLE, "UTF-8");
$data['company'] = mb_convert_case(trim($data['company']), MB_CASE_TITLE, "UTF-8");
$data['address_1'] = mb_convert_case(trim($data['address_1']), MB_CASE_TITLE, "UTF-8");
$data['address_2'] = mb_convert_case(trim($data['address_2']), MB_CASE_TITLE, "UTF-8");
$data['city'] = mb_convert_case(trim($data['city']), MB_CASE_TITLE, "UTF-8");
$data['postcode'] = mb_convert_case(trim($data['postcode']), MB_CASE_TITLE, "UTF-8");

Em "editCustomer":
$data['firstname'] = mb_convert_case(trim($data['firstname']), MB_CASE_TITLE, "UTF-8");
$data['lastname'] = mb_convert_case(trim($data['lastname']), MB_CASE_TITLE, "UTF-8");
#4851
Manoel e a todos bom dia.

Estou com a loja de um cliente com um problema similar mais em outro ponto (versão 1.4.9.3). Utilizei todo o material do grupo no que se diz desde a loja em si como os pacotes de tradução, mas quando vou fechar o pedido "index.php?route=checkout/shipping" , toda a página fica com sua acentuação comprometida já revi a tradução e os blocos da página mais sem qualquer tipo de sucesso.
Pode me auxiliar em alguma dica.

Desde já agradeço a atenção de todos.