Foros del Web » Programando para Internet » PHP »

Error consulta formularios enviar ñ y acentos a mysql

Estas en el tema de Error consulta formularios enviar ñ y acentos a mysql en el foro de PHP en Foros del Web. Hola maestros, espero que puedan ayudarme con esto. En la tabla de la db las ciudades p.ej. Málaga las ponemos con Málaga y al hacer ...
  #1 (permalink)  
Antiguo 26/06/2011, 07:46
Avatar de vcarr  
Fecha de Ingreso: marzo-2011
Mensajes: 29
Antigüedad: 13 años, 1 mes
Puntos: 1
Sonrisa Error consulta formularios enviar ñ y acentos a mysql

Hola maestros, espero que puedan ayudarme con esto.

En la tabla de la db las ciudades p.ej. Málaga las ponemos con Málaga y al hacer una consulta a la db desde otro campo p.ej. x el nombre me devuelve el Málaga y lo escribe perfecto.

El problema: Si busco por ciudad el value="Málaga" en la tabla mysql también Málaga, pero no devuelve nada.

He probado con p.ej. Madrid y no hay problema, me lo devuelve perfecto, pero con Coruña al llevar la ñ tampoco me devuelve nada.

Código HTML:
El cotejamiento : utf8_general_ci

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
He probado cambiando el value y ponerlo "Málaga" con acento, también en la tabla pero eso no es solución.

Código HTML:
El tema lo puse en MySql pero me dicen:

Es un problema en la codificación de los formularios en la pagina web. La base almacena sólo lo que recibe, y no está recibiendo bien las cosas.
Pregunta en el Foro de PHP. Ellos conocen mejor ese problema.
Si alguien tiene respuesta se lo agradezco mucho.

  #2 (permalink)  
Antiguo 26/06/2011, 08:27
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Error consulta formularios enviar ñ y acentos a mysql

Mírate esto:

http://php.net/manual/es/function.htmlentities.php
http://php.net/manual/en/function.ht...ity-decode.php

Deberías de usar html-entity-decode antes de guardar en tu bbdd y antes de pasar el valor a la consulta.

También revisa la codificación de tu bbdd y de tus tablas, tu codificación de archivo,

Un saludo!!
  #3 (permalink)  
Antiguo 26/06/2011, 08:43
Avatar de vcarr  
Fecha de Ingreso: marzo-2011
Mensajes: 29
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Error consulta formularios enviar ñ y acentos a mysql

lo miro, a ver si soluciono algo, que llevo ya días y no hay forma...

Voy a ver, gracias !!
  #4 (permalink)  
Antiguo 26/06/2011, 09:36
Avatar de vcarr  
Fecha de Ingreso: marzo-2011
Mensajes: 29
Antigüedad: 13 años, 1 mes
Puntos: 1
Sonrisa Respuesta: Error consulta formularios enviar ñ y acentos a mysql

Nada, lo de la codificación decodificación de strings no me funciona, la cosa que en la db los datos los meto yo directamente y los pongo con código ASCII por lo que si llamo a buscar por nombre no hay problema y debajo del nombre me aparece la ciudad con su acento y demás..., el problema viene cuando quiero buscar por ciudad, que no me contesta nada, como si no existiera...

  #5 (permalink)  
Antiguo 26/06/2011, 09:36
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: Error consulta formularios enviar ñ y acentos a mysql

Utiliza:
Antes de guardar en la base de datos:

ut8_decode

Y cuando haces una consulta para mostrar los datos:

ut8_decode
  #6 (permalink)  
Antiguo 26/06/2011, 09:37
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: Error consulta formularios enviar ñ y acentos a mysql

tienes codigo? ...Postealo
  #7 (permalink)  
Antiguo 26/06/2011, 09:37
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: Error consulta formularios enviar ñ y acentos a mysql

Cita:
Iniciado por oscarbt Ver Mensaje
Utiliza:


Y cuando haces una consulta para mostrar los datos:

ut8_decode
Coreccion

utf8_encode

Para ambos casos es utf8
  #8 (permalink)  
Antiguo 26/06/2011, 09:58
Avatar de vcarr  
Fecha de Ingreso: marzo-2011
Mensajes: 29
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Error consulta formularios enviar ñ y acentos a mysql

El buscador tiene varios formularios, uno por cada tipo de búsqueda que el usuario quiere hacer, el formulario por ciudad:

Código HTML:
 <select id="ciudad" name="ciudad" onChange="submit()" >
    <option class="main" >Ciudad</option>
       <option class="main" value="Andalucía">Andalucía</option>
    <option class="sub" value="Almer&iacute;a">Almería</option>
    <option class="sub" value="C&aacute;diz">Cádiz</option>
    <option class="sub" value="C&oacute;rdoba">Córdoba</option>
    <option class="sub" value="Granada">Granada</option>
    <option class="sub" value="Huelva">Huelva</option>
    <option class="sub" value="Ja&eacute;n">Jaén</option>
    <option class="sub" value="M&aacute;laga">Málaga</option>
    <option class="sub" value="Sevilla">Sevilla</option>
    <option class="main" value="Arag&oacute;n">Aragón</option>
    <option class="sub" value="Huesca">Huesca</option>
    <option class="sub" value="Teruel">Teruel</option>


[CENTER].
.
.
.
.
.
.
.
.
.
.[/CENTER]
Los datos a la db los pongo directamente yo, no los usuarios y están así : Arag&oacute;n, etc..., cuando llamo por el formulario de nombre me devuelve los datos de los campos nombre y ciudad correctamente, con acentos, ñ, etc..., pero cuando busco a través del formulario ciudad no me da ningún resultado...

Todo está con utf8, la db tb...

Código HTML:
la consulta: 

$conn=Conectar(); 
mysql_select_db("12");
if (!mysql_select_db("12",$conn))  { 
printf("ERROR: %s\n",mysql_error()); 
mysql_close($conn); 
die("Error al cambiar de base de datos\n"); 
}

$ciudad=$_POST['ciudad']; 

$query="SELECT cliente.nombre, contacto.ciudad,
FROM cliente,contacto
WHERE contacto.ciudad='$ciudad'
AND cliente.contacto_idcontacto=contacto.idcontacto
ORDER BY DESC(); 

";
  #9 (permalink)  
Antiguo 26/06/2011, 10:14
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: Error consulta formularios enviar ñ y acentos a mysql

Y para que guardas los datos de esa forma?.....Porque no los guardas normalmente, con tildes y ñ
  #10 (permalink)  
Antiguo 26/06/2011, 10:21
Avatar de vcarr  
Fecha de Ingreso: marzo-2011
Mensajes: 29
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Error consulta formularios enviar ñ y acentos a mysql

Cita:
Iniciado por oscarbt Ver Mensaje
Y para que guardas los datos de esa forma?.....Porque no los guardas normalmente, con tildes y ñ
si los guardo con tildes y ñ, cuando los llamo desde cualquier otra consulta no me reconoce los caracteres, me explico, si los llamo desde la consulta nombre me aparecería Almer?ia... de este modo me llega bien, pero el problema lo tengo al hacer la consulta desde ciudad ...

puedo guardarlo con ñ y tildes y que desde cualquier consulta me lo reconozca?
  #11 (permalink)  
Antiguo 26/06/2011, 10:31
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: Error consulta formularios enviar ñ y acentos a mysql

Cita:
Iniciado por vcarr Ver Mensaje

puedo guardarlo con ñ y tildes y que desde cualquier consulta me lo reconozca?
Claro, para eso es el utf8_encode:

Por ejemplo, tu hace la consulta:

Código PHP:
Ver original
  1. $sql="SELECT NOMBRE FROM TABLA WHERE"; ......
  2.  
  3. $resultados=mysql_fetch_array($sql);
  4.  
  5. $nombre=$resultados['NOMBRE'];
  6.  
  7. echo ".$utf8_encode($nombre).";
  #12 (permalink)  
Antiguo 26/06/2011, 10:33
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: Error consulta formularios enviar ñ y acentos a mysql

Mejor:

$nombre=utf8_encode($resultado['NOMBRE']);

y luego echo $nombre;
  #13 (permalink)  
Antiguo 26/06/2011, 10:35
Avatar de vcarr  
Fecha de Ingreso: marzo-2011
Mensajes: 29
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Error consulta formularios enviar ñ y acentos a mysql

Cita:
Iniciado por oscarbt Ver Mensaje
Claro, para eso es el utf8_encode:

Por ejemplo, tu hace la consulta:

Código PHP:
Ver original
  1. $sql="SELECT NOMBRE FROM TABLA WHERE"; ......
  2.  
  3. $resultados=mysql_fetch_array($sql);
  4.  
  5. $nombre=$resultados['NOMBRE'];
  6.  
  7. echo ".$utf8_encode($nombre).";


Ok, voy a probar a cambiarlo como me dices.... luego te digo

gracias !!
  #14 (permalink)  
Antiguo 26/06/2011, 10:42
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: Error consulta formularios enviar ñ y acentos a mysql

Ok dale y me avisas
acuerdate mejor coloca :


Código PHP:
Ver original
  1. $nombre=utf8_encode($resultado['NOMBRE']);
  2. echo $nombre;

en vez de

Código PHP:
Ver original
  1. $nombre=$resultados['NOMBRE'];
  2. *
  3. echo ".$utf8_encode($nombre).";
  #15 (permalink)  
Antiguo 26/06/2011, 11:57
Avatar de vcarr  
Fecha de Ingreso: marzo-2011
Mensajes: 29
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Error consulta formularios enviar ñ y acentos a mysql

Cita:
Iniciado por oscarbt Ver Mensaje
Ok dale y me avisas
acuerdate mejor coloca :


Código PHP:
Ver original
  1. $nombre=utf8_encode($resultado['NOMBRE']);
  2. echo $nombre;

en vez de

Código PHP:
Ver original
  1. $nombre=$resultados['NOMBRE'];
  2. *
  3. echo ".$utf8_encode($nombre).";
Ok, ya lo he probado, por un lado ahora puedo poner ñ y acento en la db y con lo que me dices me los pasa bien.

Por otro lado sigo teniendo el problema de la búsqueda por ciudad o nombre cuando lleva acento o ñ.... no me devuelve ningún resultado... ¿?
  #16 (permalink)  
Antiguo 26/06/2011, 14:11
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 12 años, 11 meses
Puntos: 261
Respuesta: Error consulta formularios enviar ñ y acentos a mysql

Prueba con esta solución que me dio pateketrueke. Me ocurrió algo similar.

El tema es que para utilizar utf8_encode() en un array hay que hacerlo con array_map('utf8_encode', $array).

Echale un vistazo que igual puede ayudarte.
http://www.forosdelweb.com/f18/utf8_...2/#post3896148

PD.: Me ha resuelto todos lo problemas que tenía con los acentos en la DB.
  #17 (permalink)  
Antiguo 26/06/2011, 15:00
Avatar de vcarr  
Fecha de Ingreso: marzo-2011
Mensajes: 29
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Error consulta formularios enviar ñ y acentos a mysql

Cita:
Iniciado por Uncontroled_Duck Ver Mensaje
Prueba con esta solución que me dio pateketrueke. Me ocurrió algo similar.

El tema es que para utilizar utf8_encode() en un array hay que hacerlo con array_map('utf8_encode', $array).

Echale un vistazo que igual puede ayudarte.
[url]http://www.forosdelweb.com/f18/utf8_encode-para-array-922082/#post3896148[/url]

PD.: Me ha resuelto todos lo problemas que tenía con los acentos en la DB.
Hola, gracias por contestar, el problema es que cuando le digo buscar un string que contiene acentos o ñ no me devuelve nada, como si no encontrara nada, sin embargo cuando hago una búsqueda desde otro parámetro p.ej. desde nombre, me devuelve el nombre y la ciudad escrito correctamente aunque esta tenga acento ñ...

  #18 (permalink)  
Antiguo 26/06/2011, 15:32
Avatar de Uncontroled_Duck
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Málaga [Spain]
Mensajes: 806
Antigüedad: 12 años, 11 meses
Puntos: 261
Respuesta: Error consulta formularios enviar ñ y acentos a mysql

A ver, mas o menos he visto casi todos los mensajes.

El tema es que se están dando indicaciones para verlos correctamente al recoger los datos de la consulta. Pero tu necesitas hacerlo antes de consultar, para que al comparar, el resultado sea idéntico.

Código PHP:
$ciudad=utf8_decode($_POST['ciudad']); 

$query="SELECT cliente.nombre, contacto.ciudad,
FROM cliente,contacto
WHERE contacto.ciudad='$ciudad'
AND cliente.contacto_idcontacto=contacto.idcontacto
ORDER BY DESC(); 
Y después para mostrarlos si utilizas utf8_encode() como se ha indicado.

Si no me he perdido mucho al leer creo que es esto el problema.

Prueba y nos cuentas.

PD.: SI te sigue dando error, muéstranos, por una lado el code de la consulta, y por otro el code para mostrar los resultados.
  #19 (permalink)  
Antiguo 26/06/2011, 16:07
Avatar de vcarr  
Fecha de Ingreso: marzo-2011
Mensajes: 29
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: Error consulta formularios enviar ñ y acentos a mysql

Cita:
Iniciado por Uncontroled_Duck Ver Mensaje
A ver, mas o menos he visto casi todos los mensajes.

El tema es que se están dando indicaciones para verlos correctamente al recoger los datos de la consulta. Pero tu necesitas hacerlo antes de consultar, para que al comparar, el resultado sea idéntico.

Código PHP:
$ciudad=utf8_decode($_POST['ciudad']); 

$query="SELECT cliente.nombre, contacto.ciudad,
FROM cliente,contacto
WHERE contacto.ciudad='$ciudad'
AND cliente.contacto_idcontacto=contacto.idcontacto
ORDER BY DESC(); 
Y después para mostrarlos si utilizas utf8_encode() como se ha indicado.

Si no me he perdido mucho al leer creo que es esto el problema.

Prueba y nos cuentas.

PD.: SI te sigue dando error, muéstranos, por una lado el code de la consulta, y por otro el code para mostrar los resultados.
!!! MUCHAS GRACIAS !!! Funciona perfecto así !!!

Gracias a todos los que habéis contestado este post !!


Etiquetas: acentos, mysql, formulario
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 08:03.