Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Erro de acentuação ao inserir string no banco

Estou tendo um problema com palavras acentuadas enviadas pelo php, porém se eu inserir direto na mão pelo phpmyadmin o banco aceita palavra acentuada, agradeço desde já

7 respostas

Olá, Vinicius.

O seu banco de estar com o encoding latin1 e o php com UTF-8. Talvez esse post da Locaweb de ajude: http://wiki.locaweb.com.br/pt-br/Resolvendo_problemas_de_caracteres_acentuados_no_MySQL

Se não consegui resolver, só falar aqui no Forum que a gente tenta outras coisas :-)

Boa tarde Marco, eu já havia feito as alterações em si do banco e no php como você disse, porém continua dando o erro, e no php ele passa com acento ou ç (quando executado teste)

Olá, Vinicius. Tudo bom?

Verifica pra mim se no seu formulário você está especificando:

<head>
        //conteudo do head
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
 </head>

Então André utilizei o que você informou e não adiantou, já testei tudo o que eu sei.

no caso estou utilizando desta maneira:

<html lang="pt-br">
    <head>
        <meta charset="UTF-8">
        <title>Minha Loja</title>
        <link href="css/bootstrap.css" rel="stylesheet">
        <link href="css/loja.css" rel="stylesheet">
    </head>`

Qual doctype você está utilizando? Me manda tudo desse arquivo do formulário, por favor?

Me manda também a estrutura da sua tabela produtos e sua $query para inserir os dados no banco.

Cabeçalho das páginas

<html lang="pt-br">
    <head>
        <meta charset="UTF-8">
        <title>Minha Loja</title>
        <link href="css/bootstrap.css" rel="stylesheet">
        <link href="css/loja.css" rel="stylesheet">
    </head>
<body>
    <div class="container">
        <div class="principal">

Formulário:

<?php include("cabecalho.php");?>
    <form action="adiciona-produto.php">

        Nome:<input type="text" name="nome"></br>
        Preço:<input type="number" name="preco"></br>
        <input type="submit" value="Cadastrar">

    </form>
<?php include("rodape.php");?>

Adiciona:

<?php include("cabecalho.php");?>
    <?php 
        $nome = $_GET["nome"];
        $preco = $_GET["preco"];

        $conexao = mysqli_connect('localhost','root','','loja');
        $query="insert into produtos (nome, preco) values ('{$nome}',{$preco})";
        if(mysqli_query($conexao, $query)){?>

            <p class="alert-success">Produto <?= $nome; ?>, preço <?= $preco?> adicionado com sucesso!</p>

        <?php }else{ ?>

            <p class="alert-danger">O produto <?= $nome?> não foi adicionado.</p>

            <?php
        }
    ?>
<?php include("rodape.php");?>

todos estão ai, agradeço desde já.

solução!

No seu arquivo cabecalho.php adicione no começo o DOCTYPE do HTML 5 para garantir:

<!DOCTYPE html>

Se não resolver, tente alterar o charset do seu mysqli para utf8 pois pode ter vindo latin1 como padrão (também para garantir):

$conexao = mysqli_connect('localhost','root','','loja');
$mysqli->set_charset("utf8")

Se quiser saber mais sobre o método ->set_charset() você pode dar uma olhada na documentação (disponivel em portugues):

http://php.net/manual/pt_BR/mysqli.set-charset.php

Espero ter ajudado =)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software