Ver Mensaje Individual
  #7 (permalink)  
Antiguo 27/01/2013, 17:32
Avatar de gnzsoloyo
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