Jump to content
c.orelhas

Carregar variáveis dos inputs

Recommended Posts

c.orelhas

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:

varb.jpg

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>

Share this post


Link to post
Share on other sites
HappyHippyHippo

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

Share this post


Link to post
Share on other sites
c.orelhas

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 ?

Share this post


Link to post
Share on other sites
c.orelhas

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>

Share this post


Link to post
Share on other sites
bioshock

É 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).

Share this post


Link to post
Share on other sites
bioshock

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

Share this post


Link to post
Share on other sites
c.orelhas

Somente irá fazer com que ao carregar no botão de eliminar, apague esse utilizador por completo da base de dados.

Share this post


Link to post
Share on other sites
bioshock

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'>

Share this post


Link to post
Share on other sites
c.orelhas

É o metodo que agora adoptei, utilizei então um novo documento e estou agora a fazer da melhor forma para o poder eliminar :)

Share this post


Link to post
Share on other sites
c.orelhas

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 by c.orelhas

Share this post


Link to post
Share on other sites
Devexz

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 by yoda

Contador de calorias: caloriaspordia.com

Share this post


Link to post
Share on other sites
c.orelhas

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 by yoda

Share this post


Link to post
Share on other sites
Devexz

$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

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.