problema com combos dinamicas

diazzz

Power Member
Viva a todos!
Eu estou com um problema um bocado estranho... numa página do meu site tenho duas combos (dropdown menus) em que a segunda depende do valor escolhido da primeira. Ou seja, vou buscar os dados à tabela concelhos para preencher a primeira combo e dps a segunda é preenchida atraves de outro ficheiro que é accionado qd clicko num concelho da primeira combo. Dps esse ficheiro preenche as outra combo com as freguesias correspondentes.
O problema é que os concelhos aparecem bem, mas as freguesias nao aparecem com os acentos!!! Assim com este problema para inserir depois na base de dados uma noticia com estes dados já nao consigo porque tenho de ir buscar o ID da freguesia atraves do seu nome e como tem ? em vez da letra c acento n funciona.
Alguem me pode ajudar aqui? Deixo aqui o codigo k estou a utilizar!

NOVA_NOTICIA.PHP
...
<td>
<select name="concelho" id="topic" onChange="clicked();">
<option value="0"></option>
<?php
$consulta = mysql_query("SELECT * FROM concelhos");
while( $row = mysql_fetch_assoc($consulta) )
{
echo "<option value=\"{$row['id']}\">{$row['nome']}</option>\n";
}
?>

</select>
</td>

<td>
<select name="freguesia" id="subcats" disabled>
<option>Seleccione um concelho</option>
</select>
</td>
...

JAVASCRIPT (k é xamado na nova_noticia.php)
//variaveis
var first = "topic"; //id da primeira combo
var second = "subcats"; //id da segunda combo
//
function sendRequest(url,params,HttpMethod)
{
if(!HttpMethod)
{ //verifica se o modo http está definido, senao coloca em GET
HttpMethod="GET";
}
// inicializa o request object
req=null;
if(window.XMLHttpRequest)
{
req=new XMLHttpRequest; //para o mozilla/safari
}
else if(window.ActiveXObject)
{
req=new ActiveXObject("Microsoft.XMLHTTP"); //para o IE
}
//define callback handler
if(req)
{
req.onreadystatechange=onReadyState;
req.open(HttpMethod,url,true);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; iso-8859-1");
req.setRequestHeader("CharSet", "iso-8859-1");
req.send(params);
}
}
//
function onReadyState()
{
var ready=req.readyState;
var data=null;
if(ready==4)
{
data=req.responseText;
var items = data.split(',');
var length = items.length;
for(var i = 0; i < length; i++)
{
var childEl = document.createElement('option');
var El = document.getElementById(second);
El.appendChild(childEl);
childEl.value = items;
childEl.innerHTML = items;
}
}
}
//
function clicked()
{
var el = document.getElementById(first);
var ob2=document.getElementById(second);
var selected = el.selectedIndex;
//
while(ob2.hasChildNodes())
{ //remove items da combo se algum já existir
ob2.removeChild(ob2.firstChild);
}
if(selected!= 0)
{ //se for escolhida uma opçao diferente da primeira "Seleccione um concelho"
sendRequest("not_freg.php?topic="+el.options[selected].value);
ob2.disabled=0;
}
else
{
var childEl = document.createElement('option');
ob2.appendChild(childEl);
childEl.innerHTML = 'Seleccione um concelho';
ob2.disabled=1;
}
}


NOTICIA_FREGUESIA.PHP
<?php
include "conf.php";

if(empty($_GET['topic']))
{ //se o concelho estiver vazio nao faz nada
exit();
}
$topic = $_GET['topic'];
$query = "SELECT nome FROM freguesias WHERE id_concelho = '$topic'";
$result = mysql_query($query);
if($result)
{
$items = array();
while($row = mysql_fetch_array($result))
{
$items[] = $row['nome'];
}
$string = implode(',',$items);
echo $string;
}
?>
 
Back
Topo