Foros del Web » Programando para Internet » PHP »

Cada ves que se actualiza se crea un registro en blanco

Estas en el tema de Cada ves que se actualiza se crea un registro en blanco en el foro de PHP en Foros del Web. Hola, tengo este pequeño codigo que lo pretendo usar como un libro de visitas. El problema es que cada ves que actualizo la pagina se ...
  #1 (permalink)  
Antiguo 09/02/2009, 13:14
 
Fecha de Ingreso: marzo-2008
Mensajes: 63
Antigüedad: 16 años, 1 mes
Puntos: 0
Cada ves que se actualiza se crea un registro en blanco

Hola,

tengo este pequeño codigo que lo pretendo usar como un libro de visitas.

El problema es que cada ves que actualizo la pagina se inserta un registro en blanco en la BD.

Como se puede solucionar ese problema ??



Gracias

Código PHP:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Documento sin título</title>
</head>

<body>
<? require('config.php');
$conecta mysql_query("SELECT * FROM mensajes ORDER BY id ASC");
while(
$row mysql_fetch_array($conecta)){
    echo 
$row['nick'];
    echo 
$row['mensaje'];
    echo 
"<hr>";
}
mysql_free_result($conecta);
?>
<hr>

<form name="form1" method="post" action="index.php">
  <p>
    <label><strong>Nick</strong>
      &nbsp;&nbsp;&nbsp;&nbsp;
      <input type="text" name="nick" id="nick">
    </label>
  </p>
  <p>
    <label><strong>E-Mail</strong>
&nbsp;
<input type="text" name="email" id="email">
    </label>
  </p>
  <p>
    <label><strong>Mensaje</strong>
      <textarea name="mensaje" id="mensaje" cols="45" rows="5">
</textarea>
    </label>
  </p>
  <p>
    <label><strong>Enviar</strong>
<input type="submit" name="enviar" id="enviar" value="Enviar">
    </label>
  </p>
</form>

<?
require('config.php');

$nick=$_POST['nick'];
$email=$_POST['email'];
$mensaje=$_POST['mensaje'];

mysql_query("INSERT INTO mensajes(nick, email, mensaje)
                VALUES('$nick', '$email', '$mensaje')"
$conecta);
mysql_close($conecta);
?>
</body>
</html>
  #2 (permalink)  
Antiguo 09/02/2009, 13:20
Avatar de zick  
Fecha de Ingreso: mayo-2007
Ubicación: Los Angeles - Chile
Mensajes: 168
Antigüedad: 16 años, 11 meses
Puntos: 2
Respuesta: Cada ves que se actualiza se crea un registro en blanco

Que tal.

Primero.. ayudarte un poquito corriguiendo algunas cosas..

vasta que coloques una sola vez el require('config.php') en la pagina.. duplicarla.. no es necesario.

Segun tu consulta, esto ocurre por que cada vez que abres tu pagina, automaticamente de guarda un dato en la base. Deberias condicionarla, por ejemplo, cuando alguien haga un submit en el formulario. Me explico:

Cita:
<?
require('config.php');

$nick=$_POST['nick'];
$email=$_POST['email'];
$mensaje=$_POST['mensaje'];

if(isset($_POST)){

mysql_query("INSERT INTO mensajes(nick, email, mensaje)
VALUES('$nick', '$email', '$mensaje')", $conecta);
}
mysql_close($conecta);
?>
Es algo simple y no tan retocado.. quizas alguien puede ayudar con un código mas producido.
Saludos!
__________________
SZC - Aplicaciones y Servicios.
http://www.szc.cl
Los Angeles - Chile
  #3 (permalink)  
Antiguo 09/02/2009, 14:49
 
Fecha de Ingreso: marzo-2008
Mensajes: 63
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Cada ves que se actualiza se crea un registro en blanco

Lamentablemente no funciona tu idea
  #4 (permalink)  
Antiguo 09/02/2009, 15:32
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: Cada ves que se actualiza se crea un registro en blanco

La idea es simple y si debe funcionar, otra cosa es que lo estés haciendo mal, Bien, este es el código que debes usar:

Código:
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<title>Documento sin título</title> 
</head> 

<body> 
<? require('config.php'); 
$conecta = mysql_query("SELECT * FROM mensajes ORDER BY id ASC"); 
while($row = mysql_fetch_array($conecta)){ 
    echo $row['nick']; 
    echo $row['mensaje']; 
    echo "<hr>"; 
} 
mysql_free_result($conecta); 
?> 
<hr> 

<form name="form1" method="post" action="index.php"> 
  <p> 
    <label><strong>Nick</strong> 
      &nbsp;&nbsp;&nbsp;&nbsp; 
      <input type="text" name="nick" id="nick"> 
    </label> 
  </p> 
  <p> 
    <label><strong>E-Mail</strong> 
&nbsp; 
<input type="text" name="email" id="email"> 
    </label> 
  </p> 
  <p> 
    <label><strong>Mensaje</strong> 
      <textarea name="mensaje" id="mensaje" cols="45" rows="5"> 
</textarea> 
    </label> 
  </p> 
  <p> 
    <label><strong>Enviar</strong> 
<input type="submit" name="enviar" id="enviar" value="Enviar"> 
    </label> 
  </p> 
</form> 

<? 
if (isset($_POST["nick"])) {
   $nick=$_POST['nick']; 
   $email=$_POST['email']; 
   $mensaje=$_POST['mensaje']; 

   mysql_query("INSERT INTO mensajes(nick, email, mensaje) 
                VALUES('$nick', '$email', '$mensaje')", $conecta); 
   mysql_close($conecta);
} 
?> 
</body> 
</html>
Mi código es algo distinto, es cierto que no es necesario colocar isset($_POST["campo"]) pero yo lo hago así, o sea, coloco el campo por costumbre y además para el caso de que haya más de un form enviándose a la misma página, pues se distingue que form es por el campo. Bien, espero que te sirva.
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 15:40.