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

Umbus

Sem erro mas n edita

17 mensagens neste tópico

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";
	}

}
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu corri o teu codigo e pelo menos tive a msg do utilizador alterado

Como chamas a função editarutilizador ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora