GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Favoritar item

php
Tags: #<Tag:0x00007ff796015aa0>

#1

Blz pessoal ?

Eu tenho uma tabelinha simples com contatos de uma agenda.Eu criei uma coluna no banco onde 0 representa um contato não favorito e 1 contato favorito.Até ai tudo bem.Na exibição dos contatos como eu faço para que a frente do contato apareça uma estrelinha apagada caso não seja favorito e uma estrelinha amarela caso seja favorito ?


#2

Usando if…

<?php if ($favorito): ?>
    <img src="estrelinha-amarela.jpg">
<?php else: ?>
    <img src="estrelinha-vazia.jpg">
<?php endif; ?>

A variável $favorito irá trazer o valor que está na base, cabe a você ajustar o código com a forma que você busca os dados…

Você está usando mysqli, pdo, sql server ou o quê?

Assim podemos indicar exemplos


#3

Hummm entendi cara.
Estou usando mysqli.Só uma duvida: eu consigo incluir esse trecho de codigo php dentro de um td da table ?
Vou mandar o trecho do codigo para entender melhor.É algo bem simples.

<?php $conexao = mysqli_connect("localhost","root","" ) or die("Servidor não encontrado"); mysqli_select_db($conexao,"agenda") or die("Banco de dados não encontrado"); // $banco = mysqli_select_db("agenda") or die("banco de dados não encontrado");
$comandoSQL = "select * from contatos order by nome";

$resultado = mysqli_query($conexao,$comandoSQL) or die("Erro ao executar o SQL");

$linha = mysqli_fetch_array($resultado);

?>


<center> <h1>Contatos Cadastrados</h1></center>

<table>
	<tr>
		<td align="right" colspan="5" width="800" height="70">
			<a href="incluir.php"><img src="imagens/incluir.jpg" style="width: 40px;"></a>				
		</td>
	</tr>
</table>

<table border="1" align="center">
	<tr>
		<td width="200"><center>Nome</center></td>
		<td width="200"><center>Email</center></td>
		<td width="200"><center>Telefone Cel</center></td>
		<td width="200"><center>Telefone Res</center></td>
		<td width="200"><center>Facebook</center></td>
		<td width="200"><center>Ações</center></td>
	</tr>
	<?php 
	while ($linha = mysqli_fetch_array($resultado)) {


		echo "<tr>
		<td>". $linha['nome']."</td>
		<td>". $linha['email']."</td>
		<td>". $linha['fone_cel']."</td>
		<td>". $linha['fone_res']."</td>
		<td>". $linha['facebook']."</td>
		<td> <a href='favorito.php?favoritar=".$linha['id']."'>
			<img src='imagens/estrela.png' style='width: 20px;'>
		</a>  </td>
	</tr>";
}
?>

#4

Por isso coloquei um formato diferente… é um outro jeito de usar if, while, for, etc, percebeu que tem um endif no final? você pode melhorar usar endwhile por exemplo junto com a imagem ficaria assim…

<?php
...
//$linha = mysqli_fetch_array($resultado);
// vamos trazer todas as linhas de uma vez...
$lista = mysql_fetch_all($resultado, MYSQLI_ASSOC);

// depois de guardar os dados numa martiz,
// a conexão pode ser fechada (recomendado)
mysqli_close($conexao);
?>

... html tabela...
<?php foreach ($lista as $item): ?>
  <tr>
    <td><?=$item['nome']?></td>
    <td><?=$item['email']?></td>
    <td><?=$item['fone_cel']?></td>
    <td><?=$item['fone_res']?></td>
    <td><?=$item['facebook']?></td>
    <td>
    <?php if ($item['favorito']): ?>
      <a href="favorito.php?favoritar=<?=$item['id']?>">
        <img src='imagens/estrela.png' style='width: 20px;'>
      </a>
    <?php else: ?>
      <img src='imagens/estrela-vazia.png' style='width: 20px;'>
    <?php endif; ?>
    </td>
  </tr>
<?php endforeach; ?>
.. tabela...

Perceba que lhe mostrei outras formas de buscar e mostrar os dados e misturá-los ao html…

Esse sinal <?= ?> é uma forma de imprimir variáveis na tela, seria o mesmo que usar…

<?php echo $item['nome']; ?>

Ou seja é um atalho (sintax sugar) do echo mas só funciona a partir da versão 5.4 do php senão me engano, pois precisa ser ativado no php.ini em versões anteriores (diretiva short_open_tag)

Bom que você vai conhecendo mais a linguagem e como ela se comporta, faça os testes e veja se te atende

Boa sorte!


#5

Blz cara vou testar aqui.
Muito obrigado pelas explicações e ajuda.


#6

Funcionou perfeitamente.
Muito obrigado cara.