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

Sistema de mensagens - não deleta ID correspondente


Koyo4ever

Pergunta

Galera é o seguinte:

Estou tentando fazer um sistema de Caixa de Entrada de um e-mail, com a ajuda de alguns amigos do fórum, fiz uma função "deleta_msg()" em javascript, pra ele não mostrar o id passando pelo método Post, só que tem um problema, o Id não é atualizado conforme a mensagem:

Aparece as mensagens certinho, só que quando vai deletar o $id fica estático:

Exemplo:

Mensagem1: eae, beleza? id:30 Mensagem2: tudo bem? id:30

Ele não está atualizando os id, eu acho que é por causa do javascript, pois as mensagens são listadas normalmente.Porque se a pessoa quiser deletar a Mensagem2 não vai conseguir, pois ele vai deletar a mensagem1 pelo id.

Se eu tirar o javascript ele funciona normalmente, mas eu quero que o "id" fique oculto quando passado por metodo post.

while ($res=mssql_fetch_array($efetua_busca)){
if ($a==0){
$cor="#999999";
$a=1;
} else {
$cor="#CCCCCC";
$a=0;
}
$de = $res['de'];
$assunto = $res['assunto'];
$data = $res['data_envio'];
$hora = $res['hora_envio'];
$id = $res['id'];
echo "
<script>
function deleta_msg() {
    document.getElementById('formOculta').submit();
}
</script>
<form id='formOculta' method='post' action='deleta_msg.php'>
<input type='hidden' name='id' value='$id' />
</form>
<tr>
<td bgcolor=$cor onclick='location.href=$id'>$de</td>
<td bgcolor=$cor onclick='location.href=$id'>$assunto</td>
<td bgcolor=$cor onclick='location.href=$id'>$data - $hora</td>
<td bgcolor=$cor><a href='java script:deleta_msg();'><img src='../../imagens/no.png' width='14' height='15'/></a>
</td></tr>";
}
echo "</table>";

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Amigo,

você está imprimindo o mesmo formulário para cada linha, provavelmente seu código deve estar pegando o primeiro formulário, que provavelmente o primeiro registro deve ser o id 30

document.getElementById('formOculta').submit();
Fiz uma modificação no seu código, mas não testei, tente fazer dessa forma.
while($res = mssql_fetch_array($efetua_busca))
{
    if($a == 0)
    {
        $cor = "#999999";
        $a = 1;
    } else
    {
        $cor = "#CCCCCC";
        $a = 0;
    }
    $de = $res['de'];
    $assunto = $res['assunto'];
    $data = $res['data_envio'];
    $hora = $res['hora_envio'];
    $id = $res['id'];
    echo "
    <script>
    function deleta_msg() {
        document.getElementById('formOculta$id').submit();
    }
    </script>
    <form id='formOculta$id' method='post' action='deleta_msg.php'>
    <input type='hidden' name='id' value='$id' />
    </form>
    <tr>
    <td bgcolor=$cor onclick='location.href=$id'>$de</td>
    <td bgcolor=$cor onclick='location.href=$id'>$assunto</td>
    <td bgcolor=$cor onclick='location.href=$id'>$data - $hora</td>
    <td bgcolor=$cor><a href='java script:deleta_msg();'><img src='../../imagens/no.png' width='14' height='15'/></a>
    </td></tr>";
}
echo "</table>";

Link para o comentário
Compartilhar em outros sites

  • 0

Faça com jQuery AJAX então.

Faça o download do jQuery http://jquery.com/

E faça inclusão do .js dentro da tag head.

E aqui vai o código:

Exemplo:

function deleta_msg() {
            $.ajax({
                url : 'deleta_msg.php',
                data : { id : id },
                type : 'post',
                success : function()
                {    
                                     alert('Registro excluido com sucesso!');
                }
            });
}
Então você chama a função passando o id como parâmetro.
<td bgcolor=$cor><a href='java script:deleta_msg($id);'><img src='../../imagens/no.png' width='14' height='15'/></a>

Qualquer dúvida fala ae!

Link para o comentário
Compartilhar em outros sites

  • 0

Eu modifiquei a linha " data : { id : $id },", ele mostra certinho que deletou, mas continua deletando com o "id errado".

echo "
<script>
function deleta_msg() {
            $.ajax({
                url : 'deleta_msg.php',
                data : { id : $id },
                type : 'post',
                success : function()
                {    
                                     alert('Registro excluido com sucesso!');
                }
            });
}
</script>
<tr>
<td bgcolor=$cor onclick='location.href=$id'>$de</td>
<td bgcolor=$cor onclick='location.href=$id'>$assunto</td>
<td bgcolor=$cor onclick='location.href=$id'>$data - $hora</td>
<td bgcolor=$cor><a href='java script:deleta_msg($id);'><img src='../../imagens/no.png' width='14' height='15'/></a>
</td></tr>";
}
echo "</table>";
Eu fiz um teste eu deixei a linha assim:
echo "
<script>
function deleta_msg() {
            $.ajax({
                url : 'deleta_msg.php',
                data : { id : $id },
                type : 'post',
                success : function()
                {    
                                     alert('Registro excluido com sucesso!');
                }
            });
}
</script>
$id";
}
echo "</table>";

Ele mostrou corretamente todos os Id, isso prova que ele não "atualiza" os Id's por causa do javascript.Só que o javascript foi a unica forma que eu achei de passar o Id para a proxima pagina com segurança, sem que o usuario possa modifica-lo.

Link para o comentário
Compartilhar em outros sites

  • 0

Amigo,

Tinha me esquecido de definir o parâmetro na função deleta_msg(id); , o que deve ter te confundido um pouco.

A função JavaScript não precisa ficar dentro do código PHP, você define a função no <head> da arquivo html

Faça um teste ai!

<html>
<head>
<script>
function deleta_msg(id) {
            $.ajax({
                url : 'deleta_msg.php',
                data : { id : id },
                type : 'post',
                success : function()
                {    
                     alert('Registro excluido com sucesso!');
                }
            });
}
</script>
</head>
<body>

<?php
while($res = mssql_fetch_array($efetua_busca))
{
    if($a == 0)
    {
        $cor = "#999999";
        $a = 1;
    } else
    {
        $cor = "#CCCCCC";
        $a = 0;
    }
    
    $de = $res['de'];
    $assunto = $res['assunto'];
    $data = $res['data_envio'];
    $hora = $res['hora_envio'];
    $id = $res['id'];
    echo "
    <tr>
    <td bgcolor=$cor onclick='location.href=$id'>$de</td>
    <td bgcolor=$cor onclick='location.href=$id'>$assunto</td>
    <td bgcolor=$cor onclick='location.href=$id'>$data - $hora</td>
    <td bgcolor=$cor><a href='#' onclick='deleta_msg($id);'><img src='../../imagens/no.png' width='14' height='15'/></a>
    </td></tr>";
}
echo "</table>";

?>
</body>
</html>

Link para o comentário
Compartilhar em outros sites

  • 0

Funcionou Perfeitamente!!

Muito Obrigado amigo!

Você poderia me explicar basicamente como funciona este sitema?

Porque eu tentei fazer ele mostrar o id na pagina deletar_msg.php e ele não aparece nela, o sistema não "para" na pagina deletar_msg.php...

Queria saber isto, porque eu quero fazer a mesma coisa pra mostrar a mensagem, ai eu mudaria somente a URL e faria com que a <td> fosse um link com o Onclick, ai quando a pessoa clicasse na tabela ele redirecionava para a pagina de ver a mensagem, só que eu preciso que ele "pare" na pagina ao contrario do seu sistema que esta voltando para a pagina principal.

Eu personalizei o sistema atualizando a pagina com : window.location.reload()

Obrigado

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

  • 0

Fala Parceiro,

O que você fez no seu script foi uma requisição assíncrona, utilizando a biblioteca jQuery.

Estude sobre Requisições Assíncronas. Segue um link bem interessante,Clique Aqui. Com esse link você vai entender como funciona essas requisições.

Mas o que você precisa é enviar uma mensagem para o usuário? Utilize o alert(); do javascript.

Abraço

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...