Ir ao conteúdo
  • Cadastre-se

PHP Como intera com outro usuario cadastrado no banco de dados a partir do meu login


Ir à solução Resolvido por DiF,

Posts recomendados

Boa noite.
Criei meu banco de dados, fiz a area do login e graças a ajuda de vocês está tudo Ok.

Agora estou tentando fazer o seguinte, quando faço o login com uma determinada conta, eu posso avaliar outros usuarios dessa tabela do meu banco de dados, onde eu listo elas.
Aí gostaria de ao clicar no botão, me redirecionar para uma página, onde eu possa avaliar esse Usuario, caso eu clique no Luiz, eu posso avaliar ele e deixar uma mensagem pra ele, minhas dúvidas são:

Devo criar outra tabela no banco de dados, por exemplo, uma tabela chama avaliação e nela conter um id, mensagem e nota, com isso posso ter várias mensagens e notas? Ou devo adicionar por exemplo uma coluna mensagem e nota na mesma tabela de usuários? Depois disso vou pegar essas informações todas e jogar num gráfico, essa é a ideia.
No caso da minha página cada usuário poderá dar notas e deixar uma mensagem para cada um, e na quando eu listo a tabela, eu já retirei o próprio usuário, para que ele não possa se avaliar.

Essa seria a pagina que lista todos usuários da minha tabela do banco de dados

<?php
include_once "conexao.php";

include('protect.php');

$name = $_SESSION['nome'];

//consultar no banco de dados      

$listaOrdenada = "SELECT * FROM usuarios WHERE nome != '$name' ORDER BY nome";
$resultado = mysqli_query($mysqli, $listaOrdenada);

//Verificar se encontrou resultado na tabela "usuarios"

if(($resultado) AND ($resultado->num_rows != 0)){
	?>
	<table class="table table-striped table-bordered table-hover"> //usado bootstrap
		<thead>
			<tr>
				<th style="color: red;">NOME</th>
				<th style="color: red;">SOBRENOME</th>
				<th style="color: red;">  </th>
			</tr>
		</thead>
		<tbody>
          
			<?php
			while($row_usuario = mysqli_fetch_assoc($resultado)){
				?>
				<tr>

					<th><?php echo $row_usuario['nome']; ?></th>
					<td><?php echo $row_usuario['sobrenome']; ?></td>
					
					<td><button onclick="window.location.href = 'avaliacao.php'" type="button" class="btn btn-success m-2">AVALIAR</button></td>
				</tr>
				<?php
			}?>
		</tbody>
	</table>
<?php
}else{
	echo "<div class='alert alert-danger' role='alert'>Não foi encontrado nenhum usuario!</div>";
}
?>

 

 

1.jpg

Link para o comentário
Compartilhar em outros sites

  • Moderador
  • Solução

@Lipeco

Em 07/11/2022 às 23:35, Lipeco disse:

Devo criar outra tabela no banco de dados, por exemplo, uma tabela chama avaliação e nela conter um id, mensagem e nota, com isso posso ter várias mensagens e notas? Ou devo adicionar por exemplo uma coluna mensagem e nota na mesma tabela de usuários?

Sempre crie uma tabela separada, que faça relacionamento de 1:N com a tabela mandante.  Isso garante a integridade e ainda colocar pelo menos na  1 NF(normas formais) de banco de dados.

 

Basicamente, na sua tabela de avaliação  crie um índice(index) para o campo ID_usuario que servirá de chave estrangeira.

Daí na aba de designer(desenhador se for em português) no phpmyadmin,  faça o relacionamento de 1:N  entre a tabela  usuario e avaliacao.   Onde na tabela usuario o campo ID, se ligará com o campo ID_usuario na tabela de avaliação.

 

Exemplo:

spacer.png

 

Repare na imagem, Clicando no nome do banco de dados (primeira seta vermelha da esquerda), vai habilitar a aba "Desenhador"   Clicando nele, vai abrir essa tela com as tabelas.

Você vai clicar no oitavo ícone de cima para baixo, do menu que esta na vertical ali do lado esquedo, é um icone de "ligamento".  Depois de clicar nele, você vai clicar no campo ID da sua tabela mandante(usuário) e  em seguida, no campo ID_usuario na sua tabela de avaliação.  Se você tiver criado o índice, você terá feito o relacionamento corretamente,  se aparecer uma janela perguntando duas ou mais opções, escolha a opção que permita deletar um registro, somente se na outra tabela não houver registro.  isso garantirá que você delete por engano um usuário, caso ele tenha uma avaliação, sem antes, deletar primeiro a avaliação.

 

Feito o relacionamento corretamente,  você poderá inserir na tabela de avaliação o valor ID desse usuário, a nota e a mensagem para ele.

 

Quando ele for logar, no perfil dele, você pode fazer uma query na tabela de avaliação pegando a nota dele e a mensagem e mostrar na tela para ele ler.

  • Amei 1
Link para o comentário
Compartilhar em outros sites

  • Moderador

@Lipeco Não esqueça que para funcionar o jeito que você quer avaliar, pelo seu código, você deve passar o valor ID do usuário via URL em get.

 

Então o trecho deve ser algo assim:

<?php
			while($row_usuario = mysqli_fetch_assoc($resultado)){
                  $id = $row_usuario["ID"];
				?>
				<tr>

					<th><?php echo $row_usuario['nome']; ?></th>
					<td><?php echo $row_usuario['sobrenome']; ?></td>
					
					<td><button onclick="window.location.href = 'avaliacao.php?id=<?php echo $id; ?>'" type="button" class="btn btn-success m-2">AVALIAR</button></td>
				</tr>
				<?php

 

E então no seu arquivo avaliacao.php,  receber este ID com 

$id = $_GET["ID"];

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@DiF Consegui criar a chave estrangeira, consegui fazer uns testes de inserção no mysql, unico problema é que não estou conseguindo essa última parte.

Segue foto explicando.

CODIGO DA PAGINA QUE LISTA OS USUARIOS

<?php
include_once "conexao.php";

include('protect.php');

$name = $_SESSION['nome'];

//consultar no banco de dados      

$result_usuario = "SELECT * FROM colaboradores WHERE nome != '$name' ORDER BY nome";
$resultado_usuario = mysqli_query($mysqli, $result_usuario);

//Verificar se encontrou resultado na tabela "auto_u"

if(($resultado_usuario) AND ($resultado_usuario->num_rows != 0)){
	?>
	<table class="table table-striped table-bordered table-hover">
		<thead>
			<tr>
				<th style="color: red;">NOME</th>
				<th style="color: red;">SOBRENOME</th>
				<th style="color: red;">DEPARTAMENTO</th>
				<th style="color: red;">CARGO</th>
				<th style="color: red;">  </th>
			</tr>
		</thead>
		<tbody>
			<?php
			while($row_usuario = mysqli_fetch_assoc($resultado_usuario)){

				  $id_colaboradores = $row_usuario['id_colaboradores'];
				

				?>
				<form method="_POST">
					<tr>

						<th><?php echo $row_usuario['nome']; ?></th>
						<td><?php echo $row_usuario['sobrenome']; ?></td>
						<td><?php echo $row_usuario['departamento']; ?></td>
						<td><?php echo $row_usuario['cargo']; ?></td>
						
						<td><a href="avaliar_colaborador.php?id_colaboradores=$_GET['id_colaboradores']" type="submit" class="btn btn-success m-2" ">AVALIAR</a></td>
					</tr>
				</form>	
				<?php
			}?>
		</tbody>
	</table>
<?php
}else{
	echo "<div class='alert alert-danger' role='alert'>Nenhum usuário encontrado!</div>";
}
?>

 

 

PAGINA PARA AVALIAR
<?php
include_once "conexao.php";

include('protect.php');

?>

<!-- Widgets Start -->
            <div class="container-fluid pt-4 px-4">
                <div class="row g-4">
                    <div class="col-sm-12 ">
                        <div class="h-100 bg-secondary rounded p-4">
                            <div class="d-flex align-items-center justify-content-between mb-2">
                                <h6 class="mb-0">Meus Feedbacks</h6>
                                
                            </div>
                           
                                    <div class="d-flex w-100 justify-content-between">
                                        
                                        <?php
                                        //consultar no banco de dados      

                                        $result_usuario = "SELECT * FROM colaboradores";
                                        $resultado_usuario = mysqli_query($mysqli, $result_usuario);

                                        //Verificar se encontrou resultado na tabela "auto_u"

                                        if(($resultado_usuario) AND ($resultado_usuario->num_rows != 0)){
                                            ?>
                                            <table class="table table-striped table-bordered table-hover">
                                                <thead>
                                                    <tr>
                                                        <th  scope="col" style="color: red;">NOME</th>
                                                        <th  scope="col" style="color: red;">SOBRENOME</th>
                                                        <th  scope="col" style="color: red;">FEEDBACKS RECEBIDOS</th>
                                                        <th  scope="col" style="color: red;">REAÇÕES RECEBIDAS</th>
                                                
                                                    </tr>
                                                </thead>
                                                <tbody>
                                                    <?php
                                                        $row_usuario = mysqli_fetch_assoc($consulta_colabefeed);

                                                    ?>

                                                        <form method="_POST">
                                                            <tr>

                                                               <th scope="row"><?php echo $row_usuario['nome']; ?></th>
                                                                <td><?php echo $row_usuario['sobrenome']; ?></td>
                                                                <td><?php echo $row_usuario['mensagem']; ?></td>
                                                                <td><?php echo $row_usuario['reacao']; ?></td>
                                                                
                                                            </tr>
                                                        </form> 
                                                  


                                                </tbody>
                                            </table>
                                        <?php
                                        }else{
                                            echo "<div class='alert alert-danger' role='alert'>Nenhum usuário encontrado!</div>";
                                        }
                                        ?>
                                    </div>
                         
                                </div>
                            </div>
                      
                        </div>
                    </div>
                    
                </div>
            </div>
            <!-- Widgets End -->

 

img,teste.jpg

Link para o comentário
Compartilhar em outros sites

  • Moderador

@Lipeco Isso por que você passou de forma errada o parâmetro no link do botão de avaliar e também na outra página de avaliação, você fez uma consulta na tabela de forma geral e não baseada no id do usuário.

 

Altere esta linha no arquivo que lista os usuários para avaliar:

<td><a href="avaliar_colaborador.php?id_colaboradores=$_GET['id_colaboradores']" type="submit"

 

para:

 



<td><a href="avaliar_colaborador.php?id_colaboradores=<?php echo $id_colaboradores; ?>" type="submit"

Isso por que a tabela está fora do php, então você precisa abrir e fechar as tags do php dentro do link e colocar o echo na frente da variável com o valor ID para passar como GET na URL.

 

Na página de avaliação,  você precisa resgatar o valor ID passado pela URL  desta forma:

 <?php
      //recebe o valor id vindo da URL
      $ID = $_GET["id_colaboradores"];

      //consultar no banco de dados      
      $result_usuario = "SELECT * FROM colaboradores WHERE ID = $ID";
      $resultado_usuario = mysqli_query($mysqli, $result_usuario);

 

Assumindo que o nome do campo de chave primária da tabela de é ID  

Dessa forma, você pega os dados específicos do usuário em questão que está avaliando

  • Amei 1
Link para o comentário
Compartilhar em outros sites

Boa noite, estou com umas dificuldades e gostaria de algumas dicas, se possível.

Se tiver alguma dica do que posso implementar para melhorar, também apreciaria.

 

Na imagem explico melhor.

 

Segue o código abaixo

Aqui é da página meu_feedback.php

<h6 class="mb-0">FEEDBACKS RECEBIDOS</h6><br><br><br>
                                
                            </div>
                           
                                    <div class="d-flex w-100 justify-content-between">
                                        
                                        <?php
                                        //consultar no banco de dados      

                                        $result_usuario = "SELECT * FROM colaboradores";
                                        $resultado_usuario = mysqli_query($mysqli, $result_usuario);

                                       

                                        //Verificar se encontrou resultado na tabela "auto_u"

                                        if(($resultado_usuario) AND ($resultado_usuario->num_rows != 0)){
                                            ?>
                                            <table class="table table-striped table-bordered table-hover">
                                                <thead>
                                                    <tr>
                                                        <th  scope="col" style="color: red;">NOME</th>
                                                        <th  scope="col" style="color: red;">ENVIADO POR</th>
                                                        <!--<th  scope="col" style="color: red;">SOBRENOME</th> -->
                                                        <th  scope="col" style="color: red;">FEEDBACKS RECEBIDOS</th>
                                                        <th  scope="col" style="color: red;">PONTOS</th>
                                                        <th  scope="col" style="color: red;">REAÇÕES RECEBIDAS</th>
                                                        <th  scope="col" style="color: red;">DATA DO ENVIO</th>                                                
                                                    </tr>
                                                </thead>
                                                <tbody>
                                                    <?php

                                                        $qtd_pontos = 0;
                                                        
                                                        #$colaboradores = $_POST['nome'];

                                                        while($row_usuario = mysqli_fetch_assoc($consulta_colabefeed)){
                                                            if ($row_usuario['nome'] == $nome) {

                                                        $qtd_pontos = $row_usuario['pontos'] + $qtd_pontos;


                                                        
                                                    ?>

                                                        <form method="_POST">
                                                            <tr>

                                                                <th scope="row"><?php echo $row_usuario['nome']; ?><?php echo ' '.$row_usuario['sobrenome']; ?></th>
                                                                <th scope="row"><?php echo $row_usuario['id_envia']; ?></th>
                                                                <!--<td><?php #echo $row_usuario['sobrenome']; ?></td> -->
                                                                <td><?php echo $row_usuario['mensagem']; ?></td>
                                                                <td name="ponto"><?php echo $row_usuario['pontos']; ?></td>
                                                                <td><?php echo $row_usuario['reacao']; ?></td>
                                                                <td><?php echo $row_usuario['data_mensagem']; ?></td>
                                                                
                                                                
                                                            </tr>
                                                        </form> 
                                                        <?php
                                                        }
                                                        ?>

                                                        <?php
                                                        }
                                                    ?>
                                                </tbody>
                                            </table>
                                        <?php
                                        }else{
                                            echo "<div class='alert alert-danger' role='alert'>Nenhum usuário encontrado!</div>";
                                        }
                                        ?>
                                    </div>
                                  <br><h6 class="mb-0" style="text-align: center;">PONTUAÇÃO TOTAL = <?php echo $qtd_pontos;?> </h6><br>
                                </div>

 

 

Imagem 3 - painel.php

<div class="container-fluid pt-4 px-4">
                <div class="row g-4">
                    <div class="col-sm-12 col-xl-4">
                        <div class="bg-secondary rounded d-flex align-items-center justify-content-between p-4">
                            <i><img src="img/Auto.jpg" alt="" style="width: 50px; height: 50px;"></i>
                            <div class="ms-3">
                                <p class="mb-2">Meus Pontos Totais</p>
                                <h6 class="mb-0">75 </h6>
                            </div>
                        </div>
                    </div>
                    <div class="col-sm-12 col-xl-4">
                        <div class="bg-secondary rounded d-flex align-items-center justify-content-between p-4">
                            <i class="fa fa-chart-bar fa-3x text-primary"></i>
                            <div class="ms-3">
                                <p class="mb-2">Maior Pontuador: Nome</p>
                                <h6 class="mb-0">Aqui pega os pontos do maior</h6>
                            </div>
                        </div>
                    </div>
                    <div class="col-sm-12 col-xl-4">
                        <div class="bg-secondary rounded d-flex align-items-center justify-content-between p-4">
                            <i class="fa fa-chart-area fa-3x text-primary"></i>
                            <div class="ms-3">
                                <p class="mb-2">Recebeu mais Reações: Nome</p>
                                <h6 class="mb-0">Mostrar pontos</h6>
                            </div>
                        </div>
                    </div>
                    
                </div>
            </div>

 

Link para o comentário
Compartilhar em outros sites

@MailingTester

 

OBS: Tem como colona parte Data do envio para pegar a data atual ? Curiosidade. Imagem 1.

 

Imagem 2 - Seria a página do usuario logado, onde se pode ver os feedbacks recebidos- meu_feedback.php

1 - Seria possível eu impedir que a pessoa envie um novo feedback para a mesma pessoa? Tipo, O Lucas fez um feedback no dia 12-11-2022, queria impedir ele por um determinado tempo, 1 semana, mês, tanto faz, tentei fazer uma lógica mas não evolui, tipo uma variável que receba a data atual - a data que a pessoa envia, aí se fosse mais de tantos dias, pode enviar, se não, não pode adicionar um feedback para mesma pessoa, apenas para outra pessoa.

 

Imagem 3 - Seria a pagina do dashboard, Na primeira parte eu queria receber o total de pontos, ou seja, receber a variável $qtd_ pontos da página meu_feedback.php, não estou conseguindo pegar essa variável e colocar nessa página.

Nas outras partes seria a mesma coisa.

 

Eu deveria criar uma tabela, ou uma coluna para guardar essas informações de quantidades, ou posso simplesmente criar uma variável e guardar o valor e ir passando para outras páginas?

 

Segue em anexo as fotos em ordem.

 

Aqui é da página meu_feedback.php

<h6 class="mb-0">FEEDBACKS RECEBIDOS</h6><br><br><br>
                                
                            </div>
                           
                                    <div class="d-flex w-100 justify-content-between">
                                        
                                        <?php
                                        //consultar no banco de dados      

                                        $result_usuario = "SELECT * FROM colaboradores";
                                        $resultado_usuario = mysqli_query($mysqli, $result_usuario);

                                       

                                        //Verificar se encontrou resultado na tabela "auto_u"

                                        if(($resultado_usuario) AND ($resultado_usuario->num_rows != 0)){
                                            ?>
                                            <table class="table table-striped table-bordered table-hover">
                                                <thead>
                                                    <tr>
                                                        <th  scope="col" style="color: red;">NOME</th>
                                                        <th  scope="col" style="color: red;">ENVIADO POR</th>
                                                        <!--<th  scope="col" style="color: red;">SOBRENOME</th> -->
                                                        <th  scope="col" style="color: red;">FEEDBACKS RECEBIDOS</th>
                                                        <th  scope="col" style="color: red;">PONTOS</th>
                                                        <th  scope="col" style="color: red;">REAÇÕES RECEBIDAS</th>
                                                        <th  scope="col" style="color: red;">DATA DO ENVIO</th>                                                
                                                    </tr>
                                                </thead>
                                                <tbody>
                                                    <?php

                                                        $qtd_pontos = 0;
                                                        
                                                        #$colaboradores = $_POST['nome'];

                                                        while($row_usuario = mysqli_fetch_assoc($consulta_colabefeed)){
                                                            if ($row_usuario['nome'] == $nome) {

                                                        $qtd_pontos = $row_usuario['pontos'] + $qtd_pontos;


                                                        
                                                    ?>

                                                        <form method="_POST">
                                                            <tr>

                                                                <th scope="row"><?php echo $row_usuario['nome']; ?><?php echo ' '.$row_usuario['sobrenome']; ?></th>
                                                                <th scope="row"><?php echo $row_usuario['id_envia']; ?></th>
                                                                <!--<td><?php #echo $row_usuario['sobrenome']; ?></td> -->
                                                                <td><?php echo $row_usuario['mensagem']; ?></td>
                                                                <td name="ponto"><?php echo $row_usuario['pontos']; ?></td>
                                                                <td><?php echo $row_usuario['reacao']; ?></td>
                                                                <td><?php echo $row_usuario['data_mensagem']; ?></td>
                                                                
                                                                
                                                            </tr>
                                                        </form> 
                                                        <?php
                                                        }
                                                        ?>

                                                        <?php
                                                        }
                                                    ?>
                                                </tbody>
                                            </table>
                                        <?php
                                        }else{
                                            echo "<div class='alert alert-danger' role='alert'>Nenhum usuário encontrado!</div>";
                                        }
                                        ?>
                                    </div>
                                  <br><h6 class="mb-0" style="text-align: center;">PONTUAÇÃO TOTAL = <?php echo $qtd_pontos;?> </h6><br>
                                </div>

 

Imagem 3 - painel.php

<div class="container-fluid pt-4 px-4">
                <div class="row g-4">
                    <div class="col-sm-12 col-xl-4">
                        <div class="bg-secondary rounded d-flex align-items-center justify-content-between p-4">
                            <i><img src="img/Auto.jpg" alt="" style="width: 50px; height: 50px;"></i>
                            <div class="ms-3">
                                <p class="mb-2">Meus Pontos Totais</p>
                                <h6 class="mb-0">75 </h6>
                            </div>
                        </div>
                    </div>
                    <div class="col-sm-12 col-xl-4">
                        <div class="bg-secondary rounded d-flex align-items-center justify-content-between p-4">
                            <i class="fa fa-chart-bar fa-3x text-primary"></i>
                            <div class="ms-3">
                                <p class="mb-2">Maior Pontuador: Nome</p>
                                <h6 class="mb-0">Aqui pega os pontos do maior</h6>
                            </div>
                        </div>
                    </div>
                    <div class="col-sm-12 col-xl-4">
                        <div class="bg-secondary rounded d-flex align-items-center justify-content-between p-4">
                            <i class="fa fa-chart-area fa-3x text-primary"></i>
                            <div class="ms-3">
                                <p class="mb-2">Recebeu mais Reações: Nome</p>
                                <h6 class="mb-0">Mostrar pontos</h6>
                            </div>
                        </div>
                    </div>
                    
                </div>
            </div>

 

Imagem 1

imagem1.jpg

 

Imagem 2

imagem2.jpg

 

Imagem3

imagem3.jpg

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...