Jump to content
Fórum Script Brasil
  • 0

Apagar dado do mySQL sem chamar outra página


duffbeer

Question

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 to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 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.

Edited by JaguA
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652.1k
×
×
  • Create New...