Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, estou querendo fazer um fórum bem simples, a intenção é aprender fazer coisas um pouco mais complicada, já que estou aprendendo PHP. Não sou nenhum nobe, mas também não sou nenhum gênio, coisas simples eu consigo fazer de boa. Acredito que o forum que estou fazendo seja bem simples também, nada muito complexo, mas estou fazendo alguma coisa errada e não consigo solucionar.
A tabela do forum é essa aqui
CREATE TABLE forum ( id int(11) NOT NULL auto_increment, autor varchar(255) collate latin1_general_ci default NULL, titulo varchar(255) collate latin1_general_ci default NULL, mensagem mediumtext collate latin1_general_ci, pai int(11) default NULL, topico int(11) default NULL, pdate timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, PRIMARY KEY (id), KEY pdate (pdate)) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=6;INSERT INTO forum VALUES (1, 'Danilo', 'Mais um teste de topico', 'Oh vida, tem que dar certo agora...', 0, 1, '2007-06-20 13:59:28');INSERT INTO forum VALUES (5, 'Danilo', 'Re: Testando redirecionamento...', 'Caramba, acho que fiz alguma coisa errada, ta listando mensagem de todos os topicos huaauhuha', 0, 4, '2007-06-20 15:05:59');INSERT INTO forum VALUES (4, 'Danilo', 'Testando redirecionamento...', 'Testando redirecionamento pro fórum após enviar a mensagem.', 0, 4, '2007-06-20 14:05:20');
config.php
<?php$host = "localhost";$user = "root";$pass = "teste";$db = "forum";$connection = @mysql_connect($host, $user, $pass) or die("Não foi possível conectar-se ao Banco de Dados.");@mysql_select_db($db, $connection) or die("Não foi possível conectar-se ao Banco de Dados.");?>O Código que mostra as mensagens do tópico é essa aqui:**topico.php**
<?phpinclude "config.php";function read($pai,$topico,$id){ if($pai == 0) { $sql="SELECT *, DATE_FORMAT(pdate, '%d/%m/%Y') as date FROM forum WHERE (pai=\"0\" AND topico=$topico)"; }else{ $sql="SELECT *, DATE_FORMAT(pdate, '%d/%m/%Y') as date FROM forum WHERE pai=\"$pai\" ORDER BY `id` ASC"; } $result = mysql_query($sql) or die("Error in query: $sql. " .mysql_error());while ($row = mysql_fetch_array($result)) {$id = $row['id'];$autor = $row['autor'];$titulo = $row['titulo'];$mensagem = $row['mensagem'];$pai = $row['pai'];$topico = $row['topico'];$data = $row['date']; $consulta2 = "SELECT COUNT(*) as total FROM forum WHERE pai=\"$row[0]\"";$quantidade = mysql_query($consulta2);$total = mysql_result($quantidade, 0, "total");if($row[0]==$id){ echo "<a name=\"mesg\"></a>";}?><?php echo $titulo ?><br> Por <?php echo $autor ?> - <?php echo $data ?><br><br><?phpinclude("../includes/bbcode.php");echo str_replace($arrayr, $arrays, $mensagem); ?><br><br><?php echo "<a href=\"novotopico.php?topico=$topico&titulo=$titulo&pai=$pai\">Responder</a>"; ?><? if($total != 0){ read($row[0],$topico,$id); } }}read($connection,0,$topico,$id);?>
Tirei os HTML da página pra ficar melhor pra entender o código: Nessa página, tem um problema que não estou conseguindo resolver, está listando a mensagem de todos os tópicos, no caso aqui, são 2 tópicos, já que só tem 2 tópicos no BD.
Por fim, aqui a página que lista os tópicos.
forum.php
<table border="0" width="592" cellspacing="1" cellpadding="0" ><?phpinclude "config.php";global $connection;$sql = mysql_query("SELECT *, DATE_FORMAT(pdate, '%d/%m/%Y') as date FROM forum ORDER BY pdate DESC"); $total = mysql_num_rows($sql); while ($row = mysql_fetch_array($sql)) { $id = $row["id"]; $titulo = $row["titulo"]; $autor = $row["autor"]; $texto = $row["texto"]; $data = $row['date']; echo " <tr> <td width=\"374\" bgcolor=\"#EBEFF5\" height=\"20\"><font face=\"Verdana\" size=\"2\"><a href=\"topico.php?id=$id\">$titulo</a></td> <td width=\"120\" bgcolor=\"#EBEFF5\" height=\"20\" align=\"center\">$autor</td> <td width=\"94\" bgcolor=\"#EBEFF5\" height=\"20\" align=\"center\">$data</td> </tr>";}?></table>Também tem um erro ai que não sei o que fiz de errado, mas como tem dois tópicos no BD, o certo seria ficar assim:
Testando redirecionamento --------------------- Danilo --------------------- 20/06/2007
Mais um teste de topico ------------------------- Danilo --------------------- 20/06/2007
Mais está ficando assim, repetindo o título do tópico que recebe uma resposta, ficando assim.
Testando redirecionamento --------------------- Danilo --------------------- 20/06/2007
Re: Testando redirecionamento --------------------- Danilo --------------------- 20/06/2007
Mais um teste de topico ------------------------- Danilo --------------------- 20/06/2007
Como resolver esses problema? Se alguém puder dar um help nessas dúvidas minhas, fico muito grato.
Carregando comentários...