Ir para conteúdo

POWERED BY:

Arquivado

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

Anderson Tosatti

[Resolvido] Enviar e atualizar dados na mesma página

Recommended Posts

Boa tarde pessoal,

 

Estou com o seguinte problema, montei um sistema de envio de mensagens entre usuários e na página inicial a pessoa pode enviar uma mensagem para o usuário e logo abaixo aparecem as mensagens que ela recebeu de outros usuários. Estou tentando inserir um checkbox para ela marcar as mensagens como lidas e essas não aparecerem mais lá. O problema é que ele está enviando mensagens normalmente, porém não consegue atualizar o bd quando o checkbox é marcado.

Segue abaixo o código, se alguem puder ajudar eu agradeço.

 

index.php

<? include('Connections/marechal.php'); ?>
<?
if(isset($_POST['done'])){
   $login = $_POST['login'];
   $mensagem = $_POST['mensagem'];
   $usuario = $_POST['usuario'];
   $status = $_POST['status'];

   if(empty($login) || empty($mensagem) || empty($usuario)){

       $erro = "Opa, você deve escrever alguma coisa";

   }else{        

      $sql = mysql_query("INSERT INTO `mensagens`(`login`, `mensagem`, `usuario`, `status`) VALUES ('$login', '$mensagem', '$usuario', '$status')") or die(mysql_error());

           if($sql){

               $erro = "Mensagem enviada com sucesso!";

             } else{

                 $erro = "Não foi possivel enviar a mensagem";

             }

   }

}

?>

<?
if(isset($_POST['done2'])){

      	$status = $_POST['status'];

   if(empty($status)){

       $erro = "Opa, você deve escrever alguma coisa";

   }else{        

      $sql = mysql_query("UPDATE mensagens set status='$status' WHERE id='$id'") or die(mysql_error());

           $linha = mysql_affected_rows();

           if($linha == 1){

               $erro = "Dados alterados com sucesso!";

             } else{

                 $erro = "Não foi possivel alterar os dados";

             }

   }

}
?>

 

para enviar mensagem:

<form name="form1" action="index.php" method="POST" >
           <table width="450" border="0" align="center" cellspacing="1">
 <tr>
   <td align="center" bgcolor="#0C0C0C"><strong>Envio de Mensagem</strong></td>
 </tr>
 <tr>
   <td class="mes">Para:
<select name="usuario" id="usuario">
 <option>admin</option>
       <option>teste</option>
       <option>erik</option>
       <option>reinaldo</option>
   </select></td>
 </tr>
 <tr>
   <td><label for="mensagem"></label>
     <textarea name="mensagem" cols="53" rows="6" class="campo" id="mensagem"></textarea></td>
 </tr>
 <tr>
   <td><input type="submit" value="Enviar" />
     <input name="status" type="hidden" id="status" value="N" />
     <input type="hidden" name="done"/>
     <input name="login" type="hidden" id="login" value="<? echo $fet_busca['login'];?>" />
     <?php

if(isset($erro)){

   print '<div style="width:50%; background:#191919; color:#fff; padding: 5px 0px 5px 0px; text-align:center; margin: 0 auto;">'.$erro.'</div>';

}

?></td>
 </tr>

</table>

 

para ler e atualizar o bd:

<form name="form2" action="index.php" method="POST" >
             <table width="455" border="0" align="center" cellspacing="1">
 <tr>
   <td colspan="2" align="center" bgcolor="#0C0C0C"><strong>Mensagens Recebidas</strong></td>
 </tr>
 <?
 $sql = "select * from mensagens WHERE usuario = '$usuario2' AND status = 'N' ORDER by data DESC LIMIT 10";

$result = mysql_query ($sql, $marechal) or die(mysql_error()); 
while ($linha = mysql_fetch_array ($result)) {
$id = $linha["id"];
$mensagem = $linha["mensagem"];
$data = $linha["data"];
$login = $linha["login"];
$usuario = $linha["usuario"];

?>
 <tr>
   <td width="206" class="mes">Enviado por: <?php echo $linha['login']; ?></td>
   <td width="247" class="mes"><?php echo data ($linha['data']); ?></td>
 </tr>
 <tr>
   <td colspan="2" bgcolor="#FFFFFF" class="show"><?php echo $linha['mensagem']; ?>
      </td>

 </tr>
 <tr>
   <td colspan="2" bgcolor="#FFFFFF" class="show"> <input name="status" type="checkbox" id="status" value="S" />
     <label for="checkbox"></label>
     Marcar como Lida 
     <input type="submit" name="button" id="done2" value="Salvar" /> 
     <input type="hidden" name="done2"/>
     <input name="login" type="hidden" id="login" value="<? echo $fet_busca['login'];?>" /></td><? }  ?>
 </tr>

             </table> 

</form>

 

A unica coisa que não funciona é para atualizar. Sempre retorna a mensagem "não foi possível atualizar os dados"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce pode colocar um input hidden na pagina de atualizar e perguntar se o valor da input existe ou é igual a um numero que colocou, na pagina index. Quando ele vem da pagina atualizar ele tem o value da input, ae voce consegue comparar. Tenta isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, todas as ações da página eu estou executando pelo index.php sem nenhuma outra página de ação, o input hidden que eu coloquei foi justamente para que a ação fosse executada que é o "done2". Você tem algum exemplo prático?

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá um echo com o valor das variáveis $id e $linha pra ver o que aparece nelas ou joga a consulta direto no console do MySQL ou do PhpMyAdmin pra ver se dá algum resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo acredito que se adicionar um js no evento onclick do checkbox funcione pois assim ele fara um submit trocando o status para lidas seria isso:

 

<input name="lida" type="checkbox" onclick="this.form.submit()">

 

Assim que o usuário marcar o campo ele fará o submit do form. Espero ter ajudado aguardo resposta!

Compartilhar este post


Link para o post
Compartilhar em outros sites

echo $id não me retorna nada e echo $linha está me retornando 0.

 

srnalim,

não funcionou, o checkbox ficou com a mesma função do botão "salvar" então quando eu o marco já me aparece a mensagem que não foi possível alterar os dados

Compartilhar este post


Link para o post
Compartilhar em outros sites

srnalim,

eu dei uma olhada em seu código e pelo q eu vi a unica coisa que eu não utilizo no meu é um elseif que acho que não seria empregado. Estou usando essa mesma formatação em todas as outras páginas e não tive problemas, só nesse bendito index que ta dando problema justamente por fazer duas ações (insert e update). Procurei deixar tudo separado pra não dar confusão, mas ta osso!rs

Valeu por estar ajudando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz o upload da sql e do arquivo ai ou me add no msn sei la agente ve o que muda e posta aqui se for o caso do msn anthony@mxtec.com.br.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se o echo $id não retorna nada é por isso que não dá certo. Você não está enviando o número do id junto com o formulário quando ele é enviado, e está usando essa variável $id na consulta sem ela existir. Coloca um hidden chamado id com o valor de $id no formulário e no PHP bota o valor desse hidden na variável $id, ficando assim:

 

<td colspan="2" bgcolor="#FFFFFF" class="show"> <input name="status" type="checkbox" id="status" value="S" />

<label for="checkbox"></label>

Marcar como Lida

<input type="submit" name="button" id="done2" value="Salvar" />

<input type="hidden" name="done2"/>

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

<input name="login" type="hidden" id="login" value="<? echo $fet_busca['login'];?>" /></td><? } ?>

</tr>

 

_

 

<?

if(isset($_POST['done2'])){

 

$id = $_POST['id'];

$status = $_POST['status'];

 

if(empty($status)){

 

$erro = "Opa, você deve escrever alguma coisa";

 

}else{

 

$sql = mysql_query("UPDATE mensagens set status='$status' WHERE id='$id'") or die(mysql_error());

 

$linha = mysql_affected_rows();

 

if($linha == 1){

 

$erro = "Dados alterados com sucesso!";

 

} else{

 

$erro = "Não foi possivel alterar os dados";

 

}

 

}

 

}

?>

 

Imagino que isso resolva..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alexandre, fiz as alterações e ainda não funcionou, o echo $id está me retornando o id da tabela normalmente após o select, só na hora de reenviar os dados para o update é que não funciona...

Compartilhar este post


Link para o post
Compartilhar em outros sites

falto alguns arquivos tipo o de conexão e o restrito ta dando erro por falta deles! me add no msn e mais facil que so envia a solução postamos aqui anthony@mxtec.com.br!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente faltam alguns arquivos, mas tirei eles e tudo que não precisava e estava dando erro por não ter as tabelas e escrevi o que precisava a mão mesmo, e deu certo o que eu sugeri, só que você não tinha colocado a variável que eu coloquei em negrito, e sem ela não funcionava mesmo.

 

<?php

$conexao = mysql_connect('localhost','root','');

$marechal = mysql_select_db('marechal',$conexao);

/*$sql_busca = "SELECT * FROM user WHERE login = '$login_usuario'";

$exe_busca = mysql_query($sql_busca) or die (mysql_error());

$fet_busca = mysql_fetch_assoc($exe_busca);

$usuario2 = $fet_busca['login'];*/

 

 

if(isset($_POST['done'])){

 

 

 

$login = $_POST['login'];

 

$mensagem = $_POST['mensagem'];

 

$usuario = $_POST['usuario'];

 

$status = $_POST['status'];

 

 

 

if(empty($login) || empty($mensagem) || empty($usuario)){

 

$erro = "Opa, você deve escrever alguma coisa";

 

}else{

 

$sql = mysql_query("INSERT INTO `mensagens`(`login`, `mensagem`, `usuario`, `status`) VALUES ('$login', '$mensagem', '$usuario', '$status')") or die(mysql_error());

 

if($sql){

 

$erro = "Mensagem enviada com sucesso!";

 

} else{

 

$erro = "Não foi possivel enviar a mensagem";

 

}

 

}

 

}

 

 

 

?>

 

<?php

if(isset($_POST['done2'])){

 

$id = $_POST['id'];

$status = $_POST['status'];

 

 

 

if(empty($status)){

 

$erro = "Opa, você deve escrever alguma coisa";

 

}else{

 

$sql = mysql_query("UPDATE mensagens set status='$status' WHERE id='$id'") or die(mysql_error());

 

$linha = mysql_affected_rows();

 

if($linha == 1){

 

$erro = "Dados alterados com sucesso!";

 

} else{

 

$erro = "Não foi possivel alterar os dados";

 

}

 

}

 

}

 

 

 

 

 

 

?>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="content-type" content="text/html; charset=utf-8" />

<title> Marechal Auto Vidros</title>

<meta name="keywords" content="" />

<meta name="Soothing" content="" />

<link href="default.css" rel="stylesheet" type="text/css" media="screen" />

<link href="calendario.css" rel="stylesheet" type="text/css" media="screen" />

</head>

<body>

<div id="content2">

<div class="post">

 

<form name="form1" action="index.php" method="POST" >

<table width="450" border="0" align="center" cellspacing="1">

<tr>

<td align="center" bgcolor="#0C0C0C"><strong>Envio de Mensagem</strong></td>

</tr>

<tr>

<td class="mes">Para:

<select name="usuario" id="usuario">

<?php

//$sql = "select * from user WHERE login = login ORDER by login ASC";

 

//$result = mysql_query ($sql, $marechal) or die(mysql_error());

//$total = mysql_num_rows ($result);

//while ($linha = mysql_fetch_array ($result)) {

$nome = 'admin';

?>

<option><?php echo 'admin'; ?></option>

<?php //} ?>

</select></td>

</tr>

<tr>

<td><label for="mensagem"></label>

<textarea name="mensagem" cols="53" rows="6" class="campo" id="mensagem"></textarea></td>

</tr>

<tr>

<td><input type="submit" value="Enviar" />

<input name="status" type="hidden" id="status" value="N" />

<input type="hidden" name="done"/>

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

<?php

 

if(isset($erro)){

 

print '<div style="width:50%; background:#191919; color:#fff; padding: 5px 0px 5px 0px; text-align:center; margin: 0 auto;">'.$erro.'</div>';

 

}

 

?></td>

</tr>

 

</table> </form>

</h1>

<form name="form2" action="index.php" method="POST" >

<table width="455" border="0" align="center" cellspacing="1">

<tr>

<td colspan="2" align="center" bgcolor="#0C0C0C"><strong>Mensagens Recebidas</strong></td>

</tr>

<?php

$sql = "select * from mensagens WHERE usuario = 'admin' AND status = 'N' ORDER by data DESC LIMIT 10";

 

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

while ($linha = mysql_fetch_array ($result)) {

$id = $linha["id"];

$mensagem = $linha["mensagem"];

$data = $linha["data"];

$login = $linha["login"];

$usuario = $linha["usuario"];

 

?>

<tr>

<td width="206" class="mes">Enviado por: <?php echo $linha['login']; ?></td>

<td width="247" class="mes"><?php echo $linha['data']; ?></td>

</tr>

<tr>

<td colspan="2" bgcolor="#FFFFFF" class="show"><?php echo $linha['mensagem']; ?>

</td>

 

</tr>

<tr>

<td colspan="2" bgcolor="#FFFFFF" class="show"> <input name="status" type="checkbox" id="status" value="S" />

<label for="checkbox"></label>

Marcar como Lida

<input type="submit" name="button" id="done2" value="Salvar" />

<input type="hidden" name="done2"/>

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

<input name="id" type="hidden" id="id" value="<?php echo $linha['id'];?>" /></td><?php } ?>

</tr>

 

</table>

 

</form>

 

</div>

</body>

</html>

 

E se quiser, me adiciona no MSN também, é o mesmo e-mail que você enviou os arquivos, alexandremota_souza@hotmail.com.

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.