Jump to content

Question

Olá a todos,

por gentileza estou com um problema em um aplicação em Php, tenho um select que traz informações de um banco de dados.

A confecção do select está Ok, porém na hora que estou precisando gravar as informações da seleção o campo value

esta retornado os arrays vazios. Alguém poderia me ajudar.

 

segue select.

<select name="CodigoPrincipal" size="1" style="color: #FF0000" title="Selecione a Unidade Principal" >
                              <option value=""></option>
                              <?php
                                if($i_adm == 0){
                                  $sql_con1 = "SELECT cod_unidade, unidade FROM UNIDADE ORDER BY UNIDADE";
                                }else{        
                                  $sql_con1 = "SELECT cod_unidade, unidade FROM UNIDADES WHERE 
                                                 orgao_superior = '$i_cod_orgao' AND DEPARTAMENTO = '$i_cod_depto' AND regional >= '$i_cod_regional'
                                               ORDER BY unidade_ponta";
                                }
                                    $busca     = @mssql_query($sql_con1);
                                    $registros = @mssql_num_rows($busca);
                                    if($registros > 0){
                                        while($rs = @mssql_fetch_array($busca)){
                                        $campo = $rs[cod_unidade].'|'.$rs[unidade];
                                  ?>
                              <option value="<?=$campo?>" <? if($CodigoPrincipal == $rs[cod_unidade]){?>selected<?}?>> 
                              <?=$rs[unidade].' - '.$rs[cod_unidade]?>
                              </option>
                              <?}?>
                              <? }?>
                            </select>

 

Edited by Alaerte Gabriel
Adição da tag CODE

Share this post


Link to post
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Olha, tente este código aqui.

Pode ser que sua requisição SQL não esteja retornando nenhum dado.

Reparei que em numa das queries você chama a tabela de "UNIDADE". Já na outra você a chama de "UNIDADES". São duas tabelas distintas mesmo? 

<select name="CodigoPrincipal" size="1" style="color: #FF0000" title="Selecione a Unidade Principal" >
    <option value=""></option>
    <?php
        $sql_con1 = ($i_adm == 0)? "SELECT cod_unidade, unidade FROM UNIDADE ORDER BY UNIDADE" :
                                   "SELECT cod_unidade, unidade FROM UNIDADES "
                                  ."WHERE orgao_superior = '$i_cod_orgao' AND departamento = '$i_cod_depto' AND regional >= '$i_cod_regional' ORDER BY unidade_ponta";
 
        $busca     = @mssql_query($sql_con1);
        $registros = @mssql_num_rows($busca);
 
        if($registros > 0){
            while($rs = @mssql_fetch_array($busca)){
                $campo = $rs[cod_unidade].'|'.$rs[unidade];
                $selected = ($rs[cod_unidade] == $CodigoPrincipal)? 'selected' : '';
                echo '<option value="'.$campo.'" '.$selected.'>'.$rs[unidade].' - '.$rs[cod_unidade].'</option>';
            }
        }
    ?>
</select>

 

Share this post


Link to post
Share on other sites
  • 0

Olá boa noite e obrigado pela resposta.

Vou tentar explicar o código. O prblema Ezequiel é somente na hora de submeter o dados para gravar daí que a varivel CodigoPrincipal não traz nada. O que é estranho que em ambiente local tudo funciona perfeitamente sem erros, somente

quando publico a aplicação que não funciona, não é só este código qualquer código do select não traz a informação. O código em si é so para trazer dados de um banco de dados via SELECT e salvar o código. Se puder me ajudar, agradeço.

 

                                 //Campo do Select                               

<select name="CodigoPrincipal" size="1" style="color: #FF0000" title="Selecione a Unidade Principal" > <option value=""></option>
                             <?php
                                  $sql_con1 = "SELECT cod_unidade, unidade FROM UNIDADES ORDER BY UNIDADE";
                                    $busca     = @mssql_query($sql_con1);
                                    $registros = @mssql_num_rows($busca);
                                    if($registros > 0){
                                        while($rs = @mssql_fetch_array($busca)){

                                        //Traz o código da unidade e o nome da unidade
                                        $campo = $rs[cod_unidade].'|'.$rs[unidade];
                                  ?>

                                //Após a seleção armazena tudo na Variavel CodigoPrincipal
                              <option value="<?=$campo?>" <? if($CodigoPrincipal == $rs[cod_unidade]){?>selected<?}?>> <?=$rs[unidade]?>
                              </option>
                              
                              <?}?>
                              <? }?>
                            </select>

 

Edited by Alaerte Gabriel
Adição da tag CODE

Share this post


Link to post
Share on other sites
  • 0
54 minutos atrás, Fvilefort disse:

<option value="<?=$campo?>" <? if($CodigoPrincipal == $rs[cod_unidade]){?>selected<?}?>> <?=$rs[unidade]?>

 acho que o erro está nessa linha.dá uma analisada na variavel $campo.

Share this post


Link to post
Share on other sites
  • 0

Obrigado a todos que ajudaram.

Descobri a razão é problema, como a busca das informações é feita pelo código em PHP as referência tem que ser informadas. Ou seja;

 

Onde <? tem que ser <?php, onde <?=campo?> tem que ser <?php echo campo>

 

Então se alguém precisar da função de busca informações em banco de dados através de um SELECT option, segue o código completo abaixo. Agradeço a todos.

 

 <select name="NomeVariavel" size="1"  style="color: #FF0000" id="select"  title="Selecione..." >
                              <option value=""></option>

                               //Chama a função em SQL para pesquisar no banco de Dados
                              <?php 

                                    $sql = "SELECT codigo, nome FROM cliente ORDER BY nome'";
                                    $busca     = @mssql_query($sql);
                                    $registros = @mssql_num_rows($busca);
                                    if($registros > 0){
                                    while($rs = @mssql_fetch_array($busca)){

                                          // Variavel que vai armazenar as informações
                                          $campo = $rs[codigo]."|".$rs[nome];
                              ?>
                              <option value="<?php echo $campo?>" <?php if($NomeVariavel == $rs[codigo] ){?> selected <? }?>>

                               //Mostra a informação no SELECT
                              <?php echo $rs[nome]?> </option>
                              <?php } ?>
                              <?php  }?>
                            </select>
                              

Detalhe importante:

Usar a função abaixo para capturar a informações.

 

        $PegaVariavel           = explode('|',$_POST[' NomeVariavel ']);
        $MostraInformacao = $ PegaVariavel [0];

        Se for busca o nome troque por $PegaVariavel[1];

 

boa sorte a todos e mais uma vez agradeço.

 

 

 

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.