Ir para conteúdo

Arquivado

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

tigregato

Puxar apenas dado pelo ID

Recommended Posts

 

Boas malta, é assim, eu tenho o Login, registo, e isso a funcionar muito bem, no entanto eu quero que quando façam login, as pessoas consigam editar o perfil, neste momento dá para editar, mas está a puxar os registos todos (qualquer um edita qualquer registo), já tentei com select * from clientes where id_cliente = $id_cliente, e varias formas assim, e da erro de variavel n defenida, tentei de outra forma com variaveis e diz que nao existe resultados, vou deixar aqui o codigo, agradeço a ajuda :)
Nessa página tem o codigo a puxar os resultados da base dados, e com o ahref para registar, e o f=1 com o código de edição, mas como ja referi, preciso mesmo de ajuda para por exemplo,
Faço login com a conta Teste 01, mas na base dados existe as contas: Teste 01 Teste 02 Teste 03 Teste04 ... Eu quero que com o login da Teste 01 APENAS possa editar esses dados.
Aqui fica estrutura da tabela
?>
<!DOCTYPE html>
<html><head>
<title>SleepRoll</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">

   <link rel="stylesheet" type="text/css" href="css.css" media="all" /> 
    </head>

<body>

<?php
require "menu.php";
?>
<br>

<div id="meio" style="border:0px red solid;">
<div id="meiobackground">
<div id="titulosuperior">Alterar Perfil</div><br><br>

<div id="blocosleeproll">
<?php
if(isset($_GET['msg']))
$msg=$_GET['msg'];
else
$msg="";
if(isset($_GET['f']))
$f=(int)$_GET['f'];
else
$f=0;

?>

<?php
$nome = $_GET['nome'];
include "liga.php"; // Conectando ao BD
$sql = mysql_query("SELECT * FROM clientes WHERE nome = '$nome'"); //Selecionando a tabela
$conta=mysql_num_rows($sql);{
if($conta!=0){
echo "<table align=\"center\">";
echo "<tr>";
echo "<td>Nome</td><td>Email</td><td>Password</td><td>Alterar</td></tr>";

while($linha=mysql_fetch_array($sql)){
echo "<tr>";
echo "<td>".$linha['nome']."</td>";
echo "<td>".$linha['email']."</td>";
echo "<td>".$linha['password']."</td>";
echo "<td><a href=\"perfil.php?f=1&id_cliente=".$linha['id_cliente']."\">[ Editar ]</a></td>";
echo "</tr>";
}
echo "</table>";
}
else{
echo "<h5>Meu caro não existem registos</h5>";
}
}
if($f==1){
$id_cliente=$_GET['id_cliente'];
$sql_cliente=mysql_query("select * from clientes where id_cliente='$id_cliente'");
while($linha_client=mysql_fetch_array($sql_cliente)){
?>
<form name="form1" method="post" action="perfil.php?f=2&id_cliente=<?php echo $id_cliente ?>">
<table align="center" cellpadding="3">
<tr>
<td>Nome:</td><td><input type="text" name="nome" size="20" vcliente="<?php echo $linha_client['nome'] ?>" /></td>
</tr>

<tr>
<td>Email:</td><td><input type="text" name="email" size="20" vcliente="<?php echo $linha_client['email'] ?>" /></td>
</tr>

<tr>
<td>Password</td><td><input type="text" name="escola" size="20" vcliente="<?php echo $linha_client['password']; ?>" /></td>
</tr>
<tr>
<td colspan="2" align="right"><input type="submit" name="button" vcliente="Alterar Dados" /></td>
</tr>
<tr>
<td colspan="2">
<a href="perfil.php">[ Voltar ]</a></td>
</tr>
</table>
</form>
<?php
}
}
if($f==2){
$nome=$_POST['nome'];
$email=$_POST['email'];
$password=$_POST['password'];
$id_cliente=$_GET['id_cliente'];
$sql_in=mysql_query("update clientes set nome='$nome', email='$email', password='$password' where id_cliente='$id_cliente'");
if($sql_in){
echo "<meta http-equiv=refresh content='0; url=perfil.php?msg1' >";
}
else{
echo "<meta http-equiv=refresh content='0; url=perfil.php?msg2' >";
}
}

?>
</div>




<div id="rodape">
© copyright 2015 

</div>

</body>
</html>
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia.

 

 

Cara faz um echo na sua query e tenta executar no banco de dados.

$nome = $_GET['nome'];
include "liga.php"; // Conectando ao BD

echo "SELECT * FROM clientes WHERE nome = '$nome'";

Pode ser que o $_GET['nome'] não exista!

 

outra coisa, são boas praticas escrever o select declarativo e não buscar por nome.

 

Select declarativo nada mais é do que falar quais campos você quer trazer na query, mesmo trazendo todos os campos.

 

 

o problema de buscar pelo nome é que pode retornar mais de um cliente,

mas para evitar esse problema você pode colocar um (top 1) na sua query. OBS: isso não diz que vai trazer o cliente correto, o certo seria buscar pelo id

 

tenta ai e vê se a query está completa.

 

estarei à disposição

Compartilhar este post


Link para o post
Compartilhar em outros sites

Notice: Undefined index: nome inC:\xampp\htdocs\sleepdream\utilizador\perfil.php on line 36
SELECT * FROM clientes WHERE nome = ''
Notice: Undefined variable: sql inC:\xampp\htdocs\sleepdream\utilizador\perfil.php on line 39

Warning: mysql_num_rows() expects parameter 1 to be resource, null given in
C:\xampp\htdocs\sleepdream\utilizador\perfil.php on line 39

Meu caro não existem registos

 

tentei com o codigo que disseste, mas nao deu bro :|

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, para conseguir fazer essa busca, você de passar o nome de quem quer editar pela barra de endereço.

 

Exemplo :

 

localhost\sleepdream\utilizador\perfil.php?nome=nome+da+pessoa
Lembre-se de considerar que podem existir mais de uma pessoa com o mesmo nome, aí você terá problema. O ideal é alterar o perfil pelo id da pessoa, ai você passa o id pela barra de endereço.
Ouça também o Luiz Magno quanto a declaração da query.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Substitui

 
$nome=$_POST['nome'];
$email=$_POST['email'];
 
//por
$nome=isset($_POST['nome'])?$_POST['nome']:null;
$email=isset($_POST['email'])?$_POST['email']:null;
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Neste momento nao aparece erros, mas tambem nao aparece resultados:

<?php
if(isset($_GET['msg']))
$msg=$_GET['msg'];
else
$msg="";
if(isset($_GET['f']))
$f=(int)$_GET['f'];
else
$f=0;

?>

<?php
$nome=isset($_POST['nome'])?$_POST['nome']:null;
$email=isset($_POST['email'])?$_POST['email']:null;
include "liga.php";
if($f!=1 and $f!=2){
$sql=mysql_query("SELECT * FROM clientes WHERE nome='$nome'");

$conta=mysql_num_rows($sql);
if($conta!=0){
echo "<table align=\"center\">";
echo "<tr>";
echo "<td>Nome</td><td>Email</td><td>Password</td><td>Alterar</td></tr>";
while($linha=mysql_fetch_array($sql)){
echo "<tr>";
echo "<td>".$linha['nome']."</td>";
echo "<td>".$linha['email']."</td>";
echo "<td>".$linha['password']."</td>";
echo "<td><a href=\"perfil.php?f=1&id_cliente=".$linha['id_cliente']."\">[ Editar ]</a></td>";
echo "</tr>";
}
echo "</table>";
}
else{
echo "<h5>Meu caro não existem registos</h5>";
}
}
if($f==1){
$id_cliente=$_GET['id_cliente'];
$sql_cliente=mysql_query("select * from clientes where id_cliente='$id_cliente'");
while($linha_client=mysql_fetch_array($sql_cliente)){
?>

 

Tenho isso.... depois tem o form que nao mexi, e mais abaixo tem isto

<?php
}
}
if($f==2){
$nome=$_POST['nome'];
$email=$_POST['email'];
$password=$_POST['password'];
$id_cliente=$_GET['id_cliente'];
$sql_in=mysql_query("update clientes set nome='$nome', email='$email', password='$password' where id_cliente='$id_cliente'");
if($sql_in){
echo "<meta http-equiv=refresh content='0; url=perfil.php?msg1' >";
}
else{
echo "<meta http-equiv=refresh content='0; url=perfil.php?msg2' >";
}
}

?>

Neste momento está a aparecer esta mensagem: "Meu caro não existem registos" (a mensagem que eu dei se nao tiver resultados, no entanto, na base dados existe la dados mas nao estao a ser puxados corretamente agora :|

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.