Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Claudio Carvalho

Pegar valor retornado no mysqli_fetch_array

Recommended Posts

Boa tarde.
Estou começando a estudar php e talvez esta seja uma dúvida simples mas já procurei em várias fontes e não achei nada. Então agradeço qualquer sugestão para resolver minha dúvida.

Eu tenho a seguinte array:

 

<?php 
while ($row = mysqli_fetch_array($mostrar_listagem)) { 
echo '<tr> <td>' . $row['DataBR'] . '</td>'; 
echo '<td class=left>' . $row['Nome'] . '</td>'; 
echo '<td>' . $row['Email'] . '</td>'; 
echo '<td class=left>' . $row['Instituicao'] . '</td>'; 
echo '<td><a href="cadastro_usuario.php?id=' . $row['id'] . '"><img src="Imagens/icon_show.png" /></a></td>'; 
echo '<td><a href="cadastro_editar.php?id=' . $row['id'] . '"><img src="Imagens/icon_edit.png" /></a></td>'; 
echo '</tr>'; 
} 
?> 

Ela funciona sem problemas.

 

Minha dúvida é sobre como pegar o valor da, por exemplo, $row['Nome'] de uma linha do grid para usar em outro lugar.


Obrigado por qualquer ajuda.
Claudio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode armazenar em uma nova variável um único valor ou colocar todos os valores que vc quer em um array e iterá-lo posteriormente.

 

Exemplo.

while( $row = mysqli_fetch_array( $mostrar_listagem ) )
{ 
    $name =  $row[ 'name' ];
    // ou
    $names[ ] = $row[ 'name' ];
}

echo $name;

foreach( $names as $name )
{
    echo $name , '<br/>';
}

No primeiro caso, se a consulta resultar em mais de um resultado, apenas o último é que irá preencher a variável $name.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, Carlos. Obrigado pela resposta.

 

O primeiro caso eu até havia tentado, tendo, como você exemplificou, o último nome como retorno. Se entendi (e foi o teste que fiz), no segundo caso ele lista todos os nomes.

 

Mas o que precisava é, numa lista da array que retorne, digamos, 10 nomes, pegar, por exemplo, o 5º.

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simples, crie um contador fora do laço de repetição e use uma condição dentro do laço para verificar a quantas anda.

 

$count = 1;

while( $row = mysqli_fetch_array( $mostrar_listagem ) )
{
    if( $count == 5 )
    {
        $name =  $row[ 'name' ];
    }

    $count++;
}

Ou coloca tudo em um array e acessa diferentes valores diretamente pelo index dele [inline]$name[ 5 ][/inline]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simples, crie um contador fora do laço de repetição e use uma condição dentro do laço para verificar a quantas anda.

 

$count = 1;

while( $row = mysqli_fetch_array( $mostrar_listagem ) )
{
    if( $count == 5 )
    {
        $name =  $row[ 'name' ];
    }

    $count++;
}

Ou coloca tudo em um array e acessa diferentes valores diretamente pelo index dele [inline]$name[ 5 ][/inline]

Ou então cria um array de nomes como :

 

$nomes = null;
while( $row = mysqli_fetch_array( $mostrar_listagem ) )
{
    $nomes[] .= $row['Nome'];
}
depois pegar o indice desejado

$nome = $nomes[5] ;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi o que eu disse no post #4

Ou coloca tudo em um array e acessa diferentes valores diretamente pelo index dele [inline]$name[ 5 ][/inline]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Relendo o que escrevi no segundo post acho que não fui claro como deveria. Bom, desculpem. Acho que a objetividade para explicar a dúvida vem com o conhecimento, que ainda não tenho muito.

 

Eu vi e testei o que vocês mandaram. E tentei adaptar para chegar ao que preciso, mas não consegui.

 

Na tabela gerada pelo array, há x linhas com nomes. O que estou tentando é, ao clicar em um destes nomes, armazene este $row['Nome'] para usá-lo em outro lugar na mesma página.

 

E sim, faltou uma coisa no código:

 

onde está

echo '<td class=left>' . $row['Nome'] . '</td>';Na verdade é
echo '<td class=left> <a href="#">' . $row['Nome'] . '</a></td>';


Compartilhar este post


Link para o post
Compartilhar em outros sites


PASSO 1 - Adicione isso ao head do seu html

<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>

<script type="text/javascript">

jQuery(document).ready(function(){

jQuery('.nomes').click(function(){

var name = jQuery(this).text();

jQuery.ajax({

type : 'POST',

url : 'guardarNome.php',

data : {nome : name}

})

})

})

</script>

 

PASSO 2 - Adicione a classe class="nomes" para os links que tenham nome no código PHP

 

echo '<td class=left> <a href="#" class="nomes">' . $row['Nome'] . '</a></td>';

 

PASSO 3 - Adicione este arquivo guardarNome.php

 

<?php

$nome = $_POST['nome'];

$_COOKIE['nome'] = $nome;

?>

 

Isso faz com que dispare um ajax para o arquivo guardarNome.php e set o $_COOKIE['nome'], pelo valor do texto do link.

 

Para resgatar este valor, basta acessar o cookie em $_COOKIE['nome']:

 

<?php

// exemplo de imprimir valor cookie;

echo $_COOKIE['nome']

?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, Raphael. Cara, eu testei aqui mas não funcionou.

 

Resumi o meu código para o essencial, assim poderia testar melhor. No seu código, só não entendi muito bem como em

echo $_COOKIE['nome']

ele pega o valor de volta da guardarNome.php.

 

<!doctype html>
<html><head>
<meta charset="utf-8">
<title></title>
<style type="text/css">@import url(css/master.css);</style>
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript">
	jQuery(document).ready(function(){	
		jQuery('.nomes').click(function(){
			var name = jQuery(this).text();
			jQuery.ajax({
				type : 'POST',
				url  : 'jQuery/guardarNome.php',
				data : {nome : name}		
			})
		})		
	})
</script>
</head>
<body>
<div id="ConteinerMaster">
<main>
<?php include 'Includes/conexao_db.php'; ?>
<?php 
$listagem = "SELECT  Nome FROM tabela_cliente";
$mostrar_listagem = mysqli_query($dbc, $listagem);
?>
<table class="tablesorter">
 <?php
while ($row = mysqli_fetch_array($mostrar_listagem)) {
	echo '<tr><td class=left><a href="#" class="nomes">' . $row['Nome'] . '</a></td></tr>';
}
?>
</table>
<p><?php echo $_COOKIE['nome']; ?></p>

</div>
<?php mysqli_close($dbc); ?>
</main>
</div>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora eu entendi o que você está querendo!


veja se isso lhe serve:



<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">@import url(css/master.css);</style>
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="http://raphael.eti.br/libs/js/cookie.js"></script>
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery('.nomes').click(function(){
var name = jQuery(this).text();
// Se você não for utilizar este nome em outras páginas
//comente o código jQuery.cookie("nome", name); citado abaixo
//[[[[[[
jQuery.cookie("nome", name);
// ]]]]]]]]]]
jQuery('#nomeRetorno').html(name);
})
})
</script>
</head>
<body>
<div id="ConteinerMaster">
<main>
<?php
// EVITE FICAR ABRINDO E FECHANDO TAGS PHP SEM NECESSIDADES, ASSIM VC EVITA FORÇAR A INTERPRETAÇÃO
// DO SCRIPT E GANHA EM OTIMIZAÇÃO
// USE ASPAS DUPLAS " SOMENTE QUANDO A STRING POSSUIR ALGUMA VARIAVEL À SER INTERPRETADA, OU CARACTER
// ESPECIAL COMO \n \r \t ...
// PROCURE DAR NOME COERENTE ÀS VARIAVEIS

include 'Includes/conexao_db.php';

$sqlListagem = 'SELECT Nome FROM tabela_cliente';
$listagem = mysqli_query($dbc, $listagem);

if (count($listagem) > 0)
echo '<table class="tablesorter">' ;
while ($row = mysqli_fetch_array($mostrar_listagem)) {
echo "<tr><td class='left'><a href='#' class='nomes'>{$row['Nome']}</a></td></tr>";
}
echo '</table>' ;

echo '<span id="nomeRetorno"></span>' ;
}
else
echo ('Você ainda natilde;o possui uma listagem para ser apresentada');

mysqli_close($dbc);
?>
</main>
</div>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, Rafael.

Funcionou perfeitamente.

 

E valeu pelas dicas também. Eu já tinha noção de que o código estava bem zoneado, mas havia resolvido dividir este estudo em primeiro fazer a página funcionar e depois otimizar o código (para entender melhor e bem o que cada parte faz).

 

Novamente obrigado pela ajuda e pela paciência. Espero que, daqui a um tempo, possa estar ajudando também.

 

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, Rafael.

Funcionou perfeitamente.

 

E valeu pelas dicas também. Eu já tinha noção de que o código estava bem zoneado, mas havia resolvido dividir este estudo em primeiro fazer a página funcionar e depois otimizar o código (para entender melhor e bem o que cada parte faz).

 

Novamente obrigado pela ajuda e pela paciência. Espero que, daqui a um tempo, possa estar ajudando também.

 

Abs

 

Que bom que pude ajudar, e analisando o código dos outros, nós retemos muita coisa que nos ajuda muito, e também filtramos muita coisa.
Dá meu post aew como resolvido e bola pra frente :natallaugh:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.