Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
Umbus

Sem erro mas n edita

Recommended Posts

Umbus

Não percebo o que esta mal aqui, não consigo editar, mas não dá erro :S. O que fiz de mal?

	function editarutilizador($id)
{
global $ligar;
$enviar = $_POST[enviar];

if(!$enviar)
	{
	//query string
	$query = "SELECT utilizador, mail, password, admin FROM lusoanime_utilizador WHERE id='$id'";

	//store query results in a new variable
	$result = mysql_query($query, $ligar) or die ("Erro na query: $query. " .mysql_error());

	//if there is a record for the query
       		if(mysql_num_rows($result) >0)
		{
		//turn it into an object
       		$row = mysql_fetch_object($result);

		//print form with values pre-filled
        		?>
<div class="formholder">
<p class="titulo">editar Utilizador</p>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
         Nome/Nick:
         <input type="text" name= "Nome" size="20" value="<?php echo $row->utilizador; ?>"><BR>
         E-Mail:
         <input type="text" name= "mail" size="20" value="<?php echo $row->mail; ?>"> <BR>
         Password:
         <input  type="password" name= "pass1" size="20" > <BR>
         Repetir Password:
         <input  type="password" name= "pass2" size="20"> <BR>
         Tipo de Utilizador:
         <input type="radio" name=admin value="Sim" >
         Administrador
         <input type="radio" name=admin value="Nao">
         Utilizador Normal<br>
	<input name="enviar" type="submit" value="enviar" />
</form>   <br>
<a href=javascript:window.history.go(-1)><font color=#FFFFFF>Voltar</font></a><br>
<a href="administrar.php"><font color=#FFFFFF>Menu Principal</font></a>
</div>
       		<?php
          echo "\n";
       		}
	//if there is not a record for the query
	else
		{
       		echo "<p>Utilizador não encontrado!</p>";
       		}
  	}
//process form
else
	{
		$nome = $_POST[Nome];
	$mail = $_POST[mail];
	$password1 = md5($_POST[pass1]);
	$password2 = md5($_POST[pass2]);
	$admin = $_POST[admin];

        if($password1==$password2)
			{
				$query = "UPDATE lusoanime_utilizador SET utilizador='$nome', mail='$mail', password='$password1', admin='$admin' WHERE id = '$id'";

		//store query result in a variable
       		$result = mysql_query($query, $ligar) or die ("Erro na query: $query. " .mysql_error());

	//print result
	echo "Utilizador Alterado!";
	echo "\n";
	echo "<a href=\"administrar.php\"><font color=#FFFFFF>Menu Principal</font></a>";
	echo "\n";
	}

}
}


Eu sou eu e eu sou aquele que sou eu...

Share this post


Link to post
Share on other sites
Nazgulled

Para além dos POST estar mal, essa é a única cena que uma pessoa vê assim de repente. Se queres ser ajudado o mais rápido possível, convem no minimo explicares o que o código faz e qual é o problema/erro.

Share this post


Link to post
Share on other sites
kingless

experimenta mudar o  if(!$enviar) por if(!isset($enviar))

É melhor assim

if(!empty($enviar)) { 

porque !isset($enviar)  retorna TRUE mesmo que a var $enviar estiver vazia por exemplo

$enviar = '';

retorna TRUE

Share this post


Link to post
Share on other sites
Umbus

Mesmo assim não deve ser o problema, porque continua a não funcionar :S. Pelo que vi o problema esta a partir do:

<?php

          echo "\n";

      }

//if there is not a record for the query

else

Porque a partir dai não me aparece nada do código :S. Nem mesmo se tiver um erro por la :P .


Eu sou eu e eu sou aquele que sou eu...

Share this post


Link to post
Share on other sites
Umbus

Vou explicar o código passo a passo :P :

	function editarutilizador($id)
{
global $ligar;
$enviar = $_POST[enviar];
//Se a variavel enviar estar vazia mostra o formulario
if(!$enviar)
	{
	//Aqui ele vai buscar os dados a base de dados por dois motivos, 1 é porque quero colocar os dados antigos logo no formulário, o 2 motivo é para ele saber qual vai ser a base de dados a editar
	$query = "SELECT utilizador, mail, password, admin FROM lusoanime_utilizador WHERE id='$id'";
	$result = mysql_query($query, $ligar) or die ("Erro na query: $query. " .mysql_error());

      //Aqui o que acontece é o seguinte se o id estiver correcto ele mostra o forumulario, caso contrario o via para o else para dar erro, que não existe o utilizador
         if(mysql_num_rows($result) >0)
		{

       		$row = mysql_fetch_object($result);
        		?>
//o formolario
<div class="formholder">
<p class="titulo">editar Utilizador</p>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
         Nome/Nick:
         <input type="text" name= "Nome" size="20" value="<?php echo $row->utilizador; ?>"><BR>
         E-Mail:
         <input type="text" name= "mail" size="20" value="<?php echo $row->mail; ?>"> <BR>
         Password:
         <input  type="password" name= "pass1" size="20" > <BR>
         Repetir Password:
         <input  type="password" name= "pass2" size="20"> <BR>
         Tipo de Utilizador:
         <input type="radio" name=admin value="Sim" >
         Administrador
         <input type="radio" name=admin value="Nao">
         Utilizador Normal<br>
	<input name="enviar" type="submit" value="enviar" />
</form>   <br>
<a href=javascript:window.history.go(-1)><font color=#FFFFFF>Voltar</font></a><br>
<a href="administrar.php"><font color=#FFFFFF>Menu Principal</font></a>
</div>
       		<?php
       		}
	else
		{
          echo "<p>Utilizador não encontrado!</p>";
       		}
   	}
    //Aqui o botão envio foi pressionado, assim sendo ele ja pode fazer o update a base de dados
else
	{
//variáveis que usei
		$nome = $_POST[Nome];
	$mail = $_POST[mail];
	$password1 = md5($_POST[pass1]);
	$password2 = md5($_POST[pass2]);
	$admin = $_POST[admin];

//caso a 1 password seja igual a 2 ele faz o update, se não ser ele da erro
        if($password1==$password2)
			{
//faz o update a bd
    	$query = "UPDATE lusoanime_utilizador SET utilizador='$nome', mail='$mail', password='$password1', admin='$admin' WHERE id = '$id'";
//para o caso de erros fica aqui o resultado
       		$result = mysql_query($query, $ligar) or die ("Erro na query: $query. " .mysql_error());

//depois de a bd com o update aparece uma mensagem que esta tudo em ordem
	echo "Utilizador Alterado!";
	echo "\n";
	echo "<a href=\"administrar.php\"><font color=#FFFFFF>Menu Principal</font></a>";
	echo "\n";
	}
     else
     {
       		echo "A password não é a mesma!";
       		}
}
}

Edit: eu sempre utilizei o post sem '' e nunca deu erros e funciona sempre tudo bem :S. Acham que isso e assim tão relevante?


Eu sou eu e eu sou aquele que sou eu...

Share this post


Link to post
Share on other sites
kingless

No inicio do código põe error_reporting(E_ALL); e posta aqui os erros que aparecerem assim facilitas a vida  :P

Share this post


Link to post
Share on other sites
Umbus

Notice: Use of undefined constant enviar - assumed 'enviar' in /home/ilusan/public_html/LusoAnime/administrar.php on line 188

Notice: Undefined index: enviar in /home/ilusan/public_html/LusoAnime/administrar.php on line 188

linha 188: $enviar = $_POST[enviar];

MAs ja fiz como disseram e não funciona na mesma :S


Eu sou eu e eu sou aquele que sou eu...

Share this post


Link to post
Share on other sites
Sven

faz um var_dump($_POST) e ve la se tens o envias

não tenho a certeza mas um input  do tipo button submit ou reset  são são enviados no post, não faz sentido que o sejam

tenta por um input hidden talvez funcione

e deves e tens que por as '' no $_POST porque é um array em que a key é um string, logo tens que usar as ''

Share this post


Link to post
Share on other sites
Umbus

Não me leves a mal, mas não percebi nada, podes fazer isso e esplicar o que mudas-te? XD.


Eu sou eu e eu sou aquele que sou eu...

Share this post


Link to post
Share on other sites
Umbus

Mas assim não aparece o botão :P . e continua a dar o mesmo erro :S

E não da para fazer o mesmo de outra maneira? Eu so aprendi assim, mas se der de outra maneira e outra maneira que aprendo XD.


Eu sou eu e eu sou aquele que sou eu...

Share this post


Link to post
Share on other sites
Umbus

A partir de uma pagina onde vejo todos os utilizadores que tenho:

  <a href="<?php echo "{$_SERVER['PHP_SELF']}?action=editarutilizador&id={$registo['id']}"?>">

            <img src="utilizadoreditar.gif" align="center" border="0">

É que ao clicar no botao enviar em vez de aparecer alguma mensagem vai ao index do administrador :S


Eu sou eu e eu sou aquele que sou eu...

Share this post


Link to post
Share on other sites
Umbus

Prontos ao fim de dar tanto tempo com a cabeça ver se conseguía fazer com que isto funcionasse, já consegui ;)


Eu sou eu e eu sou aquele que sou eu...

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
Sign in to follow this  

×

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.