Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá tenho uma pagina que me exibi os posts esta assim:
<?php
header('Content-Type: text/html. charset=UTF-8').?>
<?php $seleciona = mysql_query("SELECT * FROM postagens WHERE ativado = '1' ORDER BY id DESC"). $conta = mysql_num_rows($seleciona). if($conta <= 0){ echo "Nenhuma Postagem ate o Momento.". }else{ while($ln = mysql_fetch_array($seleciona)){ $id = $ln['id']. $titulo = $ln['titulo']. $conteudo = $ln['texto']. $autor = $ln['autor']. $autor2 = $ln['autor2']. $nome_imagem = $ln['nome_imagem']. $id_autor = $ln['id_autor']. $ativado = $ln['ativado'].?>
<div class="post">
<div class="tools_post">
<?php
if ($_SESSION['id'] == $id_autor || $_SESSION['nivel_usuario'] > 0){
echo "<a href='postar/editpost.php?id=$id'>Editar</a>". echo " ". ?>
<?php
if ($_SESSION['nivel_usuario'] > 0){
echo "<a href='./deleteartigo.php?art=$id'>Excluir Artigo</a>". ?>
</div>
<div class="img-post">
<img style="margin-left:6px. margin-top:5px. " src="clientes/fotos/<?php echo $nome_imagem?>" width="40" height="40"/>
</div>
<div class="n_aut" id="n_aut"><a href='perfil.php?id=<?php echo $id_autor?>'><?php echo $autor. echo " ". echo $autor2?></a></div>
<div class="title-post"><a href='post.php?id=<?php echo $id?>'><?php echo $titulo?></a></div>
<div class="crp-post"><p><?php echo $conteudo.?></p></div>
</div>
<?php }}?><?php
header('Content-Type: text/html. charset=ISO-8859-1').?>
<?php session_start(). include "includes/functions.php". include("includes/config.php"). require_once('classes/constantes.php'). require_once('classes/BD.class.php'). @BD::conn(). protegePagina().?>
<html>
<?php require "modules/header-secret-file.php".?>
<title>Editar Perfil - <?php echo $_SESSION['nome']?></title>
<body> <?php
if(isset($_POST['cadastrar']) && $_POST['cadastrar'] == "cadastrar" ): $id_editar = (empty($_SESSION['id']))? '': (int)$_SESSION['id']. if( empty($id_editar) ){ echo 'Erro, falta parametros para executar a função '. exit(0). } $sqlUpdate = "UPDATE usuarios SET ". // UPDATE USUARIO SQL $nome = strip_tags(trim($_POST['nome'])). $snome = strip_tags(trim($_POST['sobrenome'])). $senha = ($_POST['senha'] == '' )? '': strip_tags(trim($_POST['senha'])). if(!empty($_FILES['arquivo']['name'])): require_once 'classes/UploadPerfil.class.php'. $uploadDir = new UploadPerfil(). if( $uploadDir->Redimensionar($_FILES['arquivo'], 600) ): $nomeGerado = $uploadDir->getNomeUpload(). $_SESSIOn['nome_imagem'] = $nomeGerado. $sqlUpdate.= " nome = '".$nome."', sobrenome = '".$snome."', nome_imagem = '".$nomeGerado."' ". else: $sqlUpdate.= " nome = '".$nome."', sobrenome = '".$snome."' ". endif. // Se ocorrer sucesso no envio da mensagem irá ocorrer o update. else: // Atualizar Sem envio de nova imagem, atualizar apenas dados. endif. if(!empty($senha)){ $sqlUpdate.=" senha = '". md5($senha)."' WHERE id = ".$id_editar. }else{ $sqlUpdate.=" WHERE id = ".$id_editar. } $executeupdate = mysql_query($sqlUpdate) or die ("".mysql_error()). if($executeupdate){ echo '<div id="corpoe"><div id="corpoc">Atualizado!</div></div>'. }else{ echo 'Erro ao atualizar, entre em contato com o desenvolvedor.'. }$nome_imagem = $_SESSION['nome_imagem'].?>
<div class="center_home">
<div id='titles'>Editar perfil</div>
<div id="corpoc">
<?php $_COOKIE['nome']. $id = $_SESSION['id']. $seleciona = mysql_query("SELECT * FROM usuarios WHERE id = '$id' ORDER BY id DESC"). $conta = mysql_num_rows($seleciona). if($conta <= 0){ echo "Erro.". }else{ while($ln = mysql_fetch_array($seleciona)){ $nome_img = $ln['nome_imagem']. }}?>
<form id="form" name="update" action="editacc.php" method="post" enctype="multipart/form-data">
<p><input type="file" name="arquivo" /> Sua foto Atual: <img width='20' height='20' src='clientes/fotos/<?php echo $nome_img?>'/></p>
Nome:<input type="text" name="nome" value="<?php echo $_SESSION['nome']?>"/> Sobrenome:<input type="text" name="sobrenome" value="<?php echo $_SESSION['sobrenome']?>"/>
<input style="margin-top:10px. box-shadow: 1px 0px 5px #444. " type="submit" value="cadastrar" name="cadastrar" />
</form>
</div>
</div>
<div class="content-chat">
<?php require "modules/chat-web-messenger-papo.php".?>
</div>
</body>
</html>
é o Seguinte,Quando eu vou criar um artigo ele cria normal,ele pega os dados da sessão e salva em uma tabela diferente "postagens" e esta pagina de editar os dados salva os dados em "usuario" ai se a pessoa crio um Artigo com uma foto/nome e depois ela altera continua com aquela foto/nome porque ja ta salvo em tabela diferente e eu realizo update na tabela "usuario" e não na tabela "postagens" aonde é salvo todos os Dados das Postagens,queria saber oque posso fazer para quando o Usuario atualizar os dados dele atualizar a Imagem e Nome nas Postagens tbm,porque se fosse uma mesma tabela seria facil mais são duas tabelas diferentes! OBRIGADO!,AGUARDO RESPOSTAS:)Beleza :D,Agora vai,tenho um sistema de postagem, e nele eu pego diversos campos como titulo conteudo nome do autor sobrenome nome da imagem do autor e Ativado,mais é o seguinte quando eu crio o post ele pega os dados da sessão do usuario e coloca no banco de dados mais quando eu altero os dados do usuario a imagem da postagem não muda (óbvio) porque são 2 tabela diferentes ea tabela que eu fiz o update éa usuarios e não a "postagens" ando tem os dados do autor.oque eu queria era basicamente fazer update em 2 tabelas ao mesmo tempo ou slá,espero que entenda agr obrigado!
Não duplique os dados entre tabelas.
Vc deve normalizar o teu sistema, e a table de postagens deve apenas apontar para o ID da tabela de usuário, onde com um JOIN vc referência as duas juntas.
Então, nunca, nunca duplique dados.
Landerson, se você estiver começando agora esse sistema de fórum sugiro utilizar relacionamento entre as tabelas postagens e usuários de maneira que a tabela postagens tenha somente o ID do usuário e que na seleção dos registros você utilize inner Join por exemplo, dessa forma ao usuário atualizar seus dados na tabela usuário automaticamente será atualizado na seleção dos posts, ou seja, ao invés de você selecionar os posts dessa forma
$seleciona = mysql_query("SELECT * FROM postagens WHERE ativado = '1' ORDER BY id DESC");
você terá algo semelhante a isso
$seleciona = mysql_query("SELECT
postagens.id,
postagens.titulo,
postagens.conteudo,
usuarios.autor,
usuarios.nome_imagem,
postagens.ativado
FROM postagens
INNER JOIN usuarios
on postagens.id_autor = usuarios.id
WHERE postagens.ativado = '1' ORDER BY id DESC");
essa é apenas uma ideia, pois sem conhecer a estrutura de seu DB não consigo lhe ajudar muito.
Agora se você não tiver a possibilidade de alterar o banco de dados sugiro duas formas, via PHP mesmo que no meu ponto de vista poderá causar muita lentidão e até mesmo falha no processo se vc tiver muitos registros na tabela postagens.
bom vamos a algumas ideias..
Via PHP:
seria pegar as informações de nome_imagem e nome de autor atualizados na tabela usuarios e realizar um UpDate na tabela postagens pesquisando pelo id_autor (campo esse que imagina possuir o Id constante na tabela usuários). sendo assim você teria algo parecido com isso:
$sql = mysql_query("UPDATE usuarios SET
nome = '$nome',
nome_imagem = '$nome_imagem'
WHERE id_autor = '$id'
");
$sql_postagens = mysql_query("UPDATE postagens SET
autor = '$nome',
nome_imagem = '$nome_imagem'
WHERE id_autor = '$id'
");
Ou até mesmo via trigger direto no DB onde você terá que associar ao evento update da tabela usuarios para executar a ação na tabela postagens seguindo a mesma lógica da comentada acima porém ao invés de você possuir
UPDATE postagens SET autor = '$nome', nome_imagem = '$nome_imagem'
Você teria algo assim
UPDATE postagens SET autor = nome.NEW, nome_imagem = nome_imagem.NEW
Outra dica é não utilizar o SELECT * FROM mas sim dar preferencia em utilizar SELECT nome_do_campo, nome_do_campo FROM tabela, mesmo que o intuito for pegar todos os campos parece besteira mas quando sua tabela tiver uns 10.000 registros isso fará diferença em termos de desempenho.Muito Obrigado "jnrdesign" mais eu re-li 5x e não consegui fazer :/ ta dando erro:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\wamp\www\teste\modules\posts.php on line 7
<?php
header('Content-Type: text/html; charset=UTF-8');
?>
<?php
$seleciona = mysql_query("SELECT postagens.id, postagens.titulo,postagens.conteudo,usuarios.autor,usuarios.nome_imagem,postagens.ativadoFROM postagens INNER JOIN usuarios postagens.id_autor = usuarios.id WHERE postagens.ativado = '1' ORDER BY id DESC");
$conta = mysql_num_rows($seleciona);
if($conta <= 0){
echo "Nenhuma Postagem ate o Momento.";
}else{
while($ln = mysql_fetch_array($seleciona)){
$id = $ln['id'];
$titulo = $ln['titulo'];
$conteudo = $ln['texto'];
$autor = $ln['autor'];
$autor2 = $ln['autor2'];
$nome_imagem = $ln['nome_imagem'];
$id_autor = $ln['id_autor'];
$ativado = $ln['ativado'];
?>
<div class="post">
<div class="tools_post">
<?php
if ($_SESSION['id'] == $id_autor || $_SESSION['nivel_usuario'] > 0){
echo "<a href='postar/editpost.php?id=$id'>Editar</a>";
echo " ";
}else{}
?>
<?php
if ($_SESSION['nivel_usuario'] > 0){
echo "<a href='./deleteartigo.php?art=$id'>Excluir Artigo</a>";
}else{}
?>
</div>
<div class="img-post">
<img style="margin-left:6px; margin-top:5px;" src="clientes/fotos/<?php echo $nome_imagem ?>" width="40" height="40"/>
</div>
<div class="n_aut" id="n_aut"><a href='perfil.php?id=<?php echo $id_autor ?>'><?php echo $autor; echo " "; echo $autor2 ?></a></div>
<div class="title-post"><a href='post.php?id=<?php echo $id ?>'><?php echo $titulo ?></a></div>
<div class="crp-post"><p><?php echo $conteudo; ?></p></div>
</div>
<?php }} ?>
Detalhe: é uma rede social :p Print:http://prntscr.com/2e27ydEae! Provavelmente a sua query está retornando algum erro.
Faz o seguinte, altera o seu código assim:
(...)
if(mysql_errno()){
die(mysql_errno());
}
$conta = mysql_num_rows($seleciona);
(...)
Se retornar algum erro, copiei e coloque aqui no fórum.
UPDATE:
Reparei que existe um erro na sua query:
"SELECT postagens.id, postagens.titulo,postagens.conteudo,usuarios.autor,usuarios.nome_imagem,postagens.ativado FROM postagens INNER JOIN usuarios ON postagens.id_autor = usuarios.id WHERE postagens.ativado = '1' ORDER BY postagens.id DESC"
"...INNER JOIN usuarios ON postagens.id_autor..." faltou o "ON".
Insira também no order by, a tabela ao qual o campo "id" pertence, penso que é a tabela "postagens", certo?
Deu erro olha:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\wamp\www\teste\modules\posts.php on line 7
Resolvi cara muito Obrigado
$seleciona = mysql_query("SELECT postagens.id, postagens.titulo,postagens.texto,usuarios.nome,usuarios.sobrenome,usuarios.nome_imagem,postagens.ativado FROM postagens INNER JOIN usuarios ON postagens.id_autor = usuarios.id WHERE postagens.ativado = '1' ORDER BY postagens.id DESC");
$conta = mysql_num_rows($seleciona);
if($conta <= 0){
echo "Nenhuma Postagem ate o Momento.";
}else{
while($ln = mysql_fetch_array($seleciona)){
$id = $ln['id'];
$titulo = $ln['titulo'];
$conteudo = $ln['texto'];
$autor = $ln['nome'];
$autor2 = $ln['sobrenome'];
$nome_imagem = $ln['nome_imagem'];
$id_autor = $ln['id'];
$ativado = $ln['ativado'];
Muito obrigado mesmo :D
Eae cara, blz?
A sua explicação está um pouco difícil de entender, consegue explicar melhor ( a pontuação ajuda :D ).
Assim vai ficar mais fácil ajudar.
Abraço.