Ljrbrasil 0 Denunciar post Postado Junho 5, 2015 pessoal alguém pode me dizer onde é o erro?? quando edito uma linha ele salva editando todas as linhas do BD. <?php include("conecta.php"); $conexao = @mysql_connect($hostname, $username, $senha) or die("Nao foi possivel conectar no servidor MySQL. Erro: " . mysql_error()); //pegando variáveis $id = $_POST['id']; $razao = $_POST ['razao']; $cnpj = $_POST ['cnpj']; $checkout = $_POST ['checkout']; $top = $_POST ['top']; $pgondola = $_POST ['pgondola']; $recchb = $_POST ['recchb']; $promotor = $_POST ['promotor']; $data = $_POST ['data']; $hora = strftime('%H:%M:S'); $observacao = $_POST ['observacao']; $produto1 = $_POST ['produto1']; $produto2 = $_POST ['produto2']; $produto3 = $_POST ['produto3']; $produto4 = $_POST ['produto4']; $produto5 = $_POST ['produto5']; $produto6 = $_POST ['produto6']; $produto7 = $_POST ['produto7']; $produto8 = $_POST ['produto8']; $produto9 = $_POST ['produto9']; $produto10 = $_POST ['produto10']; $produto11 = $_POST ['produto11']; $produto12 = $_POST ['produto12']; $produto13 = $_POST ['produto13']; $produto14 = $_POST ['produto14']; $produto15 = $_POST ['produto15']; $produto16 = $_POST ['produto16']; $produto17 = $_POST ['produto17']; $produto18 = $_POST ['produto18']; if(!$conexao) mysql_select_db($banco, $conexao) or die("Nao foi possivel usar o banco de dados. Erro: " . mysql_error()); $banco = mysql_select_db("base"); $sql = "UPDATE base SET razao='$razao', cnpj='$cnpj', checkout='$checkout', top='$top', pgondola='$pgondola', recchb='$recchb', promotor='$promotor', data='$data', hora='$hora', observacao='$observacao', produto1='$produto1', produto2='$produto2', produto3='$produto3', produto4='$produto4', produto5='$produto5', produto6='$produto6', produto7='$produto7', produto8='$produto8', produto9='$produto9', produto10='$produto10', produto11='$produto11', produto12='$produto12', produto13='$produto13', produto14='$produto14', produto15='$produto15', produto16='$produto16', produto17='$produto17', produto18='$produto18'; WHERE id = '{$_GET['id']}'"; //echo "<pre>"; echo $sql; exit(); $resultado = mysql_query($sql); if(!$resultado) die ("Não foi possível realizar a consulta ao banco de dados"); echo "<script>alert('Venda Editada com Sucesso')</script> <script>window.location='listar.php';</script>"; ?> Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Junho 5, 2015 Você colocou todos os campos no UPDATE. Se quiser editar apenas alguns, coloque apenas os que deseja alterar ps: Seu sistema está vulnerável a SQL Injection, com esse $_GET['id'] direto na query ps 2: funções mysql_* estão obsoletas desde o PHP 5.5 e serão removidas do PHP em breve. Prefira usar MySQLi ou PDO. Veja mais aqui: http://www.ultimatephp.com.br/php-por-que-nao-utilizar-funcoes-mysql Compartilhar este post Link para o post Compartilhar em outros sites
Ljrbrasil 0 Denunciar post Postado Junho 5, 2015 Beraldo Mas tipo eu não sei exatamente quais os campos o usuário vai editar. Como faço este ajuste? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Junho 5, 2015 Construa a SQL dinamicamente. Se o valor digitado for diferente de vazio (pode usar a função empty), adicione-o à query Compartilhar este post Link para o post Compartilhar em outros sites
Ljrbrasil 0 Denunciar post Postado Junho 5, 2015 Desculpe, Sou leigo ainda em programação. poderia me dar um exemplo? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Junho 5, 2015 Um simples exemplo: $campos = [ 'nome' => 'novo nome', 'email' => '', // vazio == não alterado 'telefone' => '', 'cidade' => 'nova_cidade' ]; $alterados = []; foreach ( $campos as $campo => $valor ) { if ( ! empty( $valor ) ) { $alterados[] = sprintf( "%s = '%s'", $campo, $valor ); } } $sql = "UPDATE tabela SET " . implode( ', ', $alterados ); var_dump( $sql ); Saída: string(60) "UPDATE tabela SET nome = 'novo nome', cidade = 'nova_cidade'" Compartilhar este post Link para o post Compartilhar em outros sites