c.orelhas Posted June 13, 2013 at 10:13 AM Report #512528 Posted June 13, 2013 at 10:13 AM Pois bem pessoal, após ter resolvido o problema da BD surgiu-me este e não tou bem a ver o porque de acontecer, não sei se será do nosso e de alguns dias já de roda disto que mal consigo ver código. O problema que me dá é o seguinte: E a minha questão prende-se com o facto de a variável que ele dá erro é a que se encontra a identificar o botão que neste caso fará o edit da conta do utilizador, no entanto não percebo o porque pois uma variável assim não é necessária ser declarada, ou estou errado ? **As linhas em erro estão assinaladas em comentário para mais facilmente serem identificadas. Apresento aqui o código responsável: <?php session_start(); ?> <html> <body background="./images/fundo.jpg"> <?php include("conn.php"); $id=$_POST['edit_user']; $sql="select * from utilizador where email='$id'"; $resultado = mysql_query($sql,$ligacao); while($registo = mysql_fetch_array($resultado)){ $email=$registo['email']; $pass=$registo['pass']; $nom=$registo['nome']; $apelido=$registo['apelido']; $morada=$registo['morada']; $postal=$registo['cod_postal']; $local=$registo['localidade']; $telm=$registo['telm']; } echo "<center><h2>Editar Contacto</h2></center>"; echo "<center><form action='' method='POST'>"; echo "Email:<input type='email' name='email' value='$email'/><br>"; echo "Password:<input type='password' name='pass' value='$pass'/><br>"; echo "Nome:<input type='text' name='nome' value='$nom'/><br>"; echo "Apelido:<input type='text' name='apelido' value='$apelido'/><br>"; echo "Morada:<input type='text' name='morada' value='$morada'/><br>"; echo "Código Postal:<input type='text' name='cod' value='$postal'/><br>"; echo "Localidade:<input type='text' name='local' value='$local'/><br>"; echo "Telemóvel:<input type='text' name='telm' maxlength='9' size='9' value='$telm'/><br>"; echo "<input type='hidden' name='hidmail' value='$email'/>"; echo "<input type='submit' name='edit' value='Editar'/>"; echo "<input type='submit' name='cancel' value='Cancelar'/>"; echo "</form></center>"; // if($_POST['edit']){ $hid=$_POST['hidmail']; $email=$_POST['email']; $pass=$_POST['pass']; $nome=$_POST['nome']; $apelido=$_POST['apelido']; $morada=$_POST['morada']; $postal=$_POST['cod']; $local=$_POST['local']; $telm=$_POST['telm']; $sql="Update utilizador Set email='$email', pass='$pass', nome='$nome', apelido='$apelido', morada='$morada', cod_postal='$postal', localidade='$local', telm='$telm' Where email='$hid'"; $resultado=mysql_query($sql); $sql="Update carrinho Set sessao='$email' Where sessao='$hid'"; $resultado=mysql_query($sql); $_SESSION["nome"]="Olá, ".$nome." ".$apelido; $_SESSION["mail"]=$email; echo "<meta http-equiv='refresh' content='0;URL=prod.php'>"; // }else if($_POST['cancel']) echo "<meta http-equiv='refresh' content='0;URL=prod.php'>"; ?> </body> </html>
HappyHippyHippo Posted June 13, 2013 at 10:28 AM Report #512538 Posted June 13, 2013 at 10:28 AM tens de perceber duas coisas : - um notice não é um erro - se a variável não está declarada terás sempre esse tipo de mensagens se não existe a informação no POST (edit ou cancel), terás sempre esse tipo de mensagem. IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Devexz Posted June 13, 2013 at 10:31 AM Report #512539 Posted June 13, 2013 at 10:31 AM acho que tens de verificar se post foi definido ou não. if(isset($_POST['edit'])) Contador de calorias: caloriaspordia.com
c.orelhas Posted June 13, 2013 at 10:43 AM Author Report #512542 Posted June 13, 2013 at 10:43 AM Sendo assim tenho de declarar esta variável através do POST para ele deixar de dar o notice ? Sendo assim tenho de declarar esta variável através do POST para ele deixar de dar o notice ?
I-NOZex Posted June 13, 2013 at 10:48 AM Report #512545 Posted June 13, 2013 at 10:48 AM nao, faz como o devex disse, verificas se a variavel tá definida ou nao B2R » Beat2Revolution v3.0b | Regista e divulga-nos beat2revolution.net
c.orelhas Posted June 14, 2013 at 09:45 AM Author Report #512850 Posted June 14, 2013 at 09:45 AM Consegui resolver esse problema assim como outros que me iam surgindo do mesmo género, apenas me surgiu uma duvida e não sei bem como a resolver e queria ver se me podiam dar umas luzes visto que se trata do mesmo assunto que abri este tópico. Então neste caso tenho uma variável que vem de dentro do form que passa o $email para poder apagar o utilizador, que se chama delID, então eu atribui ao $email o delID, passo a explicar: $email=$_POST['delID']; Foi assim como eu coloquei, então o notice que me dá é que a variável delID não está definida, mas para eu a poder definir de outra forma depois não me altera o botão, neste caso não apaga o utilizador.. Alguma ideia ? **Voltei a colocar o código em comentário onde acontece o problema. <?php session_start() ?> <?php if($_SESSION["mail"]=="A"){ echo $_SESSION["nome"]; echo"<br><form action='login_success.php' method='POST'><input type='submit' name='sair' value='Sair'></button></form>"; } else{ echo "<script>alert('Tem de ser administrador para ter acesso')</script>"; echo "<meta http-equiv='refresh' content='0;URL=index.php'>"; } ?> <html> <body background="./images/fundo.jpg"> <?php include("conn.php"); $sql="select * from utilizador"; $resultado=mysql_query($sql,$ligacao); echo "<table align='center' border='2'>"; echo "<td>Email</td><td>Nome</td><td>Apelido</td><td>Morada</td><td>Código Postal</td><td>Localidade</td><td>Telemovél</td><td>Tipo Utilizador</td><td>Estado User</td>"; if($resultado){ while($registo=mysql_fetch_array($resultado)){ $email=$registo['email']; $nom=$registo['nome']; $apelido=$registo['apelido']; $morada=$registo['morada']; $postal=$registo['cod_postal']; $local=$registo['localidade']; $telm=$registo['telm']; $tipo=$registo['tipo_user']; $estado=$registo['estado_user']; echo "<tr><td>$email</td><td>$nom</td><td>$apelido</td><td>$morada</td><td>$postal</td><td>$local</td><td>$telm</td><td>$tipo</td><td>$estado</td> <td><form action='' method='POST'><button type='submit' value='$email' name='delID'><img src='./images/del.png'></button></form></td> <td><form action='edit_user.php' method='POST'><button type='submit' value='$email' name='editID'><img src='./images/edit.png'></button></form></td>"; } echo "<td><form action='inser_user.php' method='POST'><button type='submit' value='$email' name='inserID'><img src='./images/add_user.png'/></button></td></form></tr>"; echo "</table>"; }else echo "Sem resultados"; //$email=$_POST['delID']; //if(isset($email)){ $sql="delete from utilizador where email='$email'"; $resultado=mysql_query($sql,$ligacao); echo "<meta http-equiv='refresh' content='0;URL=user_admin.php'>"; } echo"<form action='admin.php' method='POST'><input type='submit' value='Voltar' name='home'></button></form>"; ?> </body> </html>
bioshock Posted June 14, 2013 at 10:48 AM Report #512867 Posted June 14, 2013 at 10:48 AM É normal que te diga que não está definido. Estás a tentar aceder a um valor que está definido dentro de uma condição (if -> then -> else).
c.orelhas Posted June 14, 2013 at 12:17 PM Author Report #512909 Posted June 14, 2013 at 12:17 PM Que sugeres que faça ? Não tou a ver que alternativa.
bioshock Posted June 14, 2013 at 12:36 PM Report #512910 Posted June 14, 2013 at 12:36 PM Não sei qual a lógica que queres implementar... pelo que isso tem a tua linha de pensamento. Neste momento tu tens o seguinte algoritmo: Se resultados > 0 Enquanto houverem registos variável 'email' = valor (...) <button type='submit' value='$email' name='delID'> Finaliza Ciclo Se não variável 'email' = 'dellD' Finaliza Condição
c.orelhas Posted June 14, 2013 at 12:54 PM Author Report #512912 Posted June 14, 2013 at 12:54 PM Somente irá fazer com que ao carregar no botão de eliminar, apague esse utilizador por completo da base de dados.
bioshock Posted June 14, 2013 at 01:24 PM Report #512916 Posted June 14, 2013 at 01:24 PM Tu não precisas daquela condição, pelo que me parece. E também é desnecessário tantos forms, mas esquecendo essa parte, nesta tua linha: <form action='' method='POST'><button type='submit' value='$email' name='delID'> Podes fazer como fizeste para os outros. <form action='delete_user.php' method='POST'><button type='submit' value='$email' name='delID'>
c.orelhas Posted June 14, 2013 at 02:05 PM Author Report #512925 Posted June 14, 2013 at 02:05 PM É o metodo que agora adoptei, utilizei então um novo documento e estou agora a fazer da melhor forma para o poder eliminar 🙂
c.orelhas Posted June 17, 2013 at 10:29 AM Author Report #513321 Posted June 17, 2013 at 10:29 AM (edited) Ora boas pessoal, após já ter resolvido todos os outros problemas ficou a faltar apenas este que não sei como o fazer. O problema é o seguinte: Tenho uma variável definida como $divida que é a responsável por indicar o valor total da compra que o cliente terá de pagar, no entanto está definida dentro de um while mas que depois ao utilizar dentro de um if apresenta sempre o notice como não estando inicializada e não tou a ver forma de poder inicializar a variável visto não vir de outro lado a não ser dentro do carrinho.php. Outro deles é através do del que está definido da seguinte forma: $id_produto=$_POST['del']; e irá fazer com que possa eliminar o produto daquela sessão de utilizador e não do carrinho em geral. PS: Está novamente em comentário o que é o problema. <?php session_start() ?> <?php if($_SESSION["nome"]){ echo $_SESSION["nome"]; echo"<br><form action='login_success.php' method='POST'><input type='submit' name='sair' value='Sair'></button></form>";} ?> <html> <body background="./images/fundo.jpg"> <?php include("conn.php"); $sessao=$_SESSION["mail"]; //$divida=$_POST["divida"]; $sql="select * from carrinho where sessao='$sessao'"; $resultado=mysql_query($sql,$ligacao); echo "<center><table border='2'>"; echo "<td>Quantidade</td><td>Total do Produto</td></center>"; while($registo=mysql_fetch_array($resultado)){ $id_produto=$registo['id_produto']; $quantidade=$registo['quantidade']; $total=$registo['total']; [u]$divida=$divida+$total;[/u] echo "<tr><td>$quantidade</td><td>$total €</td>"; echo "<td><form action='' method='POST'><button type='submit' value='$id_produto' [u]name='delID'[/u]><img src='./images/del_carrinho.png'/></button></td></tr>"; echo "</form>"; } [u]//if(($divida!='')){[/u] echo "<tr bgcolor='FFFFFF'><td>Total a Pagar:</td><td>$divida €</td>"; echo "</table>"; } [u]//else if(($divida=='')){[/u] echo "</table>"; echo "<br>Não tem produtos no carrinho"; } [u]//$id_produto=$_POST['delID'];[/u] if(isset($sessao)){ $sql="delete from carrinho where id_produto='$id_produto'"; $resultado=mysql_query($sql,$ligacao); } ?> <br><button type="button" onclick="location.href='prod.php'">Produtos</button><br> </body> </html> Edited June 17, 2013 at 10:31 AM by c.orelhas
Devexz Posted June 17, 2013 at 12:54 PM Report #513357 Posted June 17, 2013 at 12:54 PM (edited) eu acho que neste caso podes fazer isto: $divida = 0; Antes do ciclo while, podes definir o valor da dívida com 0, e assim ir somando cada "total" do produto. E para isso o php teria de saber o valor inicial. Edited June 19, 2013 at 07:55 PM by yoda Contador de calorias: caloriaspordia.com
c.orelhas Posted June 18, 2013 at 10:27 AM Author Report #513573 Posted June 18, 2013 at 10:27 AM (edited) Inicializar a 0 não será certamente a melhor solução, pois assim apenas adiciona a quantidade de produtos e não o valor total da compra. <?php session_start() ?> <?php if($_SESSION["nome"]){ echo $_SESSION["nome"]; echo"<br><form action='login_success.php' method='POST'><input type='submit' name='sair' value='Sair'></button></form>";} ?> <html> <body background="./images/fundo.jpg"> <?php include("conn.php"); $sessao=$_SESSION["mail"]; $sql="select * from carrinho where sessao='$sessao'"; $resultado=mysql_query($sql,$ligacao); echo "<center><table border='2'>"; echo "<td>Quantidade</td><td>Total do Produto</td></center>"; $divida = 0; while($registo=mysql_fetch_array($resultado)){ $id_produto=$registo['id_produto']; $quantidade=$registo['quantidade']; $total=$registo['total']; $divida=$divida+$total; echo "<tr><td>$quantidade</td><td>$total €</td>"; echo "<td><form action='' method='POST'><button type='submit' value='$id_produto' name='del'><img src='./images/del_carrinho.png'/></button></td></tr>"; echo "</form>"; } if(($divida!='')){ echo "<tr bgcolor='FFFFFF'><td>Total a Pagar:</td><td>$divida €</td>"; echo "</table>"; } else if(($divida=='')){ echo "</table>"; echo "<br>Não tem produtos no carrinho"; } ?> <br><button type="button" onclick="location.href='prod.php'">Produtos</button><br> </body> </html> Ai está como eu tenho o código. Edited June 19, 2013 at 07:55 PM by yoda
Devexz Posted June 19, 2013 at 07:44 PM Report #513891 Posted June 19, 2013 at 07:44 PM $registo['total']; Isto é o que? É a quantidade de produtos ou o preço total do produto? Se somarmos todos os $registo['total'] temos o total da compra? Contador de calorias: caloriaspordia.com
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now