Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP. Consulta MySQL con Ñ/ñ

Estas en el tema de PHP. Consulta MySQL con Ñ/ñ en el foro de PHP en Foros del Web. Hola, tengo un problemilla, haber si alguien me puede ayudar. Estoy haciendo una practica para clase, se trata de una pagina PHP con una base ...
  #1 (permalink)  
Antiguo 27/01/2013, 06:39
 
Fecha de Ingreso: julio-2008
Mensajes: 45
Antigüedad: 15 años, 9 meses
Puntos: 1
Pregunta PHP. Consulta MySQL con Ñ/ñ

Hola, tengo un problemilla, haber si alguien me puede ayudar.

Estoy haciendo una practica para clase, se trata de una pagina PHP con una base de datos MySQL.

Todo me estaba saliendo bien a la primera hasta que llegué al buscador. Solo me falta esto. Tengo que hacer un buscador para buscar los productos de la tienda.

El problema es que no me funcionan los caracteres especiales como la Ñ.

La tienda es de camisetas de futbol, si escribo en el buscador Manchester, me saca todas als camisetas que en su nombre contengan 'Manchester', si busco Italia, me salen todas las camisetas que pertenezcan a Italia.

Pero si busco España, no me sale nada.

No se a que se debe, porque si la consulta la ejecuto en una ventana de MS-DOS funciona, pero al hacerlo en PHP falla.

Código PHP:
$sql 'SELECT * FROM PRODUCTOS WHERE pais="' $_GET['pais'] . '"';
$resultado=mysqli_query($c$sql);
echo 
$sql
Esto me devuelve --> SELECT * FROM PRODUCTOS WHERE pais="España"

Si esto lo pongo en la consola MS-DOS, la consulta funciona perfectamente, pero en PHP no funciona.


Tambien tengo un problema al poner el simbolo del €. ¿Como puedo solucionar esto?

Gracias y salu2

Última edición por SUPERDIEGI; 27/01/2013 a las 06:54
  #2 (permalink)  
Antiguo 27/01/2013, 09:04
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, 5 meses
Puntos: 2658
Respuesta: PHP. Consulta MySQL con Ñ/ñ

Dale una mirada al tema que trata este link:
http://www.forosdelweb.com/f18/crear...ildes-1034111/

Es algo emparentado con tu problema.

Además puedes usar el Buscador del Foro sobre el mismo tema (htmlentities), o bien buscar sobre htmlspecialchars, que también es un tema que te peude afectar...
En definitiva, no es la consulta sobre la base, sino cómo le está llegando esa cadena de texto a la base, lo que en realidad se está afectando...
__________________
¿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 27/01/2013, 12:43
Avatar de s00rk  
Fecha de Ingreso: octubre-2010
Ubicación: Mexico
Mensajes: 238
Antigüedad: 13 años, 6 meses
Puntos: 48
Respuesta: PHP. Consulta MySQL con Ñ/ñ

No se si tambien sirva, pero podrias usar despues de hacer la conexion,
mysql_query("SET NAMES UTF8");
la verdad no estoy seguro pero pues no esta demas probar xD
  #4 (permalink)  
Antiguo 27/01/2013, 13:03
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, 5 meses
Puntos: 2658
Respuesta: PHP. Consulta MySQL con Ñ/ñ

Puntualmente, es posible que funcione, pero yo he resuelto problemas semejantes sin necesidad de eso.
__________________
¿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 27/01/2013, 15:43
 
Fecha de Ingreso: julio-2008
Mensajes: 45
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: PHP. Consulta MySQL con Ñ/ñ

¿Como codifiacais normalmente los archivos PHP y HTML?
- UTF-8
- ANSI

¿Y que cotejamiento en las bases de datos?

salu2

Última edición por SUPERDIEGI; 27/01/2013 a las 16:06
  #6 (permalink)  
Antiguo 27/01/2013, 17:09
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, 5 meses
Puntos: 2658
Respuesta: PHP. Consulta MySQL con Ñ/ñ

¿AL menos leíste alguno de los links que te puse?

¿Intentaste algo?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 27/01/2013, 17:32
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, 5 meses
Puntos: 2658
Respuesta: PHP. Consulta MySQL con Ñ/ñ

Cita:
Iniciado por SUPERDIEGI Ver Mensaje
¿Como codifiacais normalmente los archivos PHP y HTML?
- UTF-8
- ANSI

¿Y que cotejamiento en las bases de datos?

salu2
Los archivos se codifican en el charset que corresponda. No te pongas a inventar cosas, y lee la documentacion oficial.
El problema no está alli, sino en el modo en que lees el resultado de las consultas.
To doy un ejemplo donde los datos de la empresa pueden contener acentos, letras "Ñ" o cualquier otra cosa imaginable. En todos los casos los datos están correctamente almacenados como lo que son en la base de datos, donde todas las tablas son UTF8 (lo que deben ser), y la aplicación envía los datos al servidor en una conexion que usa UTF8.
Nota: ese charset en este caso no tiene nada que ver ni gestiona el HTML, porque la conexión se usa desde una aplicación de escritorio que envía XML y recibe XML de retorno.
Este ejemplo es unicamente para que veas cómo se toman los datos en UTF8 y se los prepara para regresar correctamente a la aplicación, que también los espera recibir en UTF8, aunque luego los muestre en pantalla de otra forma.
¿Se entiende?
Este código era completamente funcional al momento de ser usado un año atrás.

Código PHP:
Ver original
  1. <?php
  2. //... más codigo
  3.  
  4.  if($_POST['qry']!="...")
  5.           {
  6.           $sql = "SELECT * \n";
  7.           $sql .= "FROM empresa\n";
  8.           $sql .= "WHERE nombre_empresa LIKE '%".$_POST['qry']."%';";
  9.           }
  10.       else
  11.           {
  12.           $sql = "SELECT * \n";
  13.           $sql .= "FROM empresa;";
  14.           }
  15.      
  16.       $result = mysql_query($sql, $db);
  17.       If($result)
  18.           {
  19.           $oXml = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
  20.           $oXml .= "<Messages>\n";
  21.           $fcount = mysql_num_fields($result);
  22.           while($row = mysql_fetch_array($result) )
  23.               {
  24.               $oXml .= "   <NewTable>\n";
  25.               for($i=0; $i< $fcount; $i++)
  26.                 {
  27.                 $tag = mysql_field_name($result, $i );
  28.                 $oXml .= "      <$tag>".htmlspecialchars(utf8_decode($row[$i]))."</$tag>\n";
  29.                 }
  30.              $oXml .= "   </NewTable>\n";
  31.              }
  32.              $oXml .= "</Messages>";
  33.              $sXml = simplexml_load_string($oXml);
  34.              setLog($_POST['acc'], 'CONSULTA DE EMPRESAS', $usrnm, $db);
  35.              echo $sXml->asXML();
  36.              mysql_close($bd);
  37.              }
  38.         Else
  39.             {
  40.             $oXml = $result->error;
  41.             setLog($_POST['acc'], 'CONSULTA DE EMPRESAS', $usrnm, $db);
  42.             mysql_close($bd);
  43.             echo $oXml;
  44.             }
  45. ?>
Leelos y verifica el manual de 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)

Última edición por gnzsoloyo; 27/01/2013 a las 17:37
  #8 (permalink)  
Antiguo 28/01/2013, 03:45
 
Fecha de Ingreso: julio-2008
Mensajes: 45
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: PHP. Consulta MySQL con Ñ/ñ

Esos post ya me los habia leido, porque antes de preguntar siempre busco informacion.

Ya lo solucioné, codifiqué los archivos en ANSI, y le puse el charset europeo
<meta charset="ISO-8859-1" />

SOLUCIONADO!

Etiquetas: mysql, select, sql
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 13:16.