Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Mordred123

editar apenas uma linha do bd (php)

Recommended Posts

olá pessoal estou com um probleminha

sou novo em php e estou fazendo um site onde ja estou na parte de painel Administrativo, meu problema na verdade não é nenhum erro eu criei um esquema de edição de usuario cadastrado

 

usuario_cad.php

<form action="usuario_mod.php" method="get" id="altera">
  <?php
	include("con.php");
	$busca = mysql_query("SELECT * FROM cad_bd ORDER BY id ASC");
	if (mysql_num_rows($busca))
	{
		echo '<ul>';
		while ($resultado = mysql_fetch_array($busca))
		{
			extract($resultado);
			echo '<li>';
			echo '<fieldset title="'.$id.'">';
			echo '<input name="id" type="hidden" value="'.$id.'" />';
			echo '<input type="text" name="login" value="'.$login.'" />';
			echo '<input type="text" name="nome"  value="'.$nome.'"/>';
			echo '<input type="text" name="email"  value="'.$email.'"/>';
			echo '<input type="text" name="senha"  value="'.$senha.'"/>';
			echo '<input type="text" name="nivel"  value="'.$nivel.'"/>';			

			echo '<a href=excluir.php?id='.$id.'><img src="delete.png" alt="" width="16" height="16" /></a>';

			echo '<input type=submit value="Atualizar">'; /*AQUI USEI O INPUT COM UM BOTÃO (DEVERIA USAR UMA IMAGEM COMO FIZ LOGO A CIMA?) */

			echo '</fieldset>';
			echo '</li>';
		}			
		echo '</ul>';
	}
	
?>
</form>
/*esse é o usuario_mod.php*/
<?php  
 include "conexao.php";
$id =$_GET['id'];
$login =$_GET['login'];
$nome = $_GET['nome'];
$email = $_GET['email'];
$senha = $_GET['senha'];
$nivel = $_GET['nivel'];
$sql= mysql_query("UPDATE cadastro_bd SET login='$login', nome='$nome', email='$email', senha='$senha', nivel= '$nivel' WHERE id='$id'");

echo "<pre>";
print_r($_GET);
?>

 

ele esta editando perfeitamente mais oproblema é que ele editar apenas o ultimo usuário cadastrado .

obs :coloquei o

echo "<pre>";
print_r($_GET);

ele me retorna os valores do ultimo usuário, quero editar apenas o usuário que eu escolher como faço isso ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Envie os dados do formulário via $_POST cara. '-'

acabei de modificar para post mais mesmo assim continua editando apenas o ultimo usuario cadastrado '.'

 

ficou assim

 <form action="usuario_mod.php.php" method="post" id="altera">
  <?php
	include("conexao.php");
	$busca = mysql_query("SELECT * FROM cad_bd ORDER BY id ASC");
	if (mysql_num_rows($busca))
	{
		echo '<ul>'; 
		while ($resultado = mysql_fetch_array($busca))
		{
			extract($resultado);
			echo '<li>';
			echo '<fieldset title="'.$id.'">';
			echo '<input name="id" type="hidden" value="'.$id.'" />';
			echo '<input type="text" name="login" value="'.$login.'" />';
			echo '<input type="text" name="nome"  value="'.$nome.'"/>';
			echo '<input type="text" name="email"  value="'.$email.'"/>';
			echo '<input type="text" name="senha"  value="'.$senha.'"/>';
			echo '<input type="text" name="nivel"  value="'.$nivel.'"/>';			
			echo '<a href=excluir.php?id='.$id.'><img src="delete.png" alt="" width="16" height="16" /></a>';
			echo '<input type=submit value="Atualizar">';
			echo '</fieldset>';
			echo '</li>';
		}			
		echo '</ul>';
	}
	
?>
</form>

e

<?php  
 include "con.php";
$id =$_POST['id']));
$login =$_POST['login'];
$nome =$_POST['nome'];
$email =$_POST['email'];
$senha =$_POST['senha'];
$nivel = $_POST['nivel'];
$sql= mysql_query("UPDATE cadastro_bd SET login='$login', nome='$nome', email='$email', senha='$senha', nivel= '$nivel' WHERE id='$id'");

echo "<pre>";
print_r($_POST);
?>

 

alguem?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque tem estas parenteses no $id?

 

$id =$_POST['id']));

 

Troque por

 

$id = $_POST['id'];

 

Outra coisa, o ID que está vindo no $_POST é o certo? ;-) Pode parecer uma coisa boba, mas reveja isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se você quiser editar todos os usuários é so você tirar o where

WHERE id='$id'

do geito que ta você só vai editar o usuário com $id, mas repare que você está pegando de forma errada

$id =$_POST['id']));


Certa:

$id = $_POST['id'];

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque tem estas parenteses no $id?

 

$id =$_POST['id']));

 

Troque por

 

$id = $_POST['id'];

 

Outra coisa, o ID que está vindo no $_POST é o certo? ;-) Pode parecer uma coisa boba, mas reveja isso.

vlw cara esse erro eu nem percebi =) mais continua a mesma coisa ele edita apenas o ultimo usuário cadastrado

 

 

se você quiser editar todos os usuários é so você tirar o where

WHERE id='$id'

do geito que ta você só vai editar o usuário com $id, mas repare que você está pegando de forma errada

$id =$_POST['id']));

 

Certa:

$id = $_POST['id'];

acabei de concertar e n quero editar todos de uma vez quero editar apenas o que eu escolher

 

A , outra coisa que percebi é que quando eu mudo o botão submit para uma imagem ele envia as informações do id selecionado mais n modifica ..... espero que estejam me entendendo =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

então você já achou o problema!
você está usando o mesmo for pra todos os usuários

eu resolvi reorganizar seu script:

 

<?php
	include("conexao.php");
	$busca = mysql_query("SELECT * FROM cad_bd ORDER BY id ASC");
	
	if (mysql_num_rows($busca)){
		
		while ($resultado = mysql_fetch_array($busca)){
			extract($resultado);
			?>
            <li>
            <form action="usuario_mod.php.php" method="post" id="altera">
				<fieldset title="'.$id.'">
				<input name="id" type="hidden" value="'<?php echo $id; ?>" />
				<input type="text" name="login" value="<?php echo $login; ?>" />
				<input type="text" name="nome"  value="<?php echo $nome; ?>"/>
				<input type="text" name="email"  value="<?php echo $email; ?>"/>
				<input type="text" name="senha"  value="<?php echo $senha; ?>"/>
				<input type="text" name="nivel"  value="<?php echo $nivel; ?>"/>		
				<a href="excluir.php?id=<?php echo $id; ?>"><img src="delete.png" alt="" width="16" height="16" /></a>
				<input type=submit value="Atualizar">
				</fieldset>
            </form>
			</li>		
       <?php }			
	}
	
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

então você já achou o problema!

você está usando o mesmo for pra todos os usuários

eu resolvi reorganizar seu script:

 

<?php
	include("conexao.php");
	$busca = mysql_query("SELECT * FROM cad_bd ORDER BY id ASC");
	
	if (mysql_num_rows($busca)){
		
		while ($resultado = mysql_fetch_array($busca)){
			extract($resultado);
			?>
            <li>
            <form action="usuario_mod.php.php" method="post" id="altera">
				<fieldset title="'.$id.'">
				<input name="id" type="hidden" value="'<?php echo $id; ?>" />
				<input type="text" name="login" value="<?php echo $login; ?>" />
				<input type="text" name="nome"  value="<?php echo $nome; ?>"/>
				<input type="text" name="email"  value="<?php echo $email; ?>"/>
				<input type="text" name="senha"  value="<?php echo $senha; ?>"/>
				<input type="text" name="nivel"  value="<?php echo $nivel; ?>"/>		
				<a href="excluir.php?id=<?php echo $id; ?>"><img src="delete.png" alt="" width="16" height="16" /></a>
				<input type=submit value="Atualizar">
				</fieldset>
            </form>
			</li>		
       <?php }			
	}
	
?>

cara agora o problema é que não modifica =/ kkkk não ta dando nenhum erro mais ele n modifica ele aparece os valores que eu digitei mais ele n modifica =/ agora resolveu o problema do id agora ta indicando o valor do id que eu clico =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum...

complicado não :)

 

o include/require está certo?

<?php  
require_once('conexao.php');
$id    = $_POST['id'];
$login = $_POST['login'];
$nome  = $_POST['nome'];
$email = $_POST['email'];
$senha = $_POST['senha'];
$nivel = $_POST['nivel'];
$query = "UPDATE cadastro_bd SET login = '$login', nome = '$nome', email = '$email', senha = '$senha', nivel = '$nivel' WHERE id = '$id'";
$sql = mysql_query($query)or die(mysql_error());
?>

isso vai retornar caso, ocorra algum erro

$sql = mysql_query($query)or die(mysql_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

hum...

complicado não :)

 

o include/require está certo?

<?php  
require_once('conexao.php');
$id    = $_POST['id'];
$login = $_POST['login'];
$nome  = $_POST['nome'];
$email = $_POST['email'];
$senha = $_POST['senha'];
$nivel = $_POST['nivel'];
$query = "UPDATE cadastro_bd SET login = '$login', nome = '$nome', email = '$email', senha = '$senha', nivel = '$nivel' WHERE id = '$id'";
$sql = mysql_query($query)or die(mysql_error());
?>

isso vai retornar caso, ocorra algum erro

$sql = mysql_query($query)or die(mysql_error());

kkkkk verdade so comigo q isso acontece kkk brinks aqui está o erro q re:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1'' at line 1

Compartilhar este post


Link para o post
Compartilhar em outros sites






$sql = mysql_query("UPDATE cad_bd SET login='$login', nome='$nome', email='$email', senha='$senha', nivel= '$nivel' WHERE id='$id'") or die(mysql_error());

 

EDIT:

 

disculpe minha burrice hoje :)

eu alterei o script e testei localmente, agora está funcionando perfeitamente!

 

o erro é bem besta eu coloquei um ' na frente do id no form




<input name="id" type="hidden" value="'<?php echo $id; ?>" />
o certo é



<input name="id" type="hidden" value="<?php echo $id; ?>" />

por isso, eu meio que fazia um SQL_injection no próprio script

 

 

código final:




<?php
	include("conexao.php");
	$busca = mysql_query("SELECT * FROM cad_bd ORDER BY id ASC");
	
	if (mysql_num_rows($busca)){
		
		while ($resultado = mysql_fetch_array($busca)){
			extract($resultado);
			?>
            <li>
            <form action="usuario_mod.php.php" method="post" id="altera">
				<fieldset title="<?php echo $id;?>">
				<input name="id" type="hidden" value="<?php echo $id; ?>" />
				<input type="text" name="login" value="<?php echo $login; ?>" />
				<input type="text" name="nome"  value="<?php echo $nome; ?>"/>
				<input type="text" name="email"  value="<?php echo $email; ?>"/>
				<input type="text" name="senha"  value="<?php echo $senha; ?>"/>
				<input type="text" name="nivel"  value="<?php echo $nivel; ?>"/>		
				<a href="excluir.php?id=<?php echo $id; ?>"><img src="delete.png" alt="" width="16" height="16" /></a>
				<input type=submit value="Atualizar">
				</fieldset>
            </form>
			</li>		
       <?php }			
	}
	
?>
<?php  
require_once('conexao.php');
$id    = addslashes(mysql_real_escape_string($_POST['id']));
$login = addslashes(mysql_real_escape_string($_POST['login']));
$nome  = addslashes(mysql_real_escape_string($_POST['nome']));
$email = addslashes(mysql_real_escape_string($_POST['email']));
$senha = addslashes(mysql_real_escape_string($_POST['senha']));
$nivel = addslashes(mysql_real_escape_string($_POST['nivel']));
$sql = mysql_query("UPDATE cad_bd SET login='$login', nome='$nome', email='$email', senha='$senha', nivel='$nivel' WHERE id='$id'")or die(mysql_error());
?>

eu coloquei uma anti-sql injection também :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

pera

 

 

 

 

$sql = mysql_query("UPDATE cad_bd SET login='$login', nome='$nome', email='$email', senha='$senha', nivel= '$nivel' WHERE id='$id'") or die(mysql_error());

 

EDIT:

 

disculpe minha burrice hoje :)

eu alterei o script e testei localmente, agora está funcionando perfeitamente!

 

o erro é bem besta eu coloquei um ' na frente do id no form

<input name="id" type="hidden" value="'<?php echo $id; ?>" />

o certo é

<input name="id" type="hidden" value="<?php echo $id; ?>" />

por isso, eu meio que fazia um SQL_injection no próprio script

 

 

código final:

<?php	include("conexao.php");	$busca = mysql_query("SELECT * FROM cad_bd ORDER BY id ASC");		if (mysql_num_rows($busca)){				while ($resultado = mysql_fetch_array($busca)){			extract($resultado);			?>            <li>            <form action="usuario_mod.php.php" method="post" id="altera">				<fieldset title="<?php echo $id;?>">				<input name="id" type="hidden" value="<?php echo $id; ?>" />				<input type="text" name="login" value="<?php echo $login; ?>" />				<input type="text" name="nome"  value="<?php echo $nome; ?>"/>				<input type="text" name="email"  value="<?php echo $email; ?>"/>				<input type="text" name="senha"  value="<?php echo $senha; ?>"/>				<input type="text" name="nivel"  value="<?php echo $nivel; ?>"/>						<a href="excluir.php?id=<?php echo $id; ?>"><img src="delete.png" alt="" width="16" height="16" /></a>				<input type=submit value="Atualizar">				</fieldset>            </form>			</li>		       <?php }				}	?>

<?php  require_once('conexao.php');$id    = addslashes(mysql_real_escape_string($_POST['id']));$login = addslashes(mysql_real_escape_string($_POST['login']));$nome  = addslashes(mysql_real_escape_string($_POST['nome']));$email = addslashes(mysql_real_escape_string($_POST['email']));$senha = addslashes(mysql_real_escape_string($_POST['senha']));$nivel = addslashes(mysql_real_escape_string($_POST['nivel']));$sql = mysql_query("UPDATE cad_bd SET login='$login', nome='$nome', email='$email', senha='$senha', nivel='$nivel' WHERE id='$id'")or die(mysql_error());?>

eu coloquei uma anti-sql injection também :)

 

 

aweeeeeeeeeeeeeeeeeee cara deu certo agoraaaaaaaaaa vlw mesmo kkkkk q alegria cara to a 2 dias pesquisando isso cara vlw mesmo tu é fera

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.