Ir para o conteúdo
JoseF

Apresentar equipamento consoante o email de login do cliente

Mensagens Recomendadas

JoseF

Boa tarde, estou a fazer um projeto e quero ele apareça os equipamentos consoante o email do cliente que fez o login por exemplo: eu faço login com o email "jose@hotmail.com" e quero que apareça so os produtos deste email

da-me erro aqui "while ($row = mysqli_fetch_array ($query)){"

code.php

<table class="table table-hover" style="display:block;">
<thead>
<th><b> ID </b></th>
<th><b> Equipamento </b></th>
<th><b> Problema </b></th>
<th><b> Bateria </b></th>
<th><b> Disco </b></th>
<th><b> Carregador </b></th>
<th><b> Mala </b></th>
<th><b> Cliente </b></th>
<th><b> Técnico </b></th>
<th><b> Estado </b></th>
<th></th>
<!-- Add Produto -->
<script>
function load_produto(){
document.getElementById("divproduto").innerHTML='<object width="100%" height="100%" type="text/html" data="InserirProdutoTemplate.php"></object>';}
</script>
<!-- Load Produto -->
<tr>
</thead>
<tbody id="myTable">
<?php
ini_set('default_charset','UTF-8');
if (!isset($_SESSION)){session_start();}
$conn=mysqli_connect("localhost","root","","year2k");
$instS="Select ID_Reparacao, Equipamento, Problema, Bateria, Disco, Carregador, Mala, email_cliente, nome_tecnico, Estado from reparacao where email_cliente= '".$_SESSION['EMAIL']."' order by ASC";
$query = mysqli_query($conn,$instS);
while ($row = mysqli_fetch_array ($query)){
echo "<tr>";
echo "<td>".$row[0]."</td>";
echo "<td>".$row[1]."</td>";
echo "<td>".$row[2]."</td>";
echo "<td>".$row[3]."</td>";
echo "<td>".$row[4]."></td>";
echo "<td>".$row[5]."></td>";
echo "<td>".$row[6]."></td>";
echo "<td>".$row[7]."></td>";
echo "<td>".$row[8]."></td>";
echo "<td>".$row[9]."></td>";
?>

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoseF

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\year2k-rep\index.php on line 62

Da-me este erro aqui

E quando tiro o order by ASC não da erro nenhum mas continua sem aparecer os equipamentos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f

A função mysqli_query devolve false quando o query falha.

Tens portanto um erro no query sql: deves indicar qual o campo que queres ordenar:

Order by XPTO asc

Edit: se quando tiras o Order by ele não da nada é pq o query não devolve nada.

Válida o valor da $_SESSION['email'] e se de facto tens esses registos na BD...

Editado por tiago.f

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoseF

Ja corrigi muito obrigado, tiago mas eu quero que quando o cliente faz o login apareça só os equipamentos que ele deixou com o email e nao me esta aparecer

Exemplo deixei um "Toshiba cq60 " para uma reparação "problema: não liga" com o email " jose@hotmail.com" quero que quando ele inica a sessão com o email "jose@hotmail.com" apareça os equipamentos só dele e quando um outro cliente inicia a sessão com outro email apareça só os equipamentos daquele cliente

Consegue me ajudar?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f

Faz

echo $instS;

Antes do mysqli_query

Põe aqui o que aparece.

Depois pega nessa query/string, vai ao xampp control panel, lança a shell, entra no mysql e executa esse query a ver se tens resultados...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoseF

Select ID_Reparacao, Equipamento, Problema, Bateria, Disco, Carregador, Mala, email_cliente, nome_tecnico, Estado from reparacao where email_cliente= '' Order by ID_Reparacao ASC

Deu-me isto aqui

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoseF

Para te ser sincero não, primeira vez que me aparece este erro

sei que com o echo ele exebiu aquilo que eu meti na variavel $instS

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f

??

Esta vazio porque a variável $_SESSION['email'] está vazia...

Provavelmente não a estas a preenche-la quando o utilizador faz login...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoseF

if (!isset($_SESSION['EMAIL'])){session_start();}

$conn=mysqli_connect("localhost","root","","year2k");

$instS="Select ID_Reparacao, Equipamento, Problema, Bateria, Disco, Carregador, Mala, email_cliente, nome_tecnico, Estado from reparacao where email_cliente= '".$_SESSION['EMAIL']."' Order by ID_Reparacao ASC";

$query = mysqli_query($conn,$instS);

pode ser assim ?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f

Não. O session start não descobre magicamente o email.

Os teus utilizadores têm que fazer login e, quando validares o login ( user e pass) deve preencher essa variável ( $_SESSIIN['email']) com o email dele..

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoseF

vou fazer e ja mando para ver se esta certo, pode ser ?

Mas isso da sessão eu tenho de fazer no login.php ne ?

<?php

session_start();

mysql_connect('localhost','root','');

mysql_select_db('year2k');

?>

<?php

include 'init.php';

$consulta="Select * from clientes where email_cliente='" . $_POST['email'] . "' and password_cliente='" . $_POST['password'] . "'";

$resultado=mysql_query($consulta);

if (mysql_num_rows($resultado)>0)

{

$linha=mysql_fetch_array($resultado);

$_SESSION['EMAIL']=$linha['EMAIL'];

header("location: index.php");

}

else

{

header("location: index.html");

}

?>

este aqui é o meu login.php

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f

Tens que ser tu a definir o valor da variável $_SESSION['email'] sim.

O melhor sítio para o fazer é assim que validas o login...(Digo eu)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
JoseF

Tiagooooo conseguiiiiiii tou taooooo felizzzzzz KKKKKKKKKKKKKKKKKKK, muito obrigado pela sua ajuda :D

<?php

session_start();

mysql_connect('localhost','root','');

mysql_select_db('year2k');

?>

<?php

include 'init.php';

$email=$_POST['email'];

$password=$_POST['password'];

$consulta="Select * from clientes where email_cliente='".$email."' and password_cliente='".$password."'";

$resultado=mysql_query($consulta);

if (mysql_num_rows($resultado)>0)

{

$linha=mysql_fetch_array($resultado);

$_SESSION['EMAIL']=$email;

header("location: index.php");

}

else

{

header("location: index.html");

}

?>

As alterações que fiz estão a vermelho

Editado por JoseF
  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
tiago.f

Boa :)

Agora lê os posts sticky no sub-forum php acerca de segurança. :)

Especialmente sobre SQL injection

Editado por tiago.f

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.