Foros del Web » Programando para Internet » PHP »

principiante: boton submit, registro duplicado

Estas en el tema de principiante: boton submit, registro duplicado en el foro de PHP en Foros del Web. Hola!!!, hice un formulario de "deja tu comentario" en dreamweaver, lo conecte a una base de datos y abajo hice ke se mostraran los ultimos ...
  #1 (permalink)  
Antiguo 24/05/2011, 10:31
 
Fecha de Ingreso: marzo-2011
Mensajes: 6
Antigüedad: 13 años
Puntos: 0
Pregunta principiante: boton submit, registro duplicado

Hola!!!, hice un formulario de "deja tu comentario" en dreamweaver, lo conecte a una base de datos y abajo hice ke se mostraran los ultimos 10 registros de la base de datos!.

funcionaba muy bien! (era muy similar a un twitter para ke tengan una idea), pero no se que paso y ahora cuando rellenas los datos queda duplicado en la base de datos.

EJ:
------------------------------------------
autor:
Tymofek
--------------
Comentario:
lalalalalallala


---------------------
insertar registro /
---------------------------------------


ultimos comentarios!!!

----------------
24/05/2011
tymofek:
lalalalalallala

-----------------
24/05/2011
tymofek:
lalalalalallala

-----------------


osea, se guardo 2 veces al poner 1 click en insertar registro.
entonces creo que es porque algo debo haber modificado en php, creo o.O

nota: en la base de datos quedan guardados exactamente iguales, con la misma fecha y hora (y segundos) pero con un primary key diferente.

si me dijeran que funcion es la que hace el submit podria verificar si esta repetida o algo asi, ya que el formulario trate de hacerlo 2 veces en la misma hoja de dreamweaver entonces "kizas" esta haciendo submit 2 veces :S

Gracias de ante mano!
  #2 (permalink)  
Antiguo 24/05/2011, 10:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: principiante: boton submit, registro duplicado

Estas pidiendo que adivinemos que haces mal en tu código porque duplica los registros, imposible sin saber cual es el código.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 24/05/2011, 10:40
 
Fecha de Ingreso: marzo-2011
Mensajes: 6
Antigüedad: 13 años
Puntos: 0
Respuesta: principiante: boton submit, registro duplicado

pense ke era algo simple, pero bien aqui el codigo!


Código PHP:
Ver original
  1. <?php require_once('Connections/comentarios.php'); ?>
  2. <?php
  3. if (!function_exists("GetSQLValueString")) {
  4. function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
  5. {
  6.   if (PHP_VERSION < 6) {
  7.     $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  8.   }
  9.  
  10.   $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
  11.  
  12.   switch ($theType) {
  13.     case "text":
  14.       $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  15.       break;    
  16.     case "long":
  17.     case "int":
  18.       $theValue = ($theValue != "") ? intval($theValue) : "NULL";
  19.       break;
  20.     case "double":
  21.       $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
  22.       break;
  23.     case "date":
  24.       $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  25.       break;
  26.     case "defined":
  27.       $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
  28.       break;
  29.   }
  30.   return $theValue;
  31. }
  32. }
  33.  
  34. $editFormAction = $_SERVER['PHP_SELF'];
  35. if (isset($_SERVER['QUERY_STRING'])) {
  36.   $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
  37. }
  38.  
  39. if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  40.   $insertSQL = sprintf("INSERT INTO comentarios (autor, comentario) VALUES (%s, %s)",
  41.                        GetSQLValueString($_POST['autor'], "text"),
  42.                        GetSQLValueString($_POST['comentario'], "text"));
  43.  
  44.   mysql_select_db($database_comentarios, $comentarios);
  45.   $Result1 = mysql_query($insertSQL, $comentarios) or die(mysql_error());
  46.  
  47.   $insertGoTo = "coemntarios.php";
  48.   if (isset($_SERVER['QUERY_STRING'])) {
  49.     $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
  50.     $insertGoTo .= $_SERVER['QUERY_STRING'];
  51.   }
  52.   header(sprintf("Location: %s", $insertGoTo));
  53. }
  54.  
  55. if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  56.   $insertSQL = sprintf("INSERT INTO comentarios (fecha, autor, comentario) VALUES (%s, %s, %s)",
  57.                        GetSQLValueString($_POST['fecha'], "date"),
  58.                        GetSQLValueString($_POST['autor'], "text"),
  59.                        GetSQLValueString($_POST['comentario'], "text"));
  60.  
  61.   mysql_select_db($database_comentarios, $comentarios);
  62.   $Result1 = mysql_query($insertSQL, $comentarios) or die(mysql_error());
  63. }
  64.  
  65. $maxRows_comentarios = 10;
  66. $pageNum_comentarios = 0;
  67. if (isset($_GET['pageNum_comentarios'])) {
  68.   $pageNum_comentarios = $_GET['pageNum_comentarios'];
  69. }
  70. $startRow_comentarios = $pageNum_comentarios * $maxRows_comentarios;
  71.  
  72. mysql_select_db($database_comentarios, $comentarios);
  73. $query_comentarios = "SELECT * FROM comentarios ORDER BY ID_comentario DESC";
  74. $query_limit_comentarios = sprintf("%s LIMIT %d, %d", $query_comentarios, $startRow_comentarios, $maxRows_comentarios);
  75. $comentarios = mysql_query($query_limit_comentarios, $comentarios) or die(mysql_error());
  76. $row_comentarios = mysql_fetch_assoc($comentarios);
  77.  
  78. if (isset($_GET['totalRows_comentarios'])) {
  79.   $totalRows_comentarios = $_GET['totalRows_comentarios'];
  80. } else {
  81.   $all_comentarios = mysql_query($query_comentarios);
  82.   $totalRows_comentarios = mysql_num_rows($all_comentarios);
  83. }
  84. $totalPages_comentarios = ceil($totalRows_comentarios/$maxRows_comentarios)-1;
  85. ?>
  86. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  87. <html xmlns="http://www.w3.org/1999/xhtml">
  88. <head>
  89. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  90. <title>Documento sin título</title>
  91. </head>
  92.  
  93. <body>
  94. <div>
  95.   <p>&nbsp;</p>
  96.   <div>
  97.     <div>
  98.       <form action="<?php echo $editFormAction; ?>" method="post" name="form1" id="form1">
  99.         <table align="center">
  100.           <tr valign="baseline">
  101.             <td nowrap="nowrap" align="right">Autor:</td>
  102.             <td><input type="text" name="autor" value="" size="32" /></td>
  103.           </tr>
  104.           <tr valign="baseline">
  105.             <td nowrap="nowrap" align="right">Comentario:</td>
  106.             <td><textarea name="comentario" cols="32" rows="5"></textarea></td>
  107.           </tr>
  108.           <tr valign="baseline">
  109.             <td nowrap="nowrap" align="right">&nbsp;</td>
  110.             <td><input type="submit" value="Insertar registro" /></td>
  111.           </tr>
  112.         </table>
  113.         <input type="hidden" name="MM_insert" value="form1" />
  114.       </form>
  115.       <p>&nbsp;</p>
  116.     </div>
  117.   </div>
  118.   <p>&nbsp;</p>
  119.   <div>
  120.     <table width="290" border="5" align="center" cellspacing="20">
  121.      <?php do { ?>
  122.       <tr>
  123.         <td width="176" height="29"><?php echo $row_comentarios['autor']; ?> dijo...</td>
  124.       </tr>
  125.        <tr>
  126.           <td height="95" align="left" valign="top"><?php echo $row_comentarios['comentario']; ?></td>
  127.         </tr>
  128.         <tr>
  129.           <td><?php echo $row_comentarios['fecha']; ?></td>
  130.         </tr>
  131.         <?php } while ($row_comentarios = mysql_fetch_assoc($comentarios)); ?>
  132.     </table>
  133.   </div>
  134.   <p>&nbsp;</p>
  135.   <p>&nbsp;</p>
  136.   <p>&nbsp;</p>
  137.   <p>&nbsp;</p>
  138. </div>
  139. </body>
  140. </html>
  141. <?php
  142. mysql_free_result($comentarios);
  143. ?>
  #4 (permalink)  
Antiguo 24/05/2011, 10:44
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: principiante: boton submit, registro duplicado

Código PHP:
Ver original
  1. if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  2.   $insertSQL = sprintf("INSERT INTO comentarios (autor, comentario) VALUES (%s, %s)",
  3.  
  4.  
  5. if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  6.   $insertSQL = sprintf("INSERT INTO comentarios (fecha, autor, comentario) VALUES (%s, %s, %s)",

por que insertará dos veces chequea eso
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #5 (permalink)  
Antiguo 24/05/2011, 10:48
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: principiante: boton submit, registro duplicado

Si te fijas bien existen DOS insert a la base de datos:
Código PHP:
Ver original
  1. if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  2. /* ACA ESTA EL PRIMERO  */
  3.   $insertSQL = sprintf("INSERT INTO comentarios (autor, comentario) VALUES (%s, %s)",
  4.                        GetSQLValueString($_POST['autor'], "text"),
  5.                        GetSQLValueString($_POST['comentario'], "text"));
  6.  
  7.   mysql_select_db($database_comentarios, $comentarios);
  8.   $Result1 = mysql_query($insertSQL, $comentarios) or die(mysql_error());
  9.  
  10.   $insertGoTo = "coemntarios.php";
  11.   if (isset($_SERVER['QUERY_STRING'])) {
  12.     $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
  13.     $insertGoTo .= $_SERVER['QUERY_STRING'];
  14.   }
  15.   header(sprintf("Location: %s", $insertGoTo));
  16. }
  17.  
  18. if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  19. /* ACA ESTA EL SEGUNDO  */
  20.   $insertSQL = sprintf("INSERT INTO comentarios (fecha, autor, comentario) VALUES (%s, %s, %s)",
  21.                        GetSQLValueString($_POST['fecha'], "date"),
  22.                        GetSQLValueString($_POST['autor'], "text"),
  23.                        GetSQLValueString($_POST['comentario'], "text"));
  24.  
  25.   mysql_select_db($database_comentarios, $comentarios);
  26.   $Result1 = mysql_query($insertSQL, $comentarios) or die(mysql_error());
  27. }

Elimina este codigo:
Código PHP:
Ver original
  1. if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  2.   $insertSQL = sprintf("INSERT INTO comentarios (fecha, autor, comentario) VALUES (%s, %s, %s)",
  3.                        GetSQLValueString($_POST['fecha'], "date"),
  4.                        GetSQLValueString($_POST['autor'], "text"),
  5.                        GetSQLValueString($_POST['comentario'], "text"));
  6.  
  7.   mysql_select_db($database_comentarios, $comentarios);
  8.   $Result1 = mysql_query($insertSQL, $comentarios) or die(mysql_error());
  9. }

Que esta entre las lineas 55 y 63 y nos cuentas como te fue...

PD: Eso lo genero DW no se sabe porque talvez hiciste algún cambio.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #6 (permalink)  
Antiguo 24/05/2011, 10:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: principiante: boton submit, registro duplicado

Jajaja, yo por eso odio Dreamweaver.

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 24/05/2011, 10:50
 
Fecha de Ingreso: marzo-2011
Mensajes: 6
Antigüedad: 13 años
Puntos: 0
Respuesta: principiante: boton submit, registro duplicado

no te burles efectivamente tenias razon xDDD, tengo derecho a no sentirme estupido, ya que este es mi primer intento por usar php mysql y el segundo para usar dreamweaver, me parece que es bastante bueno mi resultado.

solo basto con borrar esto.

i
Código PHP:
Ver original
  1. f ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  2.   $insertSQL = sprintf("INSERT INTO comentarios (fecha, autor, comentario) VALUES (%s, %s, %s)",
  3.                        GetSQLValueString($_POST['fecha'], "date"),
  4.                        GetSQLValueString($_POST['autor'], "text"),
  5.                        GetSQLValueString($_POST['comentario'], "text"));
  6.  
  7.   mysql_select_db($database_comentarios, $comentarios);
  8.   $Result1 = mysql_query($insertSQL, $comentarios) or die(mysql_error());
  9. }

Muchas Gracias bUllan9ebrio
  #8 (permalink)  
Antiguo 24/05/2011, 10:52
 
Fecha de Ingreso: marzo-2011
Mensajes: 6
Antigüedad: 13 años
Puntos: 0
Respuesta: principiante: boton submit, registro duplicado

Jotaincubus, Muchas gracias, pero estaba escribiendo mi respuesta, no alcanze a ver la tuya y lo borre como se me ocurrio ke saldria bien y todo salio bien, muchas gracias les deje Karma a ambos.

Gracias.

Solucionado!
  #9 (permalink)  
Antiguo 24/05/2011, 10:54
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 18 años, 11 meses
Puntos: 394
Respuesta: principiante: boton submit, registro duplicado

Ya se porque tiene dos INSERT y para mi que es un error HUMANO ya que en el primero solo tiene DOS campos de la tabla (AUTOR, COMENTARIO) entonces demas que despues vio la necesidad de colocar el campo (FECHA) en la misma tabla y no modifico el query sino que utilizo el asistente de INSERSIONES para guardar ese campo nuevo... Lo que debes hacer es colocar ese tercer campo en el primer INSERT:

Código PHP:
Ver original
  1. $insertSQL = sprintf("INSERT INTO comentarios (fecha, autor, comentario) VALUES (%s, %s, %s)",
  2.                        GetSQLValueString($_POST['fecha'], "date"),
  3.                        GetSQLValueString($_POST['autor'], "text"),
  4.                        GetSQLValueString($_POST['comentario'], "text"));
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???

Etiquetas: duplicado, insertar-registro, mysql
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 20:09.