Ir para conteúdo
Fórum Script Brasil
  • 0

Apagar dado do mySQL sem chamar outra página


duffbeer

Pergunta

Pessoal,

Não achei tópico que respondesse essa questão, por isso criei um.

Criei um formulário para inserir dados no meu BD e na sequência mostrar os últimos dados inseridos.

Ao mostrar as linhas, coloquei um botão (form) para deletar aquela linha específica, porém quando o aperto, ele deleta todas as linhas e não apenas aquela. Segue código:

mysql_select_db($database_config, $config);
$query_Recordset1 = "SELECT nome, categoria, descricao, id FROM transacoes ORDER BY `id` DESC";
$query_limit_Recordset1 = sprintf("%s LIMIT %d, %d", $query_Recordset1, $startRow_Recordset1, $maxRows_Recordset1);
$Recordset1 = mysql_query($query_limit_Recordset1, $config) or die(mysql_error());
$row_Recordset1 = mysql_fetch_array($Recordset1);
.
.
.
/*leitura dos últimos dados inseridos*/
<table align="center" border="1" cellpadding="1" cellspacing="1">
  <tr>
    <td><center>NOME</center></td>
    <td><center>CATEGORIA</center></td>
    <td><center>DESCRIÇÃO</center></td>
  </tr>
  <?php do { ?>
        <?php $id = $row_Recordset1['id']; ?>
    <tr>
      <td><?php echo $row_Recordset1['nome']; ?></td>
      <td><?php echo $row_Recordset1['categoria']; ?></td>
      <td><?php echo $row_Recordset1['descricao']; ?></td>
      <td><form method="post" action="<?php if(isset($_POST['submit'])) {mysql_query("DELETE FROM transacoes WHERE id = '$id'");} ?>">
            <input type="submit" name="submit" value="<?php echo $id; ?>" > /*verificação se $id está pegando valor correto*/
            </span>
          </form>
      </td>
    </tr>
    <?php } while ($row_Recordset1 = mysql_fetch_array($Recordset1)); ?>
</table>
    </div>

A variável $id está recebendo o valor correto, visualizada pelo value do botão. Se eu colocar o valor direto id = 32, ele apaga corretamente apenas a id 32, mas se eu usar a variável $id cujo valor é 32, ele apaga todas as linhas do BD.

Se alguém puder ajudar, agradeço.

Em tempo, já tentei colocar um input hidden, colocar '$id' "$id" e nada...sempre apaga todas as linhas.

Atte,

Jimmy

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Olha se minha lógica estiver correta isso vai ser complicado de acerta dessa forma existe outros meios para você excluir o registro com o botão do que com o form...

mas voltando ao problema

Se você coloca um numero manualmente funciona e se coloca com o $id deleta tudo...

bem você coloca o numero na variavel $id ou diretamente na string da query?

por que veja beem eu tenho aqui para mim que ao clica no form ele executa TODOS os form criado pelo while ou seja

c tem 10 registro ele execta os 10 já que você não especifico qual form deveria ser executado simplesmente coloca isset($_POST)

sendo assim ele ta fazendo certo esta fazendo de 10 registro 10 query delect com os 10 ID ....

----

Tenta por no nome do botao onde etsa submite algo assim subit_$id e na condição do if também e ve se ele faz certo.

Editado por JaguA
Link para o comentário
Compartilhar em outros sites

  • 0
Olha se minha lógica estiver correta isso vai ser complicado de acerta dessa forma existe outros meios para você excluir o registro com o botão do que com o form...

mas voltando ao problema

Se você coloca um numero manualmente funciona e se coloca com o $id deleta tudo...

bem você coloca o numero na variavel $id ou diretamente na string da query?

por que veja beem eu tenho aqui para mim que ao clica no form ele executa TODOS os form criado pelo while ou seja

c tem 10 registro ele execta os 10 já que você não especifico qual form deveria ser executado simplesmente coloca isset($_POST)

sendo assim ele ta fazendo certo esta fazendo de 10 registro 10 query delect com os 10 ID ....

----

Tenta por no nome do botao onde etsa submite algo assim subit_$id e na condição do if também e ve se ele faz certo.

Ele apaga corretamente nos dois jeitos, seja atribuindo uma valor pra variável $id ou colocando diretamente este valor na query.

Não funcionou essa dica de mudar o nome do botão.

Qual outra forma para apagar uma linha que não seja chamando outra página pelo action?

De qualquer forma se puder salvar essa lógica agradeço.

Abs,

Jimmy

Link para o comentário
Compartilhar em outros sites

  • 0

Olha é o que eu falei mesmo...

quando você coloca o ID na string todo os registro ficam com o mesmo id e por isso que ele deleta so o que você coloco...

e como você não definio o formulario que deve ser executado ele executa todos

presta atenção

Seu código.

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

if(isset($_POST['submit']))

Minha alteração

<input type="submit" name="<?php echo 'submit_'.$id ?>" value="<?php echo 'submit_'.$id ?>" >

if(isset($_POST['submit_'.$id]))

Veja bem eu alterei o nome do botao e alterei a condição so vai executar o formulario cujo o nome do botao é submit_$id

assim ele deleta o correto

TESTA AE

<form method="post" action="<?php if(isset($_POST['submit_'.$id])) {mysql_query("DELETE FROM transacoes WHERE id = '$id'");} ?>">
            <input type="submit" name="<?php echo 'submit_'.$id ?>" value="<?php echo 'submit_'.$id ?>" > /*verificação se $id está pegando valor correto*/
           
          </form>

Link para o comentário
Compartilhar em outros sites

  • 0
Olha é o que eu falei mesmo...

quando você coloca o ID na string todo os registro ficam com o mesmo id e por isso que ele deleta so o que você coloco...

e como você não definio o formulario que deve ser executado ele executa todos

presta atenção

Seu código.

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

if(isset($_POST['submit']))

Minha alteração

<input type="submit" name="<?php echo 'submit_'.$id ?>" value="<?php echo 'submit_'.$id ?>" >

if(isset($_POST['submit_'.$id]))

Veja bem eu alterei o nome do botao e alterei a condição so vai executar o formulario cujo o nome do botao é submit_$id

assim ele deleta o correto

TESTA AE

<form method="post" action="<?php if(isset($_POST['submit_'.$id])) {mysql_query("DELETE FROM transacoes WHERE id = '$id'");} ?>">
            <input type="submit" name="<?php echo 'submit_'.$id ?>" value="<?php echo 'submit_'.$id ?>" > /*verificação se $id está pegando valor correto*/
           
          </form>

Bruxaria JaguA...funfou maravilha. Valeu pela dica.

Abraços,

Jimmy

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...