Formularios

Hola, estoy programando yo mismo un foro en php basándome en el aspecto del phpbb.
Tengo un problema con la vista previa de los mensajes, la vista previa la consigo perfectamente, el problema es una pijada que quiero poner
Encima de la tabla de las opciones de envío tengo pues a una ruta de navegación que la hago mediante una consulta a una tabla con las categorías y mensajes por medio de un numero de id que mando por dirección.
Entonces la estructura seria
Foros de discusión > Lo que sea
-----
Tabla para escribir el mensaje
----
Enviar | Vista Previa
----
Foros de discusión > Lo que sea
Cuando doy a vista previa tendría que salir:
Foros de discusión > lo que sea
----
Vista previa
----
FORMULARIO de antes con los datos antiguos
----
ENVIAR | vista previa
----
Foros de discusuin > lo que sea
Pero no me sale lo de Froso de discusión > lo que sea
Expongo el pseudocodigo que tengo:
- Imprimo la navegación esa
- SI pide enviar
---- Envío el mensaje
- Sino
---- SI ha pedido vista previa
-------- Mostrar vista previa y formulario relleno
---- SINO ha pedido eso
-------- Mostra formulario vacio
- Imprimo navegacion otra vez
Espero que sepa que puede fallar.

1 respuesta

Respuesta
1
He revisado el código y solo he encontrado una cosa que puede estar dando problemas:
Sueles usar el símbolo mayor para separar las opciones de la barra de navegación, pero ese símbolo es un carácter especial para html que indica el final del nombre de una etiueta. Quizá pueda estar dándote problemas. En lugar de usar ese símbolo utiliza su correspondiente codificación: > (esos 4 caracteres represntan el símbolo mayor en html). Ejemplo:
echo '<p><b><a href="./index.php">Foros de Discusión</a> > ';
Si con eso no se soluciona, dime cuál es el contenido que se muestra al poner esa página en el navegador. ¿Aparece la barra de navegación superior, o la inferior?
Antes de dar a la vista previa salen das dos, pero cuando das a la previa se quitan y sale la previa y el formulario rellanado con lo que has escrito antes.
He probado de meter lo del navegador dentro del if pa ver si sale pero no, es como si cuando das a la previa y recarga la página es como si no leyera las consultas a bases de datos. Es raro.
¿Lo haces todo en la misma página? Supongo que si.
Primero tienes que mostrar la navegación siempre, sin incluir esa parte del código dentro de ningún if.
Luego compruebas si se ha pulsado algún botón, como es la primera vez que entras no se ha pulsado nada y tienes que mostrar el espacio para escribir.
Si ya se ha pulsado un botón y es el botón vista previa, muestras la vista previa y luego es espacio para escribir relleno.
Ahora, fuera de los if, vuelves a mostrar la navegación.
El pseudocódigo que pones debería funcionar. Ponme si quieres el código php y lo reviso.
Quizá has introducido esa barra de navegación dentro de algún if, o tienes estilos que impiden que se muestre. También revisa la conexión a la base de datos y la forma de obtener lo que tienes que mostrar en esa barra.
Te paso el código
----
<?
$categoria = $_GET["cat"];
?>
<html>
<head>
<title>Asociación Juvenil Scout Jaire :: FORO ::</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="../estilos/comun.css" rel="stylesheet" type="text/css">
</head>
<body>
<table id=#contenido align="center">
<tr>
<td valign="top">
<!-- ImageReady Slices (banner_top.psd) -->
<TABLE WIDTH=750 BORDER=0 CELLPADDING=0 CELLSPACING=0>
<TR>
<TD>
<IMG SRC="../images/banner_top_01.gif" WIDTH=150 HEIGHT=50 ALT=""></TD>
<TD>
<IMG SRC="../images/banner_top_02.gif" WIDTH=150 HEIGHT=50 ALT=""></TD>
<TD>
<IMG SRC="../images/banner_top_03.gif" WIDTH=150 HEIGHT=50 ALT=""></TD>
<TD>
<IMG SRC="../images/banner_top_04.gif" WIDTH=150 HEIGHT=50 ALT=""></TD>
<TD>
<IMG SRC="../images/banner_top_05.gif" WIDTH=150 HEIGHT=50 ALT=""></TD>
</TR>
<TR>
<TD>
<IMG SRC="../images/banner_top_06.gif" WIDTH=150 HEIGHT=50 ALT=""></TD>
<TD>
<IMG SRC="../images/banner_top_07.gif" WIDTH=150 HEIGHT=50 ALT=""></TD>
<TD>
<IMG SRC="../images/banner_top_08.gif" WIDTH=150 HEIGHT=50 ALT=""></TD>
<TD>
<IMG SRC="../images/banner_top_09.gif" WIDTH=150 HEIGHT=50 ALT=""></TD>
<TD>
<IMG SRC="../images/banner_top_10.gif" WIDTH=150 HEIGHT=50 ALT=""></TD>
</TR>
</TABLE>
<center>
<table width="750" border="0" cellpadding="0" cellspacing="0" id="menu">
<tr>
<td>| <a href="../jaire.php?go=home" target="_self">Home</a> | <a href="./index.php">Foro</a> |</td>
</tr>
</table>
</center>
<!-- End ImageReady Slices -->
<?
$result = mysql_db_query("scoutjaire","select * from foro_categoria where id='$categoria'");
while($row=mysql_fetch_array($result)){
echo '<p><b><a href="./index.php">Foros de Discusión</a> > ';
echo '<a href="./verCategoria.php?cat='.$categoria.'">'.$row["nombre"].'</a></b>';
}
mysql_free_result($result);
include ("../db.inc");
if (!isset($_POST["form"])) {
if (isset($_POST["prev"])) {
echo 'hola hola';
}
echo '
<form action=nuevoTema.php method=POST>
<input type=hidden name=cat value='.$categoria.'
<input type=hidden name=respuestaDe value=-1>
<p>
<table id=tablaForo cellspacing=0 cellpadding=5><tr class=titulo><td colspan=2><center>Publicar Nuevo Tema</center></td></tr>
<tr>
<td width=25%><B>Asunto</b></td><td><input type=text style="width:300px;"class=campoForm name=asunto></td>
</tr>
<tr>
<td><b>Nombre</b></td><td><input type=text style="witdh:100px;"class=campoForm name=nombre></td>
</tr>
<tr>
<td valign=top><b>Cuerpo del Mensaje</b><p><center><small><b>Caritas</b></small></center></td><td><textarea name="message" rows="15" cols="35" wrap="virtual" style="width:450px" class=campoForm tabindex="3"></textarea></td>
</tr>
<tr>
<td colspan=2><center><input type=submit class=botonForm name=prev value="Vista Previa"> <input type=submit class=botonForm name=form value=Enviar></center></td>
</tr>
</table>';
$result = mysql_db_query("scoutjaire","select * from foro_categoria where id='$categoria'");
while($row=mysql_fetch_array($result)){
echo '<p><b><a href="./index.php">Foros de Discusión</a> > ';
echo '<a href="./verCategoria.php?cat='.$categoria.'">'.$row["nombre"].'</a></b>';
}
mysql_free_result($result);
} else {
echo 'Enviar mensaje';
}
?>
</td>
</tr>
</table>
</body>
</html>
Vamos a ver si conseguimos averiguar cual es el problema. Se me ocurre lo siguiente:
Después de darle varias vueltas creo que he encontrado el problema. Tu creas la página que tiene un parámetro GET, pero cuando pulsas sobre cualquier botón del formulario, no propagas el parámetro GET, y tampoco lo tienes en una variable de sesión. Esto hace que al entrar en la página para mostrar la vista previa, al consultar la base de datos el valor de $categoria esté vacío.
Para solucionarlo, cuando creas el formulario tienes que poner lo siguiente:
Echo '
<form action="nuevoTema.php?cat='.$categoria.'" method=POST>
...
Pruébalo y me comentas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas