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

exportar variável botão para popup


rafamaz

Pergunta

Bom dia galera,

Estou com uma dúvida, estou criando um sisteminha para liberação de veículos do setor de logística, os colaboradores da empresa cadastram a solicitação, e os responsáveis fazem somente a liberação do veículo.

Estou fazendo isso mostrando apenas as liberações pendentes, com um botão e o valor do botão é a ID do registro lá dentro do banco...

Estou com dificuldade ai... O valor da ID aparece na tela de solicitações pendentes, porém quando clico na solicitação um, abre um popup (através de JS) porém quando abre o popup ele não puxa as informações da solicitação 1 por exemplo.

 

Teria como alguém me ajudar?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Bom dia , 

Não entendi muito bem o problema , mas acredito que dê para fazer assim : 

<button id="btnAcao" class="button"  value="<?$dadoBanco;?> " />Clique aqui</button>

então , quando a pessoa clicar no botao , ele aciona uma funcao que faz uma consulta com ajax e retorna os dados que você quer.

 

function pegaDados() /* funcao que executa o script ao carregar a pagina */
	{
	       var id = $('#btnAcao').val(); //pego o valor do botao
		jQuery.ajax
			({
				url: "minhaUrl.php?id="+id, //URL de destino
				dataType: "json", //Tipo de Retorno
				success:
				function(data) { //data -> variavel com o retorno do ajax	
									
						$('#nome').html(data.nome); //jogo o resultado do json nome em HTML
	
			
				} //function(data);	
			});
}

Na sua Pagina minhaUrl.php : 

 

Você faz o _GET do id  $id = $_GET['id']  e ai faz a consulta no banco para trazer os resultados que você quer.

Depois de pegar os resultados , converte eles para json e imprime na tela: 

 

Ex: 

function pegaDados($pdo){
		
		$id = $_GET['id'];
		try{ 
			
			$sql = "SELECT
					nome,
					count(*) as total,
					FROM minhaTabela v
					    WHERE id = $id";
			$stmt = $pdo->prepare($sql);
			$stmt->execute();
			$linha = $stmt->fetch(PDO::FETCH_ASSOC);
			if($stmt->rowCount() == 1){
				
				$arr['nome'] = $linha['nome'];
				$arr['total'] = $linha['total'];
				return $arr;		
			}
	
		} catch (Exception $e){ 
	
			print "Ocorreu um erro ao tentar executar esta ação";
			print  "Erro: Código: " . $e-> getCode() . " Mensagem: " . $e->getMessage();
		}
		
	}
	
	$dados = pegaDados($conexao);
	
	$dados = json_encode($dados); //converto para json
	
	print($dados);

 

E em seu modal , você exibe o conteúdo : 

<div id="meuModal" >

<h1>Nome: </h1> <span id="nome"></span>

</div>

 

Então , você chama a função pegaDados() quando clicar no seu botão btnAcao , ele vai pegar o valor do botao e mandar para a pagina minhaUrl.php , a pagina processa os dados e retorna , você pega o resultado e joga ele para HTMl , depois é só exibir onde desejar.

Assim , a pagina não é recarregada quando o usuário clicar no botão .

Não sei se isso vai ajudar , mas qualquer coisa posta ae.

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

  • 0

Vou me expressar de uma forma melhor kkk..

Os usuários cadastram a solicitação, e o responsável por liberar o carro, tem uma tela de consulta dessas solicitações pendentes. Nessa tela aparece apenas as ID`s das solicitações em forma de um botão, sendo o valor do botão o número da ID. Ao clicar no botão abre uma janela popup onde deveria mostrar a solicitação 1 por exemplo, já pré preenchida onde o responsável escolhe somente o carro e autoriza a saída do mesmo, faço isso com um select dentro do banco com a id que está no botão, porém o valor do botão (id do banco) não está transportando para dentro desta janela pop up.

Abaixo esta o código da tela de consulta de liberações pendentes.

			<form action="popup.php" method="get">
				<?php
					//consulta na tabela solicitação do banco de dados logistica
					$query = sprintf("SELECT * FROM `solicitacao` WHERE carro ='Pendente' ");
					$dados = mysql_query($query) or die (mysql_error());
					$campo = mysql_fetch_assoc($dados);
					$total = mysql_num_rows($dados);	

					if ($total > 0){
						do{
				?>
				<fieldset>
					<table>
							<tr>
								<td>Registro:</td> 
								<?php $registrodois = $campo['id']; ?>
								<td><input type="button" value="<?=$registrodois?>" name='registro' id="registro" onClick="popup(URL)" /></td>
							</tr>
					</table>
				</fieldset>
			</form>
							<?php
						}
						while ($campo = mysql_fetch_assoc($dados));
					}
				?>

 

 

E abaixo está o código do pop up

<?php
					$registro = $_GET['registro'];
					
					//teste apenas para verificar se está recebendo o valor
					var_dump($_GET)

					//consulta na tabela solicitação do banco de dados logistica
					$query = sprintf("SELECT * FROM `solicitacao` WHERE carro ='Pendente', id=$registro " );
					$dados = mysql_query($query) or die (mysql_error());
					$campo = mysql_fetch_assoc($dados);
					$total = mysql_num_rows($dados);	

					if ($total > 0){
						do{
				?>
				<fieldset>
					<table>
							<tr>
								<td>Registro:</td> 
								<td><input size= 5 value="<?=$campo['id']?>" name='registro' /> </td>
							</tr>
							<tr>	
								<td>Motorista:</td>
								<td><input type="text" value="<?=$campo['motorista']?>" name="motorista" id="motorista" > </td>
							</tr>
							<tr>
								<td>Destino:</td> 
								<td><input type="text" value=" <?=$campo['destino']?> " name="destino" id="destino" > </td>
							</tr>
							<tr>
								<td>Data de Saída:</td> 
								<td><input type="text" value="<?=$campo['dataIni']?>"  name="dataSai" id="dataIni" > </td>
							</tr>
							<tr>
								<td>Data de Retorno:</td>
								<td><input type="text" value=" <?=$campo['dataFim']?> "  name="dataRe" id="dataFim" > </td> 
							</tr>
							<tr>
								<td>Hora de Saída:</td> 
								<td><input type="text" value=" <?=$campo['horaIni']?> "  name="horaSai" id="dataIni" > </td>
							</tr>
							<tr>
								<td>Hora de Retorno:</td> 
								<td><input type="text" value="<?=$campo['horaFim']?>"  name="horaRe" id="dataFim" > </td>
							</tr>
							<tr>
								<td>Quantidade de Pessoas:</td>
								<td><input size=5 value="<?=$campo['quantidade']?>"  name="quantidade" id="quantidade" > </td>
							</tr>
							<tr>
								<td>Carro:</td>
									<td>
									<select name='carro' id="carro" >
											<?php $query2 = mysql_query("SELECT `veiculo` FROM frota "); ?> 
											<option>Selecione o Carro</option>
											<?php while ($carro = mysql_fetch_array($query2)) {?>
											<option><?php echo $carro['veiculo'] ; ?></option>
											<?php $carroum = $carro['veiculo']; 
										 	} 
											?> 
										</select>
									</td>
							</tr>
							<tr>
								<td>Autorizado Por:</td> 
								<td><input type="text" value="<?=$user?>" name='autorizadoPor' id="autorizadoPor" > </td>
								</td>
							</tr>
							<tr>
								<td>
									<input type="button" value="Autorizar" onclick="autorizar()" />
								</td>
							</tr>
					</table>
				</fieldset>

 

Link para o comentário
Compartilhar em outros sites

  • 0

Boa tarde , 

Acredito que o jeito que informei seja o mais adequado para a sua situação. 

 

Na sua tela que lista as solicitações pendentes , vamos chama-la de solicitacoes.php

 

solicitacoes.php

Primeiro , você monta a tabela com os carros pendentes : 

 

function conexao(){

    $dbuser = "root";
    $dbpass = "1234";

    try {

        $pdo = new PDO('mysql:host=localhost;dbname=crm',  $dbuser, $dbpass);
        $pdo -> setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
        $pdo->exec("SET CHARACTER SET utf8");//corrige os acentos na hora de gravar no BD
    } catch(Exception $e) {

        echo 'Erro na conexao: ' . $e->getMessage();
    }
}

$conexao = conexao();

function pegaCarros($pdo){ //aqui , passo o valor da conexão criada
		
		$id = $_GET['id'];
		try{ 
			
			$sql = "SELECT id FROM `solicitacao` WHERE carro ='Pendente"; //como voce só vai usar o ID , nao faz sentido usar o SELECT * FROM
			$stmt = $pdo->prepare($sql);
			$stmt->execute();
			$linha = $stmt->fetchAll(PDO::FETCH_ASSOC);
			if($stmt->rowCount() == 1){
				
                 return $linha;	
			}
	
		} catch (Exception $e){ 
	
			print "Ocorreu um erro ao tentar executar esta ação";
			print  "Erro: Código: " . $e-> getCode() . " Mensagem: " . $e->getMessage();
		}
		
	}

$carros = pegaCarros($conexao); //passo o valor da conexao para a funcao  , e jogo o retorno na variavel $carros

<table class="table table-bordered table-hover">
                <thead>
                    <tr>
                        <th>
                            Registro
                        </th>
                        <th>
                            Açao
                        </th>
                    </tr>
                </thead>
                <tbody>


<?php
              for($i = 0; $i < count($carros); $i++){
                
             print'<tr>
                        <td>'.
$carros[$i]['id'].'</td>
                        <td>
' <button type="button" name="registro" id="registro" value="'.$carros[$i]['id].'">Botao</button></td>
                    </tr>
';
?>
                </tbody>
            </table>
<script>
function pegaDados() /* funcao que executa o script ao carregar a pagina */
	{
	    var id = $('#registro').val(); //pego o valor do botao

		jQuery.ajax
			({
				url: "pegaCarros.php?id="+id, //URL de destino
				dataType: "json", //Tipo de Retorno
				success:
				function(data) { //data -> variavel com o retorno do ajax	
									
						$('#registro').html(data.registro); //jogo o resultado do json nome em HTML
                        $('#motorista').html(data.motorista); //jogo o resultado do json nome em HTML
                           etc etc etc,

                        $('#meuModal').modal('show'); //chama o modal para a tela

				} //function(data);	
			});
}

$("#registro").click(pegaDados); //aciona a funçao ao clicar no botao "registro"

</script>
<div class="modal fade" id="meuModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title" id="myModalLabel">Carros com registro pendente</h4>
      </div>
      <div class="modal-body">
          
            <table>
							<tr>
								<td>Registro:</td> 
								<td id="registro"></td> "id="motorista" -> valor criado em html na funcao em js
							</tr>
							<tr>	
								<td>Motorista:</td>
								<td id="motorista"></td> //"id="motorista" -> valor criado em html na funcao em js
							</tr>
							
							<tr>
								<td>
									<input type="button" value="Autorizar" onclick="autorizar()" />
								</td>
							</tr>
					</table>
       </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Fechar</button>
      </div>
    </div>
  </div>
</div>

 

 

 

então , você cria um arquivo chamado pegarCarros.php , o codigo em javascrip vai mandar o ID para esse arquivo , o select será feito nele e ele retornará os dados para você.

Assim , não fica recarregando a pagina com um formulário , o que deixa a navegação (no meu ponto de vista) "ruim" , pois toda vez que alguém clicar no botão , a pagina ia ser recarregada.

 

Segue exemplo da pagina pegarCarros.php

 

function conexao(){

    $dbuser = "root";
    $dbpass = "1234";

    try {

        $pdo = new PDO('mysql:host=localhost;dbname=crm',  $dbuser, $dbpass);
        $pdo -> setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
        $pdo->exec("SET CHARACTER SET utf8");//corrige os acentos na hora de gravar no BD
    } catch(Exception $e) {

        echo 'Erro na conexao: ' . $e->getMessage();
    }
}

$conexao = conexao();

function pegaDados($pdo){
		
		$id = $_GET['id'];
		try{ 
			
			$sql = "SELECT * FROM `solicitacao` WHERE carro ='Pendente', id=$registro";
			$stmt = $pdo->prepare($sql);
			$stmt->execute();
			$linha = $stmt->fetch(PDO::FETCH_ASSOC);
			if($stmt->rowCount() == 1){
					return $linha;	
			}
	
		} catch (Exception $e){ 
	
			print "Ocorreu um erro ao tentar executar esta ação";
			print  "Erro: Código: " . $e-> getCode() . " Mensagem: " . $e->getMessage();
		}
		
	}
	
	$dados = pegaDados($conexao);
	
	$dados = json_encode($dados); //converto para json
    print($dados);

Pronto!

 

Não cheguei a testar a pagina de retorno do Json , mas acredito que vá funcionar.

Esta tudo comentado e organizado , qualquer duvida posta ae

Editado por h_felix
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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...