Foros del Web » Programando para Internet » PHP »

Ayuda respuesta php foro.

Estas en el tema de Ayuda respuesta php foro. en el foro de PHP en Foros del Web. Hola a todos! Estoy haciendo un foro en el cual pueden hacerse las respuestas. Tengo 2 tablas uno de que es el de topics donde ...
  #1 (permalink)  
Antiguo 28/02/2011, 06:53
Avatar de ale_dla  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 189
Antigüedad: 15 años
Puntos: 3
Ayuda respuesta php foro.

Hola a todos!
Estoy haciendo un foro en el cual pueden hacerse las respuestas.
Tengo 2 tablas uno de que es el de topics donde se guardan los temas y otro replies donde se guardan las respuestas con el id del tema(topic).
El codigo donde muestra el tema es este:
Topic.php
Código PHP:
<?php

include 'include/php/conexion.php';

//Conexion con la Base de Datos
$link=@dbConnect();
if (!
$link) {
    echo 
"Error conectando a la Base de Datos."
}

if (
$link =="202") {
    echo 
"Error seleccionando la Base de Datos.";
}

$sql_title "SELECT
            topic_id,
            topic_subject
        FROM
            topics
        WHERE
            topics.topic_id = " 
mysql_real_escape_string($_GET['id']);
            
$result_title mysql_query($sql_title); 

?>
 <div id="main">
  <div class="content">
<?php
$userid 
$_GET['userid'];
include(
'bbcode/bbcode.php');
 echo 
'<br />';
 
$topic_id preg_replace('#[^0-9]#i'''$_GET['id']); 
$sql_id mysql_query("SELECT * FROM topics WHERE topic_id='$topic_id' LIMIT 1");
$numRows mysql_num_rows($sql_id);
if (
$numRows 1) {
    echo 
"ERROR: Este tema no existe.";
    exit();
}



$sql "SELECT
            topic_id,
            topic_subject
        FROM
            topics
        WHERE
            topics.topic_id = " 
mysql_real_escape_string($_GET['id']);
            
$result mysql_query($sql);

if(!
$result)
{
    echo 
'Este tema no se puede mostrar, int&eacute;ntelo de nuevo.';
}
else
{
    if(
mysql_num_rows($result) == 0)
    {
        echo 
'Este tema no existe.';
    }
    else
    {
        while(
$row mysql_fetch_assoc($result))
        {

            echo 
'
            <table style="background-color: #F0F0F0; border:#069 1px solid; border-top:none;" width="900" border="0" align="center" cellpadding="12" cellspacing="0">
  <tr>
   <span class="topicTitles">'
.$row['topic_subject'] . '</span><br /><br />';
        
            
$posts_sql "SELECT
                        posts.post_topic,
                        posts.post_content,
                        posts.post_date,
                        posts.post_by,
                        users.userid,
                        users.username
                    FROM
                        posts
                    LEFT JOIN
                        users
                    ON
                        posts.post_by = users.userid
                    WHERE
                        posts.post_topic = " 
mysql_real_escape_string($_GET['id']);
                        
            
$posts_result mysql_query($posts_sql);
            
            if(!
$posts_result)
            {
                echo 
'No se puede mostrar el tema,int&eacute;ntelo de nuevo m&aacute;s tarde.';
            }
            else
            {
            
                while(
$posts_row mysql_fetch_assoc($posts_result))
                { 
                    echo 
'<a href="../profile/profile.php?id='.$posts_row['userid'].'">'.$posts_row['username'].'</a> escribi&oacute;
    &nbsp; &nbsp; &nbsp; el: <span class="topicCreationDate">'
.strftime("%b %d, %Y"strtotime($fecha)); '</span>
    <br />    
             '
;?><div class="topic_div"><?php echo bbcode($posts_row['post_content']).'<br>'.bbcode($_POST['contexto']);?></div>
            <?
            
}
            }
    

    echo 
'<hr/>';
            if(isset(
$_SESSION['userid'])){
                
$userid $_SESSION['userid'];
                
$username $_SESSION['username'];
            
                
                echo 
'<h2>Responder:</h2><br />
                <div id="log">
        <div id="log_res">
        <!-- SPANNER -->
        </div>
    </div>
                    <form method="post" action="reply.php?id=' 
$row['topic_id'] . '" name="responder" id="responder" onsubmit="return validarRespuesta();">
                    <div id="respuesta_error"></div>
                        <textarea cols="30" id="reply_content" rows="10" name="reply_content" class="full"></textarea><br />
                        <input type="submit" class="grand splendid" value="Enviar respuesta" />
                    </form>'
;
            }
            else
            {
                echo 
'Tienes que<a href="../login.php"> iniciar sesi&oacute;n</a> para responder.';
               
            }
            
        }
    }
}

 
?>
 </div></div>
El de respuesta reply.php
Código PHP:
<?php
session_start
();
include 
'include/php/conexion.php';
//Conexion con la Base de Datos
$link=@dbConnect();
if (!
$link) {
    echo 
"Error conectando a la Base de Datos."
}

if (
$link =="202") {
    echo 
"Error seleccionando la Base de Datos.";
}

if(
$_SERVER['REQUEST_METHOD'] != 'POST')
{
    echo 
'No tiene permiso para ver este archivo.';
}
else
{
    if(isset(
$_SESSION['userid']))
    {
         
        
$sql "INSERT INTO 
                    replies(reply_content,
                          reply_date,
                          reply_topic,
                          reply_by) 
                VALUES ('" 
$_POST['reply_content'] . "',
                        NOW(),
                        " 
mysql_real_escape_string($_GET['id']) . ",
                        " 
$_SESSION['userid'] . ")";
                        
        
$result mysql_query($sql);
                        
        if(!
$result)
        {
            echo 
'No se pudo guardar tu respuesta,por favor int&eacute;ntelo de nuevo.';
        }
        else
        {
            echo 
'<script type="text/javascript">history.go(-1);</script>';
            
        }
    }
    else
    {
        echo 
'Tienes que iniciar sesion.';
    }
}

?>
El problema que tengo es que siempre me muestra No se pudo guardar tu respuesta,por favor intentelo de nuevo.
Quien pueda ayudarme se los agradezco mucho!
Saludos
  #2 (permalink)  
Antiguo 28/02/2011, 07:35
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: Ayuda respuesta php foro.

Depura tus consultas, usa mysql_error().
Código PHP:
Ver original
  1. mysql_query('aqui va tu consulta') or die(mysql_error());
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 28/02/2011, 18:29
Avatar de ale_dla  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 189
Antigüedad: 15 años
Puntos: 3
Respuesta: Ayuda respuesta php foro.

Cambie mi codigo de topic.php donde muetro una tabla basica y simple con los datos de la respuesta.
Código PHP:
<?php
include 'include/php/conexion.php';

//Conexion con la Base de Datos
$link=@dbConnect();
if (!
$link) {
    echo 
"Error conectando a la Base de Datos."
}

if (
$link =="202") {
    echo 
"Error seleccionando la Base de Datos.";
}
?>
 <div id="main">
  <div class="content">
<?php
$userid 
$_GET['userid'];
include(
'bbcode/bbcode.php');
 echo 
'<br />';
 
$topic_id preg_replace('#[^0-9]#i'''$_GET['id']); 
$sql_id mysql_query("SELECT * FROM topics WHERE topic_id='$topic_id' LIMIT 1");
$numRows mysql_num_rows($sql_id);
if (
$numRows 1) {
    echo 
"ERROR: Este tema no existe.";
    exit();
}


$sql "SELECT
            topic_id,
            topic_subject
        FROM
            topics
        WHERE
            topics.topic_id = " 
mysql_real_escape_string($_GET['id']);
            
$result mysql_query($sql);

if(!
$result)
{
    echo 
'Este tema no se puede mostrar, int&eacute;ntelo de nuevo.';
}
else
{
    if(
mysql_num_rows($result) == 0)
    {
        echo 
'Este tema no existe.';
    }
    else
    {
        while(
$row mysql_fetch_assoc($result))
        {

            echo 
'
            <table style="background-color: #F0F0F0; border:#069 1px solid; border-top:none;" width="900" border="0" align="center" cellpadding="12" cellspacing="0">
  <tr>
   <span class="topicTitles">'
.$row['topic_subject'] . '</span><br /><br />';
        
            
//fetch the posts from the database
            
$posts_sql "SELECT
                        posts.post_topic,
                        posts.post_content,
                        posts.post_date,
                        posts.post_by,
                        users.userid,
                        users.username
                    FROM
                        posts
                    LEFT JOIN
                        users
                    ON
                        posts.post_by = users.userid
                    WHERE
                        posts.post_topic = " 
mysql_real_escape_string($_GET['id']);
                        
            
$posts_result mysql_query($posts_sql);
            
            if(!
$posts_result)
            {
                echo 
'No se puede mostrar el tema,int&eacute;ntelo de nuevo m&aacute;s tarde.';
            }
            else
            {
            
                while(
$posts_row mysql_fetch_assoc($posts_result))
                { 
                    echo 
'<a href="http://www.forosdelweb.com/f18/profile/profile.php?id='.$posts_row['userid'].'">'.$posts_row['username'].'</a> escribi&oacute;
    &nbsp; &nbsp; &nbsp; el: <span class="topicCreationDate">'
.$posts_row['topic_date']. '</span>
    <br />    
             '
;?><div class="topic_div"><?php echo bbcode($posts_row['post_content']).'<br>'.bbcode($_POST['contexto']);?></div>
            <?
            
}
            }
        
?>
        <?php
$tbl_name2
="replies"
$id $_GET['id'];
$sql2="SELECT * FROM $tbl_name2 WHERE reply_id='$id'";
$result2=mysql_query($sql2) or die(mysql_error());

while(
$rows=mysql_fetch_array($result2)){
?>
                <table width="400" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td><table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">

<tr>
<td width="18%" bgcolor="#F8F7F1"><strong>Por</strong></td>
<td width="5%" bgcolor="#F8F7F1">:</td>
<td width="77%" bgcolor="#F8F7F1"><? echo $rows['reply_by']; ?></td>
</tr>
<tr>
<td bgcolor="#F8F7F1"><strong>Mensaje</strong></td>
<td bgcolor="#F8F7F1">:</td>
<td bgcolor="#F8F7F1"><? echo $rows['reply_content']; ?></td>
</tr>
<tr>
<td bgcolor="#F8F7F1"><strong>Fecha</strong></td>
<td bgcolor="#F8F7F1">:</td>
<td bgcolor="#F8F7F1"><? echo $rows['reply_date']; ?></td>
</tr>
</table></td>
</tr>
</table><br>
<?
}
    echo 
'<hr/>';
            if(isset(
$_SESSION['userid'])){
                
$userid $_SESSION['userid'];
                
$username $_SESSION['username'];
            
                
                echo 
'<h2>Responder:</h2><br />
                <form method="post" action="reply.php?id=' 
$row['topic_id'] . '" name="responder" id="responder" onsubmit="return validarRespuesta();">
                    <div id="respuesta_error"></div>
                        <textarea cols="30" id="reply_content" rows="10" name="reply_content" class="full"></textarea><br />
                        <input type="submit" class="grand splendid" value="Enviar respuesta" />
                    </form>'
;
            }
            else
            {
                echo 
'Tienes que<a href="http://www.forosdelweb.com/f18/login.php"> iniciar sesi&oacute;n</a> para responder.';
                }
            
        }
    }
}

 
?>
 </div></div>
El reply.php es lo mismo lo deje como esta.
El problema que tengo es que cuando agrego una respuesta se ve bien el mensaje,la fecha y el usuario que lo creo, pero no me muestra si por ejemplo agrego mas de 2 respuestas no se ve los otros solamente se ve la primera respuesta que habia hecho.
Saludos y gracias!

Etiquetas: respuesta, foros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:48.