Jump to content
Fórum Script Brasil
  • 0

exportar variável botão para popup


rafamaz
 Share

Question

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 to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 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.

Edited by h_felix
Link to comment
Share on other 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 to comment
Share on other 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

Edited by h_felix
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      149.9k
    • Total Posts
      646.8k
×
×
  • Create New...