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á
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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á
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á.
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 =)