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

combo box dinamica java + php

Discussão em 'Web Development' iniciada por candycane, 24 de Julho de 2008. (Respostas: 18; Visualizações: 2697)

  1. candycane

    candycane Power Member

    Boa tarde..

    tou a tentar fazer uma combo box dinamica, em que quando seleciono um valor esse falor é inserido numa textbox...

    o meu comado java não funciona... :(

    Código:
     
    <script type="text/javascript">
        function AddGrupo(){ 
        var select_grupo = document.getElementById('list_grupo_cc');    
        select_texto = select_grupo.options(select_grupo.selectedIndex).value;  
         
        document.getElementById('txt_cc').value += select_texto;
        return true;
     }
        </script>
     
    
    alguem pode ajudar-me?
     
  2. skandal

    skandal Power Member

    Imagino que list_grupo_cc seja o id da combobox.

    Código:
    <script type="text/javascript">
        function AddGrupo(){ 
        var select_grupo = document.getElementById('list_grupo_cc').value;
         
        document.getElementById('txt_cc').value += select_grupo;
        return true;
        }
    </script>
     
  3. candycane

    candycane Power Member

    é sim... Mas aonctinua sem funcionar..

    o que pretendo é ao selecionar um valor da combobox, esse valor seja indroduzido aotomaticamente na textbos :\
     
  4. hostmake

    hostmake Power Member

    Código:
    <select onchange="return adicionar_input(this)">
    
    <script type="text/javascript">
    function adicionar_input(sel){
    valor_option = sel.options[sel.selectedIndex].value;
    texto_option = sel.options[sel.selectedIndex].text;
    document.getElementById('nome_do_input').value += valor_option + texto_option;
    return true;
    }
    </script>
    
    
     
  5. candycane

    candycane Power Member

    Obrigada hostmake, deu certo :)

    Mas o resultado não foi o que pensava que dava par fazer LOL my bad!


    Eu tenho 2 tabelas:

    newsletters:
    id, grupo

    emails:
    id, id_news, email, nome

    O que prentendia era, ao selecionar um grupo, adicionar a texbos os emails que correspondem a esse grupo...

    Mas não sei se é possível pk nã faço reload a pagina.... :\

    mesmo que faça com ajax, não vai dar pra efectuar o query sem reload, certo?
     
  6. hostmake

    hostmake Power Member

    Ajax, faz isso.
    E claro que dá sem reload, é esse o propósito todo do Ajax :P

    Existem montes de tutorials, se precisares de ajuda no desenvolvimento do codigo para isso, vai postando aqui.



    Precisas:

    - SACK (Simple ajax code-kit) para fazer a ligação entre os ficheiros.
    - Função javascript que chame uma pagina .php, onde tu retomas os emails todos que queres, e devolvas os dados ao sack, para receberes no ficheiro original, e pores na input box.


    Edit:

    (Lembrei-me de uma aldrabice, se o único propósito dessa tua select list for por os emails do grupo, na input box, e não quiseres usar Ajax e por isso como deve de ser :P
    Podes sempre, por os mails todos no value da select, e deixas o name para o Nome, ninguém vai saber..)
     
    Última edição: 24 de Julho de 2008
  7. candycane

    candycane Power Member

    eu tentei fazer isso.... mas n consegui, pk no meu select ponho where id_grupo = valor da select list...

    pelo menos tentei assim... tive k juntar as tabelas pelo id do grupo,

    mas sabes doutra formar? LOL

    tive a ver ajax e axei confuso.. mas vou ter k partir cabeça! :D
     
  8. m.costa

    m.costa Power Member

    Não tem complicação nenhuma, fazes deste genero:

    - ir buscar todos os grupos e respectivos IDs
    - ir buscar os e-mails de cada grupo, e guardas separados por uma virgula ou o que te der mais jeito, numa array do genero $array[id_grupo] = $lista_emails_do_grupo;
    - criar a select box com um HTML tipo:
    Código:
    <select onchange="return adicionar_input(this)">
      <option value="lista_de_emails_separados_por_virgula">nome_do_grupo</option>
      (... etc ...)
    </select>
    
    - e depois usas tb o javascript tipo o do hostmake, permite.me a adaptação:
    Código:
    <script type="text/javascript">
    function adicionar_input(sel){
    document.getElementById('nome_textbox').value += sel.value;
    return true;
    }
    </script>
    Desta maneira tens uma select box que sempre que e' selecionada adiciona os e-mails respectivos 'a selecçao 'a textbox, sem teres de te preocupar com AJAX (como o hostmake disse, e' um caso simples demais para se justificar AJAX)
     
  9. hostmake

    hostmake Power Member

    Estás a vontade :)
    Era isso mesmo que estava a dizer m.costa, as vezes sou 1 bocado preguiçoso para a explicação detalhada :D


    fazes um select, dentro do while onde listas os nomes dos grupos, e metes 1 select para os emails do id, e atribuis os emails a uma variável, ex:

    PHP:
    $lista_mails MYSQL_QUERY("SELECT * FROM emails WHERE grupo='".$lrow['id_grupo']."'");
    while (
    $lmail mysql_fetch_assoc($lista_mails_sql)) {
            
    $lista_mails_grupo[] = $lmail['email'];
    }
    $value_grupo implode(","$lista_mails_grupo);

    echo 
    "<option value='".$value_grupo."'>".$lrow['nome_grupo']."</option>";
     
  10. candycane

    candycane Power Member

    Estou um pouco confusa.. deve ser por se de manhã :\

    o que é o teu $lrow? Não entendi essa parte.... :(
     
  11. hostmake

    hostmake Power Member

    Desculpa :P

    Como é um while para percorrer os emails, dentro do while que cria o select, eu atribui lrow a variável que tu tas a usar no teu while original para fazeres o echo das options, percebeste?
     
  12. candycane

    candycane Power Member


    Ainda nãp.. :s

    A parte do meu codigo pra buscar os id e emails é este:

    PHP:
    <?php
     
     
    include("../includes/seccoes_admin.php");
     include(
    "../includes/database.php");
     include(
    "../includes/funcoes.php");
     
     
    confirmar_admin();
     
     
    $grupos "SELECT *
        FROM newsletters"
    ;
        
     
    $emails "SELECT *    
        FROM newsletters n
        INNER JOIN emails e ON n.id=e.id_grupo
        WHERE id_grupo = '"
    .$_POST['list_grupo']  ."'";
        
      
     
    $resultado_grupo =  mysql_query($grupos$ligacao); 
     
    $resultado mysql_query($emails$ligacao);
     
     
    $emails_grupo mysql_fetch_assoc($resultado);
     
    $nome_grupo =  mysql_fetch_assoc($resultado_grupo);
       
     
    $array_grupos = array($emails_grupo);
     
     
    //separar os emails por virgula
     
    $value_grupo implode(","$array_grupos);
     
    ?>

    o form:

    Código:
     
    <select name="list_grupo" id="list_grupo" onchange="return addGrupo(this);">
                  <option value="none">Selecione um grupo...</option>
                   <?php  
     
                            while($nome_grupo= mysql_fetch_assoc($resultado_grupo)) 
                            { 
                                echo "<option value=".$nome_grupo['id'].">".$nome_grupo['grupo']."</option>"; 
                            } 
     
                   ?>
        </select> 
    

    ainda n entendi o que vocês queren dizer, pra conseguir ter os emais no value dos options :\
     
    Última edição: 25 de Julho de 2008
  13. hostmake

    hostmake Power Member

    Tens uma tabela com o nome dos grupos.

    Tens um select, onde ficas com o nome, e o id dos mesmos, e estas a fazer um echo dentro do select para as options, certo ?



    PHP:
     <?php  
     
                            
    while($nome_grupomysql_fetch_assoc($resultado_grupo)) 
                            { 
                                echo 
    "<option value=".$nome_grupo['id'].">".$nome_grupo['grupo']."</option>"
                            } 
     
                   
    ?>

    É dentro destas chavetas que tens que por mais ao menos seguinte, tenta perceber:

    PHP:
    <?php  
     
                            
    while($nome_grupomysql_fetch_assoc($resultado_grupo)) 
                            { 
    $lista_mails_deste_grupo MYSQL_QUERY("SELECT * FROM emails WHERE id_grupo='".$nome_grupo['id']."'");
          while (
    $lista_mails myqsl_fetch_assoc($lista_mails_deste_grupo) {
              
    $mails_grupo[] = $lista_mails['email'];
          }
    $emails_separados_por_virgula implode(","$mails_grupo);


                                echo 
    "<option value=".$emails_separados_por_virgula.">".$nome_grupo['grupo']."</option>"
                            } 
     
                   
    ?>
     
  14. candycane

    candycane Power Member

    copiei o codigo, mas agora n me preenche a combo box :(

    e a minha textarea desapareceu LOL

    eu entendi o que fizeste.. mas n sei pk n da :\
     
  15. hostmake

    hostmake Power Member

    se não te preenche a combobox, é porque está a ocorrer um erro, no SQL ou nalgum outro pequeno promenor do codigo da lista dos emails, dentro das combobox's, os erros não aprecem na pagina, tens que ver no source.

    Faz debug aos SQL's que tas a fazer, e vai fazendo echo's a ver se chega lá, e faz or DIE no SQL também.
     
  16. candycane

    candycane Power Member

    afinal ja aparece a textarea e a combobox preenchida,

    tinha 2 coisas mal escritas no codigo...

    e em vez de:
    <option value=".$nome_grupo['id'].">

    pus o $emails_separados_por virgula


    E JÁ FUNCIONA!!!! :D

    Obrigada mesmo! :D

    salvaste-.me a pele... ajax... jesus!
     
  17. hostmake

    hostmake Power Member

    Ajax é um futuro muito real !

    Tens que começar a explorar isso, estás a vontade para tirares dúvidas, qualquer coisa diz, boa sorte :D
     
  18. candycane

    candycane Power Member

    Eu sei...

    e daki a nada vou ter que olhar pra isso...

    Tenho 2 combo box, e tenho k preencher a 2º de acordo com a 1º.

    O mesmo vou ter k fazer com listas....

    Tenho um lista de serviços, e a 2º lista é preenchida de acordo com a 1º e por ai fora..

    Conheces um bom tutorial sobre isso?

    Eu procuro e vejo mtos complicados, e um que só funcionou o IE :(
     
  19. m.costa

    m.costa Power Member

    Usa este script: http://www.mattkruse.com/javascript/dynamicoptionlist/

    Ja' tive boas dores de cabeça por causa desse problema (combos dinamicas), mas o que tu queres fazer e' simples e esse link vai.te permitir faze.lo rapidamente, e' so' ver os exemplos que la' tem e aprender com eles.
     

Partilhar esta Página