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

Problema na personalização de código de fórum


cloba

Pergunta

olá colegas?!!!é o seguinte , vou passa o código e fala o que eu quero

exibe_conteudo.php

<?php

require_once("conecta_mysql.php");

//selecionando dados da tabela

$sql = "SELECT * FROM forum";

$query = mysql_query($sql);

while($sql = mysql_fetch_array($query)){

$id = $sql['id'];

$assunto = $sql["assunto"];

echo "<a href=nome.php?id=$id> <br> $assunto </a>";}

?>

<form method=post" action="respostaexibe.php">

<table width="50%" border="1" cellspacing="0" cellpadding="0">

<tr>

<td>Mensagem:</td>

<td><textarea name="assunto"></textarea></td>

</tr>

<tr>

<td> </td>

<td><input type="submit" name="enviar" value="Enviar a Mensagem"></td>

</tr>

</table>

</form>

nome.php

<?php

require_once("conecta_mysql.php");

$id = $_GET['id];

echo $id;

$sql = "SELECT * FROM forum WHERE id=$id";

$query = mysql_query($sql);

while($sql = mysql_fetch_array($query)){

$mensagem = $sql["mensagem"];

echo "Resultados para o ID $id <br> Nome: $mensagem ";

}

?>

<form method=post" action="resposta_nome.php">

<table width="50%" border="1" cellspacing="0" cellpadding="0">

<tr>

<td width="50%">Mensagem:</td>

<td width="50%"><textarea name="mensagem"></textarea></td>

</tr>

<tr>

<td> </td>

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

</tr>

</table>

</form>

resposta_nome.php

<?php

if(empty($_POST['mensagem])) {

header('Location: nome.php');

exit;

}

require_once("conecta_mysql.php");

$mensagem = $_POST['mensagem'];

$inserir = "INSERT INTO forum (assunto, mensagem, data, hora) VALUES ('' , '$mensagem' , '' , '' )";

mysql_query($inserir);

header('Location: nome.php');

mysql_close($conexao);

?>

até aí perfeito, adiciona o assunto quando digita na caixa d mensagem do exibe_conteudo.php e linka o assunto no exibe_conteudo.php e chama o nome.php e aparece a msg, como eu faço pra somar a msg quando é digitado na caixa d mensagem do nome.php ??qual o comando eu devo incrementar na página e qual seria essa página???

por. ex no nome.php

amanhã vai chover??

Sim vai chover!

Não vai chover.

obrigado galera quem puder ajudar

Link para o comentário
Compartilhar em outros sites

  • Respostas 147
  • Created
  • Última resposta

Top Posters For This Question

Posts Recomendados

  • 0

Renato. por ex.

eu postei esse tópico ,e você clicou no tópico que. eu postei, e você viu a minha dúvida no tópico que eu postei, certo?? e ai você incrementou a perg.

Você quer juntar uma string dinâmica com uma string fixa ? ou seja você adicionou a msg

ou seja somou o meu tópico com a sua msg ,e assim por diante igual um forum mesmo, quando o usuário posta um tópico o usuário clica, e responde o tópico postado e assim por diante, como eu faço isso?? qual o comando eu devo incrementar na página???e qual página ??

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

  • 0

Você não quer somar nada... o que você quer é vincular as diversas mensagens a um determinado tópico... use o banco de dados para isso... na tabela da mensagem você coloca o ID do tópico a que se refere (assumindo que cada tópico irá receber um ID), e na hora de exibir o tópico você procura por todas as mensagens que possam existir para aquele determinado tópico...

Link para o comentário
Compartilhar em outros sites

  • 0

me da essa maozinha galera, eu vou usar um ex. aqui mesmo nesse tópico quando eu clico, na URL fica assim

http://scriptbrasil.com.br/forum/index.php?showtopic=100674'>http://scriptbrasil.com.br/forum/index.php?showtopic=100674

e quando eu clico em responder o tópico , na URL aparece assim

http://scriptbrasil.com.br/forum/index.php?act=post&do=reply_post&f=4&t=100674

como vocês pd reparar onde está em vermelho muda as variaveis

obs.:a 1º URL é só um ex. já a segunda URL quando clica em responder , que. eu não consigo imaginar a lógica

é disso que eu preciso galera, como eu faço isso?? vocês pde montar um ex. de um código ou mesmo incrementar o código feito com os comentários, na página??? porque assim eu aprendo mais.

eu ficaria grato, da essa mãozinha

eu agradeço quem puder ajudar, é porque eu sou iniciante.

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

  • 0

voce acrescenta ao final da ext ?car=cont&var2=cont...

tipo:

$inserir = "INSERT INTO forum (assunto, mensagem, data, hora) VALUES ('' , '$mensagem' , '' , '' )";

mysql_query($inserir);

<script>top.window.location='nome.php?mensagem=$mensagem';</script>

assim vai enviar o conteudo da mensagem para o nome.php ai voce recebe via $_GET

se for no action post é a mesma coisa só colocar o que quer passar

sempre depois do script coloque para colocar mais itens use 0 &

exemplo:

nome.php?mensagem=$mensagem&campo2=Teste1&campo3=Teste2

é isto?

Link para o comentário
Compartilhar em outros sites

  • 0

O que a segunda URL faz é inserção dos dados no BD veja:

act=post -> ação

do=reply_post -> o que fazer

f=4 -> forum a que se vincula (o forum de PHP foi o 4º a ser criado)

t=100674 -> Tópico a que se vincula

Uma coisa que eu já vi é que ao que parece o seu BD não tem um campo para guardar a que tópico a mensagem se vincula... coloca a modelagem do BD aqui no tópico...

Link para o comentário
Compartilhar em outros sites

  • 0

É só isso? No meu entender (como eu faria) eu teria no mínimo 2 tabelas

1 - tópicos, conteria:

id

titulo

texto do tópico

//outras coisas

2 - mensagens

id

id_topico -> Aqui se uniria a mensagem A B C D E F.. ao tópico 1 2 3 4 ...

texto da mensagem

//outras coisas...

Link para o comentário
Compartilhar em outros sites

  • 0

Sinceramente, ANTES de você fazer a coisa, entenda a lógica, vamos supor que o seu fórum tem 5 mensagem com os IDs

1 2 3 4 5

E tem 20 mensagens com os IDs

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Como você faz para ligar a mensagem ao tópico? A possibilidade que eu citei seria guardar na tabela que guarda as mensagens a ID do tópico, ai teria uma referência do tipo:

1(3) 2(5) 3(5) 4(4) 5(1) 6(2) 7(5) 8(3) 9(4) 10(4) 11(4) 12(1) 13(3) 14(5) 15(5) 16(4) 17(3) 18(2) 19(1) 20(1)

Note que o número diz que mensagem é, e o que está entre parenteses é a que tópico a que se refere a mensagem, assim a mensagem 1 pertence ao tópico 3, a mensagem 2 ao tópico 5, a mensagem 3 ao tópico 5, etc...

O que você deve fazer é na hora que você for gravar a mensagem no BD, ver a que tópico aquela mensagem se refere e guardar essa informação também, para poder ligar tudo na hora de buscar as informações...

Link para o comentário
Compartilhar em outros sites

  • 0

eu entedi o que você quiz dizer d montar as duas tabela, mas o prob. que. eu quero ver o código pronto em php , tem como você colocar o código que. falta pra incrementar se for possivel, porque eu tive aula de php hj, mas o prof. tava me ensinando , mas nem deu pra terminar, e ai fiquei sem o código, e acabou a aula d php básico, posta o codigo aqui no forum.

o meu prob. é o codigo em php.

agradeço.

Link para o comentário
Compartilhar em outros sites

  • 0

Aqui eu criei uma tabela que vai guardar as mensagens chamada "mensagens", ela tem 4 campos (id, id_mensagem, mensagem, data_hora), abaixo ou que eu alterei...

nome.php

<?php
<?php
require_once("conecta_mysql.php");

$id = $_GET['id'];

$sql = "SELECT * FROM forum WHERE id=$id";
$query = mysql_query($sql);/*Como a mensagem inicial vai ser guardada em uma tabela a parte não precisa mais do while, basta o mysql_result*/
$mensagem = mysql_result($query,0,mensagem);
/*Aqui o cara faz a query para pegar as mensagens que fazem parte do tópico em questão*/
$pega_posts = mysql_query("SELECT * FROM mensagens WHERE id_mensagem = '$id'");
/*Conta o número de mensagens*/
$resultados = mysql_num_rows($pega_posts);
/*Aqui pega o total de mensagens e adiciona 1, pois esse 1 se refere a mensagens do post inicial*/
$resultados_tot = $resultados+1;
echo "$resultados_tot Resultados para o ID $id <br> Nome: $mensagem <br>";
/*Aqui testa, se $resultados for 0 significa que não existe nenhum mensagem no post, então não faz nada, senão busca todas as mensagens referentes aquele post*/
if ($resultados == 0){}else{
while ($x = mysql_fetch_array($pega_posts)){
$mensagem = $x['mensagem'];
echo "Nome: $mensagem<BR>";
}
}

?>
<form method="post" action="resposta_nome.php">
<table width="50%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td width="50%">Mensagem:</td>
<td width="50%"><textarea name="mensagem"></textarea></td>
</tr>
<tr>
<td><input type="hidden" name="id" value="<?php echo $id;?>"> </td>
--> Adicionei um campo para guardar o ID do post inicial
<td><input type="submit" name="enviar" value="Enviar"></td>
</tr>
</table>
</form>
resposta_nome.php
<?php
if(empty($_POST['mensagem'])) {
header('Location: nome.php');
exit;
}
$id = $_POST['id'];//Pega o ID

require_once("conecta_mysql.php");

$mensagem = $_POST['mensagem'];
/*Insere os valores na tabela mensagens, note que eu utilizei apenas um campo do tipo datetime, se você for utilizar 2 campos separados lembre-se de alterar aqui*/
$inserir = "INSERT INTO mensagens (id,id_mensagem, mensagem, data_hora) VALUES ('' , '$id','$mensagem' , NOW())";
mysql_query($inserir);

//Redireciona para a página que exibe o conteúdo do post em questão
header("Location: nome.php?id=$id");

mysql_close($conexao);

?>

Ps.: Editei o seu título pois você colocou "Me Ajuda Com Essa Lógica Em Php", mas o seu problema passa bem longe da lógica...

Link para o comentário
Compartilhar em outros sites

  • 0

hehe vou tentar mais tarde, que. eu tenho que. sair, como eu disse eu sei coisas básica, agora avançado é outro passo é só questão d tempo, dpois eu posto falando a resposta, mas d qualquer forma eu agradeço, e já que. to aqui vou posta um novo tópico com outra dúvida espero você lá me ajudando rs.

obrigado pela atenção e fica com Deus.

Link para o comentário
Compartilhar em outros sites

  • 0

então o seu código funcinou, mas tem um porém , no resposta_nome.php

tem um pequeno comando

if(empty($_POST['mensagem'])) {

header('Location: nome.php');

exit;

}

quando eu tento enviar em branco da erro,

já tentei assim

if(isset($_GET['mensagem])) {

$msg = urlencode("Favor preencher os campos.");

header('Location: nome.php?msg=$msg');

}

quando inseri o fomr em branco envia só o texto Resposta que. está no echo

assim

Resposta:

como eu faço pra validar o form quando o usuário tenta enviar o form em branco não aparecer nada???

Link para o comentário
Compartilhar em outros sites

  • 0

Cara o erro está óbvio, você está mandando ele ir para a página NOME.PHP, mas deveria indicar o ID da mensagem também!

if(empty($_POST['mensagem'])) {

header('Location: nome.php');

exit;

}

Logo passa o:

$id = $_POST['id'];//Pega o ID

Para o topo da página e dai coloca:

header("Location: nome.php?id=$id");

Use " (aspas) e não ' (apóstrofos), pois pro PHP tudo que está entre apóstrofos é interpretado literamente logo:

<?php
$nome = "ESerra";
echo "Olá meu nome é $nome";//Aqui vai imprimir Olá meu nome é ESerra
echo 'Olá meu nome é $nome';//Aqui vai imprimir Olá meu nome é $nome
?>

Link para o comentário
Compartilhar em outros sites

  • 0

eu tentei assim

$id = $_POST['id'];//Pega o ID

if(empty($_POST['mensagem'])) {

header("Location: nome.php?id=$id");

exit;

}

e aparecu na tela $id com o erro

já que. to aqui, como faz pra somar msgs da página exibe_conteudo.php quando o usuário postou o seu tópico/????

por ex.

tópico

estou com dúvida ||| 8 respostas

como faz isso?? e o seu código está muito simples e objetivo e bem comentado, assim já da pra brinca bastante parabéns cara

obrigado cara, você já está ajudando muitoooo

muito bacana esse forum , Deus t abençõe

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

  • 0

O código é exatamente este mesmo:

$id = $_POST['id'];
if(empty($_POST['mensagem'])) {
header("Location: nome.php?id=$id");
exit;
}

Acabei de testar e aqui está ok...

Quanto a somar as mensagens, isso eu já inclui no código modificado, a variável que guarda é $resultados_tot

Link para o comentário
Compartilhar em outros sites

  • 0

vlw ESerra testei aqui, e funcionou.

muitoooo obrigado, pelo o seu código muito simpless . vlw

voltando ao forum personalizado, então , no exibe_conteudo.php tem dois tópicos por ex.

amanhã vai chover? respostas 1

que dia é amanhã? resposta 1

e quando eu clico no tópico que dia é amanhã? e respondo, a resposta ficaria 2, e aí o tópico ficaria em primeiro tipo assim

que dia é amanhã ? resposta 2

amanhã vai chover? resposta 1

como você pd ver o tópico que dia é amanhã ? respondido ficou como destacado como primeiro , é o mesmo aqui do forum , quando eu pego um tópico do mês passado e respondo ele fica na primeira colocação como tópico atualizado na primeira página,

como eu faço isso?? qual é o comando??

e já que. to aqui como faço pra inserir emoticon na tela na caixa de texterea?

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

  • 0

A questão dos tópicos é simples, o seu está sendo exibido pela ordem de inserção no banco de dados, para exibir pela última mensagem incluida o mais simples (e recomendando pra quem está aprendendo) é criar mais um campo na tabela que guarda o tópico inicial e guardar a data do último post, ou seja, toda vez que alguém postar naquele tópico você atualiza a data e hora, e a partir disso você poderá utilizar o mysql para descobrir que tópico teve algum movimentação e com isso ordenar do jeito que você quer.

Quanto a inserir emoticon, pesquisa sobre BBCode, mas o mais simples é você utilizar um painel já pronto para isso tipo o FCKeditor ou o tinymce.

Link para o comentário
Compartilhar em outros sites

  • 0

vamo ver se eu entendir, então, não é preciso criar um código PHP que. faz essa função?? eu já criei um campo na tabela que. guarda a hora e a data, mas eu não sei como mover em mysql, e muito menos por onde começar o comando em php que. faz essa funcão.

me desculpa t pedi d mais, parece que. eu to querendo d mais, mas se você poder colocar um exemplo de um código pronto enfim, eu agradeço , d qualquer forma já agradeço o que você me ajudou muito.

Link para o comentário
Compartilhar em outros sites

  • 0

Em primeiro lugar, onde você arrumou esse código de "fórum"? Pois pelo que você tá falando é impossível você ter chegado nesse estágio sozinho...

Quanto ao exemplo, você vai ter que criar outro campo para guardar essa informação (na tabela que guarda o post inicial), pois essa informação vai servir para ordenar os tópicos e não para informar quando ele foi criado... nesse caso, quando o cara criar o post você guarda a data de criação e a essa nova da mesma forma (pois no caso a data de criação e de última alteração serão a mesma), quando alguém postar uma mensagem depois de inserir essa informação no BD (conforme o código que eu te passei anteriormente (resposta_nome.php)), você dá um UPDATE na tabela que guarda o post inicial... dessa forma:

mysql_query("UPDATE tabela SET campo_novo = NOW() WHERE id = '$id'");

Isso dai você coloca depois do

mysql_query($inserir);

Para ordenar a exibição como você quer use no exibe_conteudo:

$sql = "SELECT * FROM forum ORDER BY campo_novo DESC";

Link para o comentário
Compartilhar em outros sites

  • 0

como eu disse, eu fiz um curso básico de php, e ainda to indo aos poucos com os comandos, esse código que. eu postei eu mesmo fiz, mas com exceção.

vou tentar aqui dpois eu passo a resposta.

testei , não deu certo vou passa o código aqui pra ver se é isso..

resposta_nome.php

<?php

$id = $_POST['id'];//Pega o ID

if(empty($_POST['mensagem'])) {

header("Location: nome.php?id=$id");

exit;

}

require_once("conecta_mysql.php");

$mensagem = $_POST['mensagem'];

/*Insere os valores na tabela mensagens, note que eu utilizei apenas um campo do tipo datetime, se você for utilizar 2 campos separados lembre-se de alterar aqui*/

$inserir = "INSERT INTO mensagens (id,id_mensagem, mensagem, data_hora) VALUES ('' , '$id','$mensagem' , NOW())";

mysql_query($inserir);

mysql_query("UPDATE forum SET data = NOW() WHERE id = '$id'");

//Redireciona para a página que exibe o conteúdo do post em questão

header("Location: nome.php?id=$id");

mysql_close($conexao);

?>

e n exibe_conteudo.php

<?php

require_once("conecta_mysql.php");

//selecionando dados da tabela

$sql = "SELECT * FROM forum ORDER BY data ASC"; // quando o assunto é digitado é colocado em primeiro lugar

$query = mysql_query($sql);

while($sql = mysql_fetch_array($query)){ // enquanto a variavel $sql for igual a varialve $query da um loop

$id = $sql['id]; // aqui pega todos o resultados do id do banco

$assunto = $sql["assunto"]; // aqui pega todos os resultados do assunto do banco enquanto for digitado no form.

echo "<a href=nome.php?id=$id> <br> $assunto </a>"; // cria os link das variavel $id

/*Aqui o cara faz a query para pegar as mensagens que fazem parte do tópico em questão*/

$pega_posts = mysql_query("SELECT * FROM mensagens WHERE id_mensagem = '$id'");

/*Conta o número de mensagens*/

$resultados = mysql_num_rows($pega_posts);

/*Aqui pega o total de mensagens e adiciona 1, pois esse 1 se refere a mensagens do post inicial*/

$resultados_tot = $resultados+1;

echo "$resultados_tot Resultados". " " .$sql['data']. "<hr>";

}

?>

eu criei um campo na tabela forum data do tipo text

é assim?? não deu certo. onde está o erro?

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

  • 0

Então, você já criou outro problema, quando você for armazenar datas use um campo do tipo DATE, pois você não vai conseguir ordenar uma data que esteja num campo do tipo TEXT...

E outra coisa, se você o olhar o seu próprio código você verá que a sua tabela já tem um campo chamado data eu apenas exemplifiquei como deve ser a coisa, mas você deve cuidar desses detalhes... ou seja, no meu exemplo onde está data você deve chamar o nome do campo que você criou...

Link para o comentário
Compartilhar em outros sites

  • 0

então, eu fiz com o comando date, quando eu usei esse comando date do mysql ele armazena tipo assim 0000-00-00 e não assim

por ex. 2007/05/05

como por ex.

data date not null,

mas só armazena assim dssa forma 0000-00-00

por isso que. eu usei text assim ele funciona

2007-04-30 16:39:58

porque será hein???

e outro detalhe , na tabela mensagens tem um campo data_hota do tipo text

e na tabela forum tem um campo data

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,3k
    • Posts
      652,5k
×
×
  • Criar Novo...