elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Problema con Acentos en MySQL + PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 4 Ir Abajo Respuesta Imprimir
Autor Tema: Problema con Acentos en MySQL + PHP  (Leído 28,853 veces)
Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Problema con Acentos en MySQL + PHP
« en: 11 Marzo 2010, 06:01 am »

Hola gente...
Resulta que hice un sistema de esos para seleccionar un pais, luego una region y luego una localidad de esta region.

La cuestion, es que cuando el usuario selecciona una region, la web recarga y debe aparecer la region que se ha seleccionado, como "SELECTED"
Hago un SELECT a la base de datos, donde traigo el NOMBRE de las regiones, y hago ésto para que aparezca SELECTADA la region seleccionada:

Código
  1. if($row['nombre']==$_SESSION['region']){
  2.    echo '<option selected value="'.$row['nombre'].'">'.$row['nombre'].'</option>';
  3. }else{
  4.    echo '<option value="'.$row['nombre'].'">'.$row['nombre'].'</option>';
  5. }

Como verán, en una variable de sesion, guardo el valor que seleccionó anteriormente..

La cuestion, es que esto funciona PERFECTAMENTE.. Pero para paises, regiones o localidades con acento, NO FUNCIONA..

Prueben entrar aqui: www.bropic.com
Arriaba a la izquierda de la web, le muestra las 3 varibales de session..
Seleccionen Argentina - Córdoba
Y veran que no funciona..
Pero si Seleccionan Argentina - Buenos Aires... Si funciona

Leí por ahí que es un problema del CHARSET de MySQL... es así?


En línea

Spider-Net


Desconectado Desconectado

Mensajes: 1.165


Un gran poder conlleva una gran responsabilidad


Ver Perfil WWW
Re: Problema con Acentos en MySQL + PHP
« Respuesta #1 en: 11 Marzo 2010, 08:29 am »

Yo como value utilizaría el identificador del país en lugar del nombre para evitarte este tipo de problemas. Y para que se muestre bien el nombre con acentos puedes usar htmlentities. De modo que quedaría algo así:

Código
  1. if($row['nombre']==$_SESSION['region']){
  2.    echo '<option selected value="'.$row['idpais'].'">'.htmlentities($row['nombre']).'</option>';
  3. }else{
  4.    echo '<option value="'.$row['idpais'].'">'.htmlentities($row['nombre']).'</option>';
  5. }
  6.  


En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: Problema con Acentos en MySQL + PHP
« Respuesta #2 en: 11 Marzo 2010, 13:29 pm »

Tiene una gran probabilidad de que sea asi  :rolleyes:

Que CHARSET tiene esa tabla donde buscas esa info????  Por lo general lo dejan en utf8

Haz un SHOW CREATE TABLE nombre_tabla;

Que charset tiene????

Puedes cambiarselo por latin1 por ejemplo:

ALTER TABLE nombre_tabla CHARSET = latin1;



En línea

Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Problema con Acentos en MySQL + PHP
« Respuesta #3 en: 11 Marzo 2010, 18:30 pm »

El problema parece que no lo explique bien:

En ese codigo que pegué, en la sentencia: $row['nombre']==$_SESSION['region']

la comparacion no funciona bien.
Eso hace que, cuando se seleccione Córdoba, y el mysql_fetch_array devuelve la entrada Cordoba, lo que ahce, es imprimir el "Option" de HTML, pero SELECTADO.. así aparece ese como que fue el ultimo seleccionado.
Se entiende?

Sino, selecciona algun pais, mira que la web se recarga, y al recargarse, mira que aparece seleccionada la que seleccionaste... Eso se ahce con ese algoritmo.

El show create table dice:
CREATE TABLE `regiones` (
 `id` smallint(4) unsigned NOT NULL auto_increment,
 `id_pais` tinyint(3) unsigned NOT NULL default '0',
 `nombre` varchar(150) NOT NULL,
 PRIMARY KEY  (`id`,`id_pais`)
) ENGINE=MyISAM AUTO_INCREMENT=4230 DEFAULT CHARSET=latin1
En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: Problema con Acentos en MySQL + PHP
« Respuesta #4 en: 11 Marzo 2010, 19:02 pm »

Ahhh eso es ya otro problemita amigo  :rolleyes:  y no tan relacionado con MySQL como tal (la tabla tiene el charset LATIN por lo que los registros deben tener acentos).

Es mas un problema entre PHP y programacion ;)
En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Problema con Acentos en MySQL + PHP
« Respuesta #5 en: 11 Marzo 2010, 19:21 pm »

Bueno, tienes que usar el juego de caracter iso-8859-1, ejemplo:
Código
  1. <?php
  2. header('Content-Type: text/html; charset=iso-8859-1');
  3. ............
  4. ..........
  5. .....
  6. ...
  7. ..
  8. .
  9. ?>
  10.  
O de esta forma:
Código
  1. <?php
  2. header('Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
  3. ');
  4. ...........
  5. .
  6. .
  7. ?>

Recuerda que debes enviarlo al principio del code.

Info:
http://en.wikipedia.org/wiki/List_of_HTTP_headers
http://es.wikipedia.org/wiki/ISO_8859-1



Tambien puedes saber el juego de caracter predeterminado en tu Base de Datos, puedes usar este code que postee en Undersecurity...
Código
  1. <?php
  2. //Conexion mysql
  3. $conexion= mysql_connect('localhost','root','pass');
  4. echo "El juego de caracter en la base de dato es: ".mysql_client_encoding($conexion);
  5.  
  6. ?>

Salida:
Código:
El juego de caracter en la base de dato es: latin1

Saludos.
« Última modificación: 11 Marzo 2010, 19:24 pm por ~ Yoya ~ » En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Problema con Acentos en MySQL + PHP
« Respuesta #6 en: 12 Marzo 2010, 00:53 am »

Yo en el archivo INDEX.php tengo:
header('Content-Type: text/html; charset=UTF-8');

Y desde PHP hago un include a un php llamado: PREFERENCIA.php, donde en él esta éste codigo que da el problema.

Con tener ese HEADER en el index ya es basta?
« Última modificación: 12 Marzo 2010, 00:56 am por Skeletron » En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Problema con Acentos en MySQL + PHP
« Respuesta #7 en: 12 Marzo 2010, 00:55 am »

Tienes que mandar el juego de caracter iso-8859-1 para que acepte las tildes, las ñ, etc...
« Última modificación: 12 Marzo 2010, 00:56 am por ~ Yoya ~ » En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Problema con Acentos en MySQL + PHP
« Respuesta #8 en: 12 Marzo 2010, 00:58 am »

La sentencia que me dijiste que ejecute, dió el siguiente resultado:


El juego de caracter en la base de dato es: latin1
En línea

Skeletron


Desconectado Desconectado

Mensajes: 1.731


A long way to go


Ver Perfil WWW
Re: Problema con Acentos en MySQL + PHP
« Respuesta #9 en: 12 Marzo 2010, 01:00 am »

La solucion de HEADER que me propones, empeora las cosas..
Ahora empieza a mostrar textos así:

elige tu puntuación y verás la proxima
En línea

Páginas: [1] 2 3 4 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Acentos en mysql (con php)
Bases de Datos
Shon 7 14,031 Último mensaje 8 Enero 2011, 21:05 pm
por ~ Yoya ~
acentos y signo de ¿ en html-Mysql (solucionado)
Desarrollo Web
basickdagger 4 4,522 Último mensaje 3 Julio 2012, 09:24 am
por basickdagger
Problema con ñ,Ñ, y acentos.
Programación C/C++
diegofah 4 3,155 Último mensaje 1 Septiembre 2014, 19:39 pm
por ecfisa
[PYTHON][AYUDA] Problema con acentos y ñ
Scripting
LaThortilla (Effort) 5 26,840 Último mensaje 11 Abril 2015, 10:49 am
por Eleкtro
Problema de inserat acentos en mysql « 1 2 »
Bases de Datos
yoelrodguez 18 11,008 Último mensaje 27 Junio 2015, 20:10 pm
por WHK
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines