1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

problema com combos dinamicas

Discussão em 'Web Development' iniciada por diazzz, 31 de Maio de 2007. (Respostas: 0; Visualizações: 707)

  1. diazzz

    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;
    }
    ?>
     

Partilhar esta Página