Tengo un problemilla que ya se me ha hecho enorme

agradezco cualquier comentario URGE

GRACIAS
si es posible que me contesten a mi correo lo agradezco sinceramente...
Axell.
| |||
Inserciones dobles con php y mysql Saludos, Tengo un problemilla que ya se me ha hecho enorme ![]() agradezco cualquier comentario URGE ![]() GRACIAS si es posible que me contesten a mi correo lo agradezco sinceramente... Axell. |
| |||
Re: Inserciones dobles con php y mysql De hecho todo el código se encuentra en una misma pagina, perdon por no explicar esto, como comente esta pagina presenta un formulario cuando no recibe una variable llamada action, cuando esta es recibida y contiene el valor "guardar", se llama el procedimiento para el almacenamiento, si es insertada correctamente llama una funcion que imprime un mensaje indicando el proceso terminado con exito y en caso contrario un error, lo que he notado es que despues de llenar el formulario y enviar la informacion la pagina se ejecuta 2 veces insertando dos registros... gracias !!! ![]() ![]() ![]() |
| |||
Re: Inserciones dobles con php y mysql Hola, Como bien ha dicho BHONOX PON EL CODIGO!!!!!!!!!!! Es que sin el solo podemos dar palos de ciego. Es que aunque seamos los mejores expertos en PHP del mundo mundial, SOMOS HUMANOS (la mayoria ;) ) y no podemos conocer tu codigo si no lo pones. Espero no haberte molestado con el tono de mi respuesta. Para que veas que soy una buena persona (muy en el fondo), te voy a dar algun consejo para que intentes solucionarlo tu solito. 1.- ¿ en cuantos puntos ejecutas la consulta de insercion ? Mas que nada, es que para que se graben 2 registros hay que ejecutar 2 veces la insercion. Si tienes en todo tu codigo solo 1 sentenca del tipo $rs=mysql_query($consulta_insercion) y no esta dentro de ningun tipo de bucle, funcion recursiva o funcion que es llamada varias veces, es decir, solo se ejecuta una vez, entonces no tengo ni idea de lo que puede ser. 2.- Si tienes varios puntos donde se ejecuta la insercion, averigua cuales son los que se ejecutan. Para ello, yo usaria el viejo metodo de poner echos justo delante o justo detras de la linea donde se ejecuta la consulta. El mensaje del echo identificara que insercion se ejecuta. Lugo miras tu codigo para saber por que se han ejecutado. Una de las cosas que echo en falta en PHP es un depurador, que haria que el seguimiento de la ejecucion del script fuera pan comido. 3.- Comentas que usas varias ramas de ejecucion, y que usas switch. ¿ has revisado que no te falta ningun switch, o ; o } o si no te faltan, que esten bien colocados ? ¿ las condiciones estan bien definidas, no has puesto = cuando querias poner == ? Una gran mayoria de los errores son por culpa de equivocaciones y olvidos al escribir. 4.- ¿has revisado la logica de tus condiciones? Repasalo a mano, simulando tu la ejecucion del script. Prueba los consejos que te doy. Quizas, con mucha suerte, he dado con el fallo y lo puedes solucionar. Son consejos fruto de la experiencia. Aunque sin el codigo es como intentar leer el futuro. Josemi Aprendiz de mucho, maestro de poco. |
| |||
Re: Inserciones dobles con php y mysql <? session_start(); if (!isset ($HTTP_SESSION_VARS['usrData'])){ exit(); die(); } function headerPage(){ ?> <html> <head> <title>Intersys M&eacute;xico S.A. de C.V.</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link href="../extras/style.css" rel="stylesheet" type="text/css"> </head> <body leftmargin="5" topmargin="0" marginwidth="0" marginheight="0"> <? } //headerPage function encabezadoPage(){ global $usrData; ?> <table width="830" border="0" cellspacing="0" cellpadding="0"> <tr> <td align="left" class="item"></td> </tr> <tr> <td align="left" class="titulo">Control de Minutas</td> </tr> <tr> <td align="left" class="itemsml"><a href="index.php?action=crear"></a> <? if ($usrData['minutasA'] == 1 && $usrData['minutasC'] == 1){ ?> <table width="150" border="1" cellspacing="0" bordercolor="#FF6600"> <tr> <td width="69" align="center" bgcolor="#FF6600" class="itemsml"><a href="index.php?action=crear"><fon t color="#FFFFFF">Agregar</font></a></td> <td align="center" bgcolor="#FF6600" class="itemsml"><a href="index.php"><font color="#FFFFFF">Buscar</font></a></td> </tr> </table> <? } ?> <? if ($usrData['minutasA'] == 0 && $usrData['minutasC'] == 1){ ?> <table width="75" border="1" cellspacing="0" bordercolor="#FF6600"> <tr> <td align="center" bgcolor="#FF6600" class="itemsml"><a href="index.php"><font color="#FFFFFF">Buscar</font></a></td> </tr> </table> <? } ?> <? if ($usrData['minutasA'] == 1 && $usrData['minutasC'] == 0){ ?> <table width="75" border="1" cellspacing="0" bordercolor="#FF6600"> <tr> <td width="69" align="center" bgcolor="#FF6600" class="itemsml"><a href="index.php?action=crear"><fon t color="#FFFFFF">Agregar</font></a></td> </tr> </table> <? } ?> </td> </tr> <tr |
| |||
Re: Inserciones dobles con php y mysql perdon, el código es algo extenso, lo pongo a su disposición en esta pagina: cabe mensionar que la inserción es de la siguiente manera: se inserta un registro con la información de una minuta (información de una junta), una vez insertado se toma el id de este y se procede a insertar un registro por cada uno de los pendientes registrados en la minuta, mi problema es que son los pendientes los que se duplican: http://148.246.129.238/codigo/index.zip http://148.246.129.238/codigo/db.zip omitan en la parte inicial del archivo la información de la sesion index.zip --> codigo db.zip --> base de datos gracias y disculpen por no iniciar poniendo el codigo... axell. |
| |||
Re: Inserciones dobles con php y mysql Hola, Por lo que veo, el problema lo tienes con la seccion de guardar, en concreto al llamar a la funcion almacenaPendiente(). Como esta dentro de un bucle, tienes que verificar que se ejecuta el numero correcto de veces. Para eso, te aconsejo que justo delante de llamar a almacenaPendiente() dentro del if dentro del bucle, hagas echos de las variables que vas ha escribir en el registro. Asi veras que registros s se escriben en cada ejecucion. Si es que se escriben mas registros de los que deberian, revisa condiciones del bucle y del if. Si las condiciones estan bien, comprueba el valor de las variables que controlan el bucle y el if. Si tienen valores que no son correctos, trazas sus asignaciones a lo largo del flujo del programa. Si pruebas todo lo anterior, y sigue sin funcionar, revisa la logica del programa. Y es que en eso no te podemos ayudar. Tu eres el que has hecho ( o mantienes) el script, tu sabes lo que tiene que hacer en cada momento. Yo no he visto ningun error de codigo (;, } y demas). Pero he visto cosas "extrañas", que no tienen que estar mal, todo depende de la logica del programa. Por ejemplo, lo de $id_minuta. Lo obtienes al llamar a almacena(), y luego, sin hacer nada con ese valor, lo pisas con el valor que te devuelve la funcion obtienePorFecha(). Para mi eso no tiene sentido, pero puede que sea la forma de hacerlo de acuerdo con la logica del programa. Ya lamento no poderte ayudar mas. Intenta trazar, aunque sea a mano, la ejecucion del script, linea a linea, viendo que valores toman las variables. Quizas encuentres que lo que en su dia te parecia logico y que era como tenia que ser, es lo que ahora hace que no te funcione. Suerte. Josemi Aprendiz de mucho, maestro de poco. |
| |||
Re: Inserciones dobles con php y mysql Josemi: gracias por tus recomendaciónes, a decir verdad esas cosas como lo de $id_minuta mi flujo original era obtener el numero identificador de la minuta almacenada con la instrucción mysql_insert_id pero al realizarse dos inserciones causaba problemas y busque alternativas, (desquiciadas quiza, pero tu sabes lo que es desesperarse cuando algo no sale y urge)... gracias, y estaré en contacto con esto... saludos ! axell. |