2011-06-28 21 views
5

Básicamente, lo único que quiero es que los usuarios ingresen al sitio, ingresen su mensaje y nombre, y los resultados deben mostrarse en la misma página y cuando ingrese otro usuario de nuevo, los resultados del usuario anterior deberían estar allí y todo lo que aparezca debería agregarse a la lista.Formulario html/php simple para mostrar en la misma página

Actualmente tengo:

<form id="form1" name="form1" method="post" action=""> 
<label>Please type in a message 
<input type="text" name="msg" id="msg" /> 
</label> 
<label>and your name 
<input type="text" name="pin" id="name" /> 
</label> 

<p> 
<label>Submit 
<input type="submit" name="submit" id="submit" value="Submit" /> 
</label> 
</p> 
</form> 

<?php 
$msg = $_POST[msg]; 
$name = $_POST[name]; 

?> 
<br /> 
<?php echo "$msg"?> 
<?php echo "$name"?> 

pero cuando otro registro es escribir, la anterior se pierde ...

gracias de antemano

+0

Básicamente, necesita almacenar datos permanentemente en alguna parte.Buscar PHP + MySQL HowTo –

+2

Fyi, utilice la forma correcta de abordar los índices de matriz asociativa, '$ _POST [msg]' funciona solo debido al comportamiento constante indefinido de PHP. Si alguien declara una constante llamada "msg" (con un valor diferente a "msg"), su código dejaría de funcionar. La forma correcta es '$ _POST ['msg'];' – cypher

Respuesta

7

Esto debería hacer lo que quiera. Carga publicaciones anteriores desde posts.txt, agrega la actual, muestra las publicaciones y las guarda. Deberá asegurarse de que posts.txt exista y tenga los permisos correctos.

cosas
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
</head> 

<body> 
<form id="form1" name="form1" method="post" action=""> 
<label>Please type in a message 
<input type="text" name="msg" id="msg" /> 
</label> 
<label>and your name 
<input type="text" name="name" id="name" /> 
</label> 

<p> 
<label>Submit 
<input type="submit" name="submit" id="submit" value="Submit" /> 
</label> 
</p> 
</form> 

<?php 
    $msg = $_POST["msg"]; 
    $name = $_POST["name"]; 
    $posts = file_get_contents("posts.txt"); 
    $posts = "$msg - $name\n" . $posts; 
    file_put_contents("posts.txt", $posts); 
    echo $posts; 
?> 

</body> 
</html> 
+0

Brilliant! Esto es exactamente lo que quería! muchas gracias – khalid

0

Es necesario persistir, o guardar, los datos de sesiones anteriores. Una opción es usar un archivo plano, donde guarda las entradas en un archivo de texto. Esto puede estar bien para un sitio web muy pequeño que recibe muy poco tráfico. Básicamente, cuando alguien publica algo, debe anteponerlo únicamente al contenido de un archivo local.

La otra opción es buscar en una opción de base de datos, como MySQL. Con este método, inserta cada combinación de mensaje/nombre en una base de datos local, y luego saca todos los registros (o la enésima más reciente) y los muestra debajo de su formulario de comentarios.

+0

gracias, creo que la opción de un solo archivo sería la más adecuada ... ¿me pueden indicar una dirección? ¿cómo? – khalid

+0

@khalid Le animo a que consulte las [funciones de edición de archivos] (http://php.net/manual/en/ref.filesystem.php) en PHP y trate de encontrar su propia solución, pero si quisiera algunos proyectos para estudiar. Acabo de tropezar con esta opción gratuita: http://www.inverudio.com/guestbook/ – Sampson

0

Solo muestra la última publicación que realizó. Lo que nunca permitirá que otros usuarios vean lo que has publicado. Para almacenar esto durante un período de tiempo, debe usar archivos o bases de datos.

0

Tendrá que considerar almacenar estos mensajes en un sistema de base de datos. MySQL es una buena opción, pero es mucho más que unas simples líneas de configuración. Puede comenzar por reading the manual. Esto debería proporcionarle todo lo que necesita.

0

No estoy seguro de que te esté siguiendo. ¿Desea que el cuadro de texto tenga el valor de tipo anterior?

<input type="text" value="<?php (isset($_POST[msg])) ? $_POST[msg] : "" ?>" name="msg" id="msg" /> 
+0

no, pero los resultados en la parte inferior de la página se guardan y cuando aparece un nuevo resultado ingresado, el anterior debe ir por la página y el más reciente en la parte superior – khalid

0

Pareja:

$first = $_POST['msg']; 
$second = $_POST['pin']; 

Se necesitan esas comillas simples alrededor de la discusión posterior con el fin de guardarlo en una variable.

En segundo lugar, para almacenar datos, debe guardarlos en algún lugar, ya sea un archivo de texto o una base de datos MySQL. Los datos de publicación solo existen cuando se publica el formulario. Después de eso, es destruido.

Probablemente lo más fácil para usted es agregar a un archivo de texto (si se trata de una aplicación simple).

This should get you started.

3

Ahí es donde se necesita una base de datos. Simplemente cree una base de datos sql simple o cree un archivo adjunto cada vez que un usuario publique su mensaje. Por lo tanto, siempre que su página se cargue, primero debe cargar los datos almacenados previamente y luego continuar.

+0

Nota, la respuesta aceptada utilizó un texto * como base de datos *. Su solución sería mejor si el OP planea escribir más de una página: imagine 'posts1.txt', 'posts2.txt', 'posts3.txt' ... –

Cuestiones relacionadas