PHP - problemas tildes a la hora de guardar registros en mysql

 
Vista:

problemas tildes a la hora de guardar registros en mysql

Publicado por carlos (2 intervenciones) el 03/10/2017 16:54:05
Buenas

Tengo un problema a la hora de guardar registros en la base de datos mysql desde mi web, y es que se guardan con símbolos extraños donde deberían haber acentos, y me estoy volviendo loco:

Por un lado tengo el formulario de introducción de datos, que es un doc con extension php con codificacion UTF-8 y donde tengo como inicio de página:

1
2
3
4
5
6
7
8
9
<!DOCTYPE html>
 
<html lang="es">
 
<head>
	<meta charset="UTF-8">
	<link rel="stylesheet" type="text/css" href="css/base.css">
	<link href="https://fonts.googleapis.com/css?family=Montserrat" rel="stylesheet">
</head>

y aquí el formulario

1
2
3
4
5
<form action='php/gescar_subirdocumentacion.php?tipodoc=coche' method='POST' enctype='multipart/form-data'><strong>Subir nuevo archivo</strong><br>";
	"Descripción: <input type='text' name='descripcion' required />
	<input type='file' name='archivo' required />
        <input type='submit' />
</form>

la pagina donde recojo los datos (php/gescar_subirdocumentacion.php) es una pagina tambien codificada UTF-8, extension php, donde no tiene nada de html, solo php donde recojo las variables:

1
2
$tipodoc=$_GET['tipodoc'];
$descripcion=$_POST['descripcion'];

hago echo de todo y todo es correcto, se ven los acentos perfectamente...ahí tenemos la INSERT:

1
2
$sql = "insert into $tabla ($campos) values ($id, '$descripcion')";
$querynuevodocumento = $con->query($sql);

donde hago un echo de $sql y la consulta es correcta, salen los acentos correctamente ( si la copio y la pego en el gestor de SQL de mysql, el insert funciona a la perfección) pero cuando vas a la tabla, en los registros los acentos no se ven, son símbolos raros (marqués es vez de marqués)...la BD esta en uft8_unicode _ci, la tabla está en uft8_unicode _ci y el campo descripcion que es donde me salen los errores esta en uft8_spanish_ci

Las tablas las había importado de MS Access y por si acaso he creado de 0 una nueva tabla llamada igual a ver si es por algún error de la importación, pero sigue pasando lo mismo

¿Se le ocurre algo a alguien?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de facundo

problemas tildes a la hora de guardar registros en mysql

Publicado por facundo (185 intervenciones) el 03/10/2017 20:26:59
Tenes que setear el charset en utf-8 desde donde haces la coneccion a la base de datos..

Mostrame el archivo o el codigo de conexion y te digo como hacerlo, si no queres esperar buscá en google "como cambiar charset coneccion mysql" o "mysql php set charset utf 8"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 729
Bronce
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

problemas tildes a la hora de guardar registros en mysql

Publicado por Gonzalo (615 intervenciones) el 03/10/2017 20:44:03
tambien revisa el editor que usas para programar en php, si no esta configurado a utf-8 igual va a mostrar caracteres raros aunque tengas seteado el utf-8.

salu2

porque gastar tantos millones de dolares en la colonizacion de marte ... si la luna esta mas cerca?

marte es apenas mas grande que la luna.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problemas tildes a la hora de guardar registros en mysql

Publicado por Carlos (2 intervenciones) el 04/10/2017 11:46:39
Muchas gracias a los dos, ya lo he solucionado gracias a Facundo

El editor lo tenia correcto en UTF8, al final era el charset

He buscado en Google y he hecho un echo del charset:

Utilizando un charset, por defecto, de tipo: latin1

Por lo que he añadido en una linea en mi conexion:

1
2
3
4
5
6
7
8
<?php
$host="localhost";
$user="root";
$password="";
$db="bdtidam";
$con = new mysqli($host,$user,$password,$db);
$con->set_charset('utf8');
?>

y solucionado....la verdad es que no se si es porque el gestor de BD es el easyphp sobre Windows, pero nunca había tenido que realizar nada sobre el charset, por eso me estaba volviendo loco

Vuelvo a reiterar, gracias a los dos por vuestra ayuda¡¡¡

Saludos¡¡¡
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problemas tildes a la hora de guardar registros en mysql

Publicado por Enzo Moran (1 intervención) el 23/08/2020 18:23:24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$server = "localhost";
$user   = "root";
$pass   = "clave";
$dba    = "base_datos";
 
$link = mysqli_connect($server,$user,$pass);
$link->set_charset("utf8");
 
if (mysqli_connect_errno()){
     echo "connection error";
     exit();
}
 
$conn = mysqli_select_db ($link,$dba);
if (!$conn){
    echo "error de bd";
}


Gracias Carlos, funciono a la perfeccion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar