Foros del Web » Programando para Internet » PHP »

Redirigir al tema despues de crearlo

Estas en el tema de Redirigir al tema despues de crearlo en el foro de PHP en Foros del Web. Hola a todos! Estoy desarrollando un foro en el cual tengo un problema que cuando el usuario crea el tema quiero que lo lleve directamente ...
  #1 (permalink)  
Antiguo 17/01/2011, 07:06
Avatar de ale_dla  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 189
Antigüedad: 15 años
Puntos: 3
Redirigir al tema despues de crearlo

Hola a todos!
Estoy desarrollando un foro en el cual tengo un problema que cuando el usuario crea el tema quiero que lo lleve directamente al post. pero no me deja me tira este error:
Código PHP:
WarningCannot modify header information headers already sent by (output started at nuevo/header.php:87in nuevo/index.php on line 149 
Mi codigo es este:
Código PHP:

<?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.";
}

echo 
'<h2>Nuevo tema</h2>';
if(isset(
$_SESSION['id']))
{
    
//el usuario esta logueado
    
if($_SERVER['REQUEST_METHOD'] != 'POST')
    {    
                 
        
// el formulario no ha sido publicado todavía
        // recuperar las categorías de la base de datos para su uso en el menú desplegable
        
$sql "SELECT
                    cat_id,
                    cat_name,
                    cat_description
                FROM
                    categories"
;
        
        
$result mysql_query($sql);
        
        if(!
$result)
        {
            
//la consulta falla
            
echo 'Error al seleccionar desde la  base de datos. Intente de nuevo.';
        }
        else
        {
            if(
mysql_num_rows($result) == 0)
            {
                
//no hay categorias creadas
                
if($_SESSION['user_level'] == 1)
                {
                    echo 
'No hay categorias creadas.';
                }
                else
                {
                    echo 
'No puedes crear un tema.Contacta con el administrador.';
                }
            }
            else
            {
        
                echo 
'<form method="post" action="" class="form_nuevo" onsubmit="return validate_form ( );" enctype="multipart/form-data" name="topicform" id="topicform">
                    T&iacute;tulo: <input type="text" name="topic_subject" class="input_title" /><br />
                    Categor&Iacute;a:'

                
                echo 
'<select name="topic_cat">';
                    while(
$row mysql_fetch_assoc($result))
                    {
                        echo 
'<option value="' $row['cat_id'] . '" class="input_cat">' $row['cat_name'] . '</option>';
                    }
                echo 
'</select><br />';    
                    
                echo 
'Post: <br /><textarea name="post_content" id="post_content" rows="25" cols="100%" /></textarea><br /><br />
                    <div id="wrap"><input type="submit" value="Enviar nuevo tema" class="button" /></div>
                 </form>'
;
            }
        }
    }
    else
    {
        
        
$query  "BEGIN WORK;";
        
$result mysql_query($query);
        
        if(!
$result)
        {
            
            echo 
'Se produjo un error al crear el tema. Por favor, intentelo de nuevo mas tarde.';
        }
        else
        {
    
            
// el formulario se ha publicado, entonces lo guarda
           // inserta el tema en la tabla los primeros temas, y luego  guarda el tema en la tabla de post,topics.

            
$sql "INSERT INTO 
                        topics(topic_subject,
                               topic_date,
                               topic_cat,
                               topic_by)
                   VALUES('" 
mysql_real_escape_string($_POST['topic_subject']) . "',
                               NOW(),
                               " 
mysql_real_escape_string($_POST['topic_cat']) . ",
                               " 
$_SESSION['id'] . "
                               )"
;
                     
            
$result mysql_query($sql);
            if(!
$result)
            {
                
//muestro el error
                
echo 'Se produjo un error al insertar el tema. Por favor, intEntelo de nuevo mas tarde.<br /><br />' mysql_error();
                
$sql "ROLLBACK;";
                
$result mysql_query($sql);
            }
            else
            {
                
// la consulta trabajo la primera vez, ahora comienza la segunda consulta
                 // recupera el id del tema recien creado para el uso en la consulta de los temas
                
$topicid mysql_insert_id();
                
                
$sql "INSERT INTO
                            posts(post_content,
                                  post_date,
                                  post_topic,
                                  post_by)
                        VALUES
                            ('" 
mysql_real_escape_string($_POST['post_content']) . "',
                                  NOW(),
                                  " 
$topicid ",
                                  " 
$_SESSION['id'] . "
                            )"
;
                
$result mysql_query($sql);
                
                if(!
$result)
                {
                    
//algo salio mal, muestro el error
                    
echo 'Se produjo un error al crear el tema. Por favor, intentelo de nuevo mas tarde.<br /><br />' mysql_error();
                    
$sql "ROLLBACK;";
                    
$result mysql_query($sql);
                }
                else
                {
                    
$sql "COMMIT;";
                    
$result mysql_query($sql);
                    
header("Location: ../forums/?id='. $topicid . '");  // problema
                    
exit();
                }
            }
        }
    }
  
 }
else
{
    
    
//el usuario no esta logueado
    
echo 'Ups.... tienes que <a href="../login.php">iniciar sesion</a> para crear un tema.';
}
echo 
'<br />';
 
?>
</div></div>
<?php
include 'include/php/footer.php';
?>
Donde tengo el comentario //problema no me redirige.
Quien pueda ayudarme se los agradezco mucho.
Saludos y gracias!
  #2 (permalink)  
Antiguo 17/01/2011, 07:10
Avatar de odiseus  
Fecha de Ingreso: enero-2011
Mensajes: 109
Antigüedad: 13 años, 3 meses
Puntos: 3
Respuesta: Redirigir al tema despues de crearlo

El problema es que tienes algo antes del header que imprimire por pantalla.

Para utilizar header te tienes que cerciorar que no has imprimido nada por pantalla, p.j: hacer echo y todo lo relacionado.

Etiquetas: tema, 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 05:16.