tigregato 0 Denunciar post Postado Março 5, 2015 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 id_cliente nome email password telefone empresa morada tipo ?> <!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
Luiz Magno 6 Denunciar post Postado Março 5, 2015 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
tigregato 0 Denunciar post Postado Março 5, 2015 Notice: Undefined index: nome inC:\xampp\htdocs\sleepdream\utilizador\perfil.php on line 36SELECT * FROM clientes WHERE nome = ''Notice: Undefined variable: sql inC:\xampp\htdocs\sleepdream\utilizador\perfil.php on line 39Warning: mysql_num_rows() expects parameter 1 to be resource, null given inC:\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
pablopbl 0 Denunciar post Postado Março 5, 2015 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
tigregato 0 Denunciar post Postado Março 5, 2015 Em que zona faço isso pablo? Compartilhar este post Link para o post Compartilhar em outros sites
Ldovale 9 Denunciar post Postado Março 5, 2015 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
tigregato 0 Denunciar post Postado Março 5, 2015 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