Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Select option com possibilidade de add item


Deadoc

Pergunta

Pessoal help!

Me deparei com um problema ao qual não estou conseguindo resolver.

Seguinte.

Tenho uma consulta ao banco retornando uma unidade (sede), porém se a sede não existir no banco de dados, queria inserir um item para adicionar nova, tudo isso dentro do <select> <option value... enfim

trecho do código

<p>
   <b>Unidade: 
         <select size="1" name="unidade">
        <option value="">Selecione uma unidade abaixo:</option>
        <!--<option value="">Adicionar unidade</option>--> //aqui eu gostaria que ao clicar aparecesse uma janela para cadastrar nova unidade e ficasse setado já no combo em tempo real, só depois que eu submetesse o form q seria salvo na tabela sede campo unidade.
        
                <?php      
                    $var_conn = new conexao_mysql;
                    $var_conn->conexao('BD1');

                    $sql = "SELECT DISTINCT unidade FROM  empresa order by unidade";
                    $resultadoY=$var_conn->query($sql);

                    $i = 0; while($exibe2 = $var_conn-> associa_registros($resultadoY)): ?>
                    <option value="<?php echo($exibe2['unidade']);?>"><?php echo($exibe2['unidade']);?></option>

        <?php   $i++;  endwhile; ?>

        </select>
    </b>
</p>

Alguém tem uma luz?

Não posso criar uma nova tabela unidade por isso o trabalhão!

Necessito criar em tempo de execução, uma janela ao selecionar o item adicionar nova unidade no combo e retornar esse valor cadastrado no mesmo select.

Será que fui claro ou está confuso?

Alguém pode ajudar.

Obrigado

Editado por Deadoc
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Codigo do OPTION que fará esse serviço:

<?php      
                    $var_conn = new conexao_mysql;
                    $var_conn->conexao('BD1');

                    $sql = "SELECT * FROM  empresa";
                    $resultadoY=$var_conn->query($sql);

                    $i = 0; while($exibe2 = $var_conn-> associa_registros($resultadoY)): ?>
                    <option value="<?php echo($exibe2['unidade']);?>"><?php echo($exibe2['unidade']);?></option>

        <?php   $i++;  endwhile; ?>
<p>
   <b>Unidade:
         <select size="1" name="unidade" onchange="window.open(this.location = options[selectedIndex].link,'_blank')">
        <option link="cadastro_unidade.php" value="">Selecione uma unidade abaixo:</option>
        <!--<option value="">Adicionar unidade</option>--> //aqui eu gostaria que ao clicar aparecesse uma janela para cadastrar nova unidade e ficasse setado já no combo em tempo real, só depois que eu submetesse o form q seria salvo na tabela sede campo unidade.
        
                

        </select>
    </b>
</p>
Visto que foi criado um novo arquivo chamado cadastro_unidade.php, crie-o! cadastro_unidade.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<?php      
// Responsavel por pegar o valor do formulario
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}
//Variaveis de consulta
$hostname_acesso_bd = "localhost";
$database_acesso_bd = ""; // nome do banco de dados
$username_acesso_bd = ""; // usuario banco de dados
$password_acesso_bd = ""; // senha banco de dados

// EU COLOQUEI ESSAS INFORMAÇÕES PORQUE EU NÃO SABIA QUAIS VARIAVEIS USAR, CASO QUEIRA MODIFIQUE O CODIGO QUE VOU COMENTAR ABAIXO!
$acesso_bd = mysql_pconnect($hostname_acesso_bd, $username_acesso_bd, $password_acesso_bd) or trigger_error(mysql_error(),E_USER_ERROR); 

                    $var_conn = new conexao_mysql;
                    $var_conn->conexao('BD1');

                    $sql = "SELECT * FROM  empresa";
                    $resultadoY=$var_conn->query($sql);
// Codigo de Inserção
if ((isset($_POST["UNIDADE_inserir"])) && ($_POST["UNIDADE_inserir"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO empresa (unidade) VALUES (%s)",
                       GetSQLValueString($_POST['unidade'], "text"));

//MODIFIQUE AQUI!
  mysql_select_db($database_acesso_bd, $acesso_bd);
  $Result1 = mysql_query($insertSQL, $acesso_bd) or die(mysql_error()); 
                    
                    
                    
$editFormAcao = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
                    
                    ?>
                    
                    <form action="<?php echo $editFormAcao; ?>" method="post" name="form1" id="form1">
                    <label>Unidade:</label><input type="text" name="unidade" value="" size="32" />
                    <input type="hidden" name="UNIDADE_inserir" value="form1" />
                    <input type="submit" value="Cadastrar" />
                    </form>                    
                    
</body>
</html>

Espere que isso possa te dar uma luz. Abraço amigo!

Editado por Portal do Químico
Link para o comentário
Compartilhar em outros sites

  • 0

Puts... Não teria algo mais simples...

Tipo eu tenho uma unica tabela (empresas) com varios campos inclusive a Unidade (filial). Não posso criar outra tabela pois ae seria mais facil o trabalho.

Então o que busco e não estou conseguindo fazer é o seguinte:

faço um select na tabela empresas mostrando as filiais dentro de um combo... até ae tudo simples muito facil.

Porém dentro desse mesmo combo, caso eu não tenha a filial cadastrada, quero chamar uma função que abra uma popup apenas para digitar o nome da unidade e que ao clicar em ok ela já esteja no mesmo combo setada! Assim quando eu clicar em atualizar cadastro finalmente submeto o form e dou um update na tabela.

Tem como isso?

Algo do tipo:

function adicionarItem(select, val, tex, cla) {

'$("#"+select).append("<option value='"+val+"' class='"+cla+"'>"+tex+"</option>");

}

abrir uma popup, digitar o nome da unidade no input text e retornar para o mesmo combo...

alguma luz?

Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal Obrigado pela ajuda...

Resolvi da seguinte maneira...

Primeiro criei o script pegando pelo id do select option

&lt;script>
function addunidade( )
{
    var texto = prompt ("Digite o nome da unidade:");
    var valor = prompt ("Digite-a novamente:");
    document.getElementById("unidade").options[document.getElementById("unidade").options.length] = new Option (texto, valor, true, true);
}

</script>
Depois... no select eu fiz da seguinte forma...
<select size="1" id="unidade" name="unidade" [color="#FF0000"]onchange="if (this.value == 'java script:addunidade()') { location.href=this.value; }"[/color]> //a parte em vermelho chama a função addunidade somente se o value selecionado no option for igual a java script:addunidade().
        <option value="<?php echo($exibe['unidade']);?>"><?php echo($exibe['unidade']);?></option> //aqui retorna o já cadastrado no banco
        
    <option [color="#FF0000"]value="java script:addunidade()"[/color]>Adicionar unidade</option>//aqui estou chamando a função de addunidade ao option
        
       <?php
                    $var_conn = new conexao_mysql;
                    $var_conn->conexao('empresa');

                    $sql = "SELECT DISTINCT unidade FROM  sede order by unidade";
                    $resultadoY=$var_conn->query($sql);

                    $i = 0; while($exibe2 = $var_conn-> associa_registros($resultadoY)): ?>
                    <option value="<?php echo($exibe2['unidade']);?>"><?php echo($exibe2['unidade']);?></option> //aqui está mostrando todas as sedes cadastradas menos as repetidas...

        <?php   $i++;  endwhile; ?>
        </select>

Dessa forma simples usando javascript consegui abrir um prompt para digitar o nome da nova unidade e setar no select option como uma nova opção em tempo real, sem necessidade de abrir uma outra janela para cadastro.

Ficou realmente simples facil e pratico.

Obrigado pessoal mais uma vez pela ajuda...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...