Ayuda con codficación de caracteres
Publicado por rraces (2 intervenciones) el 23/01/2007 00:04:22
Hola amigos, tengo un problema con los acentos y las ñ. Explico un poco por encima , tengo una página principal la cual tiene un formulario que tiene varios combos, pero nos centramos en dos, uno que muestra las localidades y otro las zonas. Bien las el combo de zonas esta desactivado y cuando se elige una localidad se carga la zonas, desde bbdd, correspondientes a dicha localidad.
La función que crea el select de las localidades es el siguiente código en php:
<?
//Genera la localidad en el formulario
function generaLocalidad()
{
$extraTag = "onChange=cargaContenido(2)";
$consulta = "select localidad from localidad";
$result = mysql_query($consulta);
$row[] = "todas";
while($row1 = mysql_fetch_array($result, MYSQL_NUM))
{
$row[] = htmlentities($row1[0]);
}
$arr_txt = $row;
$arr_vals = $arr_txt;
$lista_select = frm_select('localidad', $arr_txt, $arr_vals,"",$extraTag,"select_1");
echo $lista_select;
}
?>
La función cargaContenido(2) esta hecha en AJAX y es la siguiente:
function cargaContenido(selectACargar)
{
// Recibo el número correspondiente al combo que se debe llenar de datos
var selectAnterior = selectACargar-1; // Obtengo el número del combo que activó el evento onChange
// Extraigo el valor del combo que se ha cambiado
var strParam = getParametros( selectACargar );
var elemento;
if( strParam != "" && selectACargar != 4 )
{
ajax=nuevoAjax();
// Envio al servidor el valor seleccionado y el combo al cual se le deben poner los datos
ajax.open("GET", "php/select_dependientes_proceso.php?" + strParam, true);
ajax.onreadystatechange=function()
{
if (ajax.readyState==1)
{
// Mientras carga elimino la opcion "Elige" y pongo una que dice "Cargando"
elemento=document.getElementById("select_" + selectACargar);
elemento.length=0;
var opcionCargando=document.createElement("option");
opcionCargando.value=0;
opcionCargando.innerHTML="Cargando...";
elemento.appendChild(opcionCargando);
elemento.disabled=true;
}
if (ajax.readyState==4)
{
// Coloco en la fila contenedora los datos que recivo del servidor
document.getElementById("fila_" + selectACargar).innerHTML=ajax.responseText;
}
}
ajax.send(null);
}
}
Bien pues con las localidades que contienen acentos ñ no funciona correctamente. La página en php que carga es la siguiente, que es la que muestra en el combo de zonas las zonas encontradas.
<?
require_once("conexion/conexion.php");
require ("form_items.php");
$oRequestData = ( !$HTTP_POST_VARS ) ? $HTTP_GET_VARS : $HTTP_POST_VARS ;
$oData = $oRequestData;
$valor=$oData["seleccionado"];
$selectACargar=$oData["select"];
$selectSelectedF=$oData["valor"];
echo $oData["select_1"];
$oConectar=Conectarse();
//$localidadBuscar = htmlentities($oData["select_1"]);
if($selectACargar==2)
{
$valorUniversidad=$valor;
$consulta = "SELECT * FROM zona WHERE localidad ='". $oData["select_1"] ."' ";
$oQuery=mysql_query($consulta);
}
// y aca los imprime
if($selectACargar==2)
{
$extraTag = "";
$row[] = "todas";
while($row1 = mysql_fetch_array($oQuery, MYSQL_NUM))
{
$row[] = htmlentities($row1[0]);
}
$arr_txt = $row;
$arr_vals = $arr_txt;
$lista_select = frm_select('zona', $arr_txt, $arr_vals,"todas",$extraTag,"select_2");
echo $lista_select;
}
?>
He probado con la configuración UTF-8 y la iso-8859-1 y no me funciona correctamente. He probado a utilizar la función utf_encode y utf_decode para enviar y recibir datos entre AJAX y PHP pero nada. Espero que me puedan ayudar de alguna manera pq me estoy volviendo loco probando cosas.
Gracias Y un saludo
La función que crea el select de las localidades es el siguiente código en php:
<?
//Genera la localidad en el formulario
function generaLocalidad()
{
$extraTag = "onChange=cargaContenido(2)";
$consulta = "select localidad from localidad";
$result = mysql_query($consulta);
$row[] = "todas";
while($row1 = mysql_fetch_array($result, MYSQL_NUM))
{
$row[] = htmlentities($row1[0]);
}
$arr_txt = $row;
$arr_vals = $arr_txt;
$lista_select = frm_select('localidad', $arr_txt, $arr_vals,"",$extraTag,"select_1");
echo $lista_select;
}
?>
La función cargaContenido(2) esta hecha en AJAX y es la siguiente:
function cargaContenido(selectACargar)
{
// Recibo el número correspondiente al combo que se debe llenar de datos
var selectAnterior = selectACargar-1; // Obtengo el número del combo que activó el evento onChange
// Extraigo el valor del combo que se ha cambiado
var strParam = getParametros( selectACargar );
var elemento;
if( strParam != "" && selectACargar != 4 )
{
ajax=nuevoAjax();
// Envio al servidor el valor seleccionado y el combo al cual se le deben poner los datos
ajax.open("GET", "php/select_dependientes_proceso.php?" + strParam, true);
ajax.onreadystatechange=function()
{
if (ajax.readyState==1)
{
// Mientras carga elimino la opcion "Elige" y pongo una que dice "Cargando"
elemento=document.getElementById("select_" + selectACargar);
elemento.length=0;
var opcionCargando=document.createElement("option");
opcionCargando.value=0;
opcionCargando.innerHTML="Cargando...";
elemento.appendChild(opcionCargando);
elemento.disabled=true;
}
if (ajax.readyState==4)
{
// Coloco en la fila contenedora los datos que recivo del servidor
document.getElementById("fila_" + selectACargar).innerHTML=ajax.responseText;
}
}
ajax.send(null);
}
}
Bien pues con las localidades que contienen acentos ñ no funciona correctamente. La página en php que carga es la siguiente, que es la que muestra en el combo de zonas las zonas encontradas.
<?
require_once("conexion/conexion.php");
require ("form_items.php");
$oRequestData = ( !$HTTP_POST_VARS ) ? $HTTP_GET_VARS : $HTTP_POST_VARS ;
$oData = $oRequestData;
$valor=$oData["seleccionado"];
$selectACargar=$oData["select"];
$selectSelectedF=$oData["valor"];
echo $oData["select_1"];
$oConectar=Conectarse();
//$localidadBuscar = htmlentities($oData["select_1"]);
if($selectACargar==2)
{
$valorUniversidad=$valor;
$consulta = "SELECT * FROM zona WHERE localidad ='". $oData["select_1"] ."' ";
$oQuery=mysql_query($consulta);
}
// y aca los imprime
if($selectACargar==2)
{
$extraTag = "";
$row[] = "todas";
while($row1 = mysql_fetch_array($oQuery, MYSQL_NUM))
{
$row[] = htmlentities($row1[0]);
}
$arr_txt = $row;
$arr_vals = $arr_txt;
$lista_select = frm_select('zona', $arr_txt, $arr_vals,"todas",$extraTag,"select_2");
echo $lista_select;
}
?>
He probado con la configuración UTF-8 y la iso-8859-1 y no me funciona correctamente. He probado a utilizar la función utf_encode y utf_decode para enviar y recibir datos entre AJAX y PHP pero nada. Espero que me puedan ayudar de alguna manera pq me estoy volviendo loco probando cosas.
Gracias Y un saludo
Valora esta pregunta


0