Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Guardas ñ y tildes en phpmyadmin

Estas en el tema de Guardas ñ y tildes en phpmyadmin en el foro de PHP en Foros del Web. Hola! Llevo unos dias leyendo informacion de toda clase y a pesar de seguir miles de tutoriales todavia no he conseguido lo que necesito. He ...
  #1 (permalink)  
Antiguo 26/04/2013, 07:36
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Guardas ñ y tildes en phpmyadmin

Hola!

Llevo unos dias leyendo informacion de toda clase y a pesar de seguir miles de tutoriales todavia no he conseguido lo que necesito.

He creado una aplicacion web (muy simple) en php y mysql. De momento la tengo en local con xampp.

en el archivo de instalacion en php creo la base de datos y las tablas

Código PHP:
mysql_query ("CREATE DATABASE caminos");
mysql_query (
CREATE TABLE camino (
        
idcamino int(255auto_increment primary key not null,
        
fecha varchar (40),
        
funcion varchar(200),
        
programa varchar(200),
        
versionprograma varchar(40),
        
sistemaop varchar(40),
        
observaciones varchar (255),
        
cmd1 varchar(12),
        
cmd2 varchar(12),
        
cmd3 varchar(12),
        
cmd4 varchar(12),
        
cmd5 varchar(12),
        
tecla1 varchar(12),
        
tecla2 varchar(12),
        
tecla3 varchar(12)
        )
") 
En mi documento instalacion.php el charset es UTF-8

la base de datos he probado con varios cotejamientos entre ellos UTF8_spanish_ci y UTF8_general_ci.

Y cuando tengo instalada la aplicacion e inserto datos en la base de datos, en la pagina web se ven bien, pero al mirarlos por localhost/phpmyadmin en la base de datos no se ha guardado ni las ñ ni los acentos. En vez de ñ se guarda un caracter raro.

Tengo que cambiar el cotejamiento a la tabla? a la Base de datos? al formulario de entrada?

Un saludo y gracias!
__________________
Tecnología y tutoriales
  #2 (permalink)  
Antiguo 26/04/2013, 07:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Guardas ñ y tildes en phpmyadmin

MySQL guarda lo que recibe. Si lo guarda mal es porque le está llegando mal. Eso habitualmente se resuelve en la programación.
Muevo al foro de PHP, donde conocen buenas soluciones.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 26/04/2013, 08:33
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Guardas ñ y tildes en phpmyadmin

Gracias gnzsoloyo.

Si alguien sabe alguna solucion esto... Sigo buscando ;)
__________________
Tecnología y tutoriales
  #4 (permalink)  
Antiguo 26/04/2013, 08:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Guardas ñ y tildes en phpmyadmin

¿Probaste usar el buscador en este foro PHP?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 26/04/2013, 10:03
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Guardas ñ y tildes en phpmyadmin

Cita:
Iniciado por gnzsoloyo Ver Mensaje
¿Probaste usar el buscador en este foro PHP?
Habré leido como unos 30 hilos con temas parecidos.... aparte de un sinfin de articulos en otros blogs, y aun asi no me entero..... En especial he leido un hilo con un tal jurena, que es el que mas a fondo lo explica, pero de verdad que sigo sin entenderlo
Es de esas cosas que se me ha atravesado y no se ya por donde salir....
__________________
Tecnología y tutoriales
  #6 (permalink)  
Antiguo 26/04/2013, 10:42
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Guardas ñ y tildes en phpmyadmin

De todas formas quiero aclarar que las eñes y las tildes salen bien por pantalla...
El caso es que dentro de la base de datos no está guardada como ñ, se guarda como esto: ñ
Lo que quiero es que en la base de datos esté tambien las eñes y las tildes, y que si yo me meto por phpmyadmin pueda ver texto normal.
__________________
Tecnología y tutoriales
  #7 (permalink)  
Antiguo 26/04/2013, 10:44
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Guardas ñ y tildes en phpmyadmin

Postea cómo es el código donde construyes el INSERT.
Es posible que allí te esté faltando algo... y sin ver el codigo que usas para eso, es imposible saberlo.

Otra cosa es que hay que revisar en el servidor cuál es el valor de estas variables:
Cita:
- character_set_server
- collation_server .
- character_set_database
- collation_database
Porque esas tienen impacto en la transferencia de los datos entre el servidor y las aplicaciones.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 26/04/2013 a las 11:03
  #8 (permalink)  
Antiguo 26/04/2013, 11:07
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 9 meses
Puntos: 181
Respuesta: Guardas ñ y tildes en phpmyadmin

Ademas del cotejamiento de la base de datos como utf-8 yo suelo reeemplazar las letras acentuadas por sus entidades html, eso lo puedes hacer con un simple str_replace:

ñ=ñ
á=á


Obviamente en la base de datos se vera la entidad html y aunque no salga como ñ sino como &ntilde no va a tener problemas para ser entendido por los navegadores. Igual si quieres que tanto en la base de datos como en la pagina se vea ñ pues muestranos el codigo y te pronto se puede colaborar y mirar que puede estar ocurriendo.
__________________
Blog de humor http://elcuasatar.net63.net/
  #9 (permalink)  
Antiguo 26/04/2013, 14:09
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Guardas ñ y tildes en phpmyadmin

Gracias a ambos por contestar

El codigo del php que inserta los datos es el siguiente:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF8" />
<title>Documento sin título</title>
</head>

<body>

<?php
$funcion 
=$_POST['funcion'];
$programa =$_POST['programa'];
$version =$_POST['version'];
$so =$_POST['so'];
$observaciones =$_POST['observaciones'];


$cmd1 =$_POST['cmd1'];
$cmd2 =$_POST['cmd2'];
$cmd3 =$_POST['cmd3'];
$cmd4 =$_POST['cmd4'];
$cmd5 =$_POST['cmd5'];

$tecla1 =$_POST['tecla1'];
$tecla2 =$_POST['tecla2'];
$tecla3 =$_POST['tecla3'];

$anio date('Y');
$mes date('m');
$dia date('d');
$hora date('H');
$minuto date('i');

$fecha date('YmdHis');


//conexion
$conexionmysql_connect (localhost,root,password);
if(!
$conexion) die ("No se ha podido conectar. ".mysql_error()."<br>");

//Seleccionar base de datos
mysql_select_db("caminos",$conexion);

//Insertar contenido de prueba

mysql_query ("INSERT INTO atajo (fecha, funcion,programa,versionprograma,sistemaop, observaciones, cmd1,cmd2,cmd3,cmd4,cmd5,tecla1, tecla2, tecla3) VALUES     ('".$fecha."','".$funcion."','".$programa."','".$version."','".$so."','".$observaciones."','".$cmd1."','".$cmd2."','".$cmd3."','".$cmd4."','".$cmd5."','".$tecla1."','".$tecla2."','".$tecla3."')");

echo 
"
<html>
<head>
    <meta http-equiv='REFRESH' content=0;index3.php>
</head>
</html>
"
;



?>
</body>
</html>
Por otro lado la informacion que me pide gnzsoloyo y que he encontrado es la siguiente:
Conjunto de caracteres del servidor: UTF-8 Unicode (utf8)
Cotejamiento de la base de datos :utf8_general_ci (Aunque tambien probé utf8_spanish_ci)

El resto de datos que pides no los he encontrado.

Yo por todo lo que he leido esta bien... pero aun asi, sigue guardando los caracteres raros...
__________________
Tecnología y tutoriales
  #10 (permalink)  
Antiguo 26/04/2013, 14:38
 
Fecha de Ingreso: marzo-2013
Ubicación: Neuquén Capital
Mensajes: 111
Antigüedad: 11 años, 1 mes
Puntos: 8
Respuesta: Guardas ñ y tildes en phpmyadmin

Cita:
Iniciado por dryant Ver Mensaje
Gracias a ambos por contestar

El codigo del php que inserta los datos es el siguiente:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF8" />
<title>Documento sin título</title>
</head>

<body>

<?php
$funcion 
=$_POST['funcion'];
$programa =$_POST['programa'];
$version =$_POST['version'];
$so =$_POST['so'];
$observaciones =$_POST['observaciones'];


$cmd1 =$_POST['cmd1'];
$cmd2 =$_POST['cmd2'];
$cmd3 =$_POST['cmd3'];
$cmd4 =$_POST['cmd4'];
$cmd5 =$_POST['cmd5'];

$tecla1 =$_POST['tecla1'];
$tecla2 =$_POST['tecla2'];
$tecla3 =$_POST['tecla3'];

$anio date('Y');
$mes date('m');
$dia date('d');
$hora date('H');
$minuto date('i');

$fecha date('YmdHis');


//conexion
$conexionmysql_connect (localhost,root,password);
if(!
$conexion) die ("No se ha podido conectar. ".mysql_error()."<br>");

//Seleccionar base de datos
mysql_select_db("caminos",$conexion);

//Insertar contenido de prueba

mysql_query ("INSERT INTO atajo (fecha, funcion,programa,versionprograma,sistemaop, observaciones, cmd1,cmd2,cmd3,cmd4,cmd5,tecla1, tecla2, tecla3) VALUES     ('".$fecha."','".$funcion."','".$programa."','".$version."','".$so."','".$observaciones."','".$cmd1."','".$cmd2."','".$cmd3."','".$cmd4."','".$cmd5."','".$tecla1."','".$tecla2."','".$tecla3."')");

echo 
"
<html>
<head>
    <meta http-equiv='REFRESH' content=0;index3.php>
</head>
</html>
"
;



?>
</body>
</html>
Por otro lado la informacion que me pide gnzsoloyo y que he encontrado es la siguiente:
Conjunto de caracteres del servidor: UTF-8 Unicode (utf8)
Cotejamiento de la base de datos :utf8_general_ci (Aunque tambien probé utf8_spanish_ci)

El resto de datos que pides no los he encontrado.

Yo por todo lo que he leido esta bien... pero aun asi, sigue guardando los caracteres raros...
Con poner esto despues de tu conexión andaria bien!

mysql_query("SET NAMES 'utf8'");

Código PHP:
Ver original
  1. //Insertar contenido de prueba
  2.  
  3. mysql_query("SET NAMES 'utf8'");
  4.  
  5. mysql_query ("INSERT INTO atajo (fecha,...);

Deberías poner:
BASE DE DATOS Cotejamiento:
utf8_spanish_ci

TABLA Cotejamiento:
utf8_unicode_ci

COLUMNAS Cotejamiento:
utf8_spanish_ci
Probá y avisa! :)
  #11 (permalink)  
Antiguo 26/04/2013, 14:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Guardas ñ y tildes en phpmyadmin

La configuración del servidor podría estar bien, pero no veo que estés procesando el contenido de las variables para mandarlo bien.
Deberías usar el utf8_encoding() al menos.
El problema puede estar generandose en el pasaje desde lo que ves, a lo que envías, y con sólo una fase donde no se los esté convirtiendo correctamente, alcanza.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 26/04/2013, 15:07
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Guardas ñ y tildes en phpmyadmin

Cita:
Con poner esto despues de tu conexión andaria bien!

mysql_query("SET NAMES 'utf8'");
OLEEE!!!!!!!!!!!

Ha funcionado con eso a la perfeccion!!!!!!! MUCHISIMAS GRACIASSSSS!!!!

Cita:
Deberías poner:
BASE DE DATOS Cotejamiento:
utf8_spanish_ci

TABLA Cotejamiento:
utf8_unicode_ci

COLUMNAS Cotejamiento:
utf8_spanish_ci
Lo he puesto asi y funciona perfectamente tambien, pero la explicacion de porque hay que poner la tabla diferente de las otras dos cual es?

gnzsoloyo:

Cita:
Deberías usar el utf8_encoding() al menos.
Eso lo habia probado ya, pero tampoco me funcionó.


Gnzsoloyo: empiezas a ser mi mejor profesor :) En casi todos los mensajes que escribo apareces ;)

Muchisimas gracias a todos por vuestra ayuda!
__________________
Tecnología y tutoriales
  #13 (permalink)  
Antiguo 26/04/2013, 15:25
 
Fecha de Ingreso: marzo-2013
Ubicación: Neuquén Capital
Mensajes: 111
Antigüedad: 11 años, 1 mes
Puntos: 8
Respuesta: Guardas ñ y tildes en phpmyadmin

Me alegro que te haya servido! :) A mí utilizar ese método en la función que utilizo para conectar me solucionó TODOS los problemas! :D



Sathya Sanlés

Etiquetas: mysql, phpmyadmin, sql, tabla, tildes
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:57.