Foros del Web » Programando para Internet » PHP »

Los script PHP se ejecutan 2 veces ???

Estas en el tema de Los script PHP se ejecutan 2 veces ??? en el foro de PHP en Foros del Web. Hace mucho te escribi unas pruebas en unos mensajes arriba, lo hiciste? Es decir, lo probaste con los cambios pequeños que te mencione ? Es ...

  #31 (permalink)  
Antiguo 31/05/2005, 11:45
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Hola!

Hace mucho te escribi unas pruebas en unos mensajes arriba, lo hiciste?

Es decir, lo probaste con los cambios pequeños que te mencione ?

Es probable que por ahi vaya, pero bueno, quien sabe.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #32 (permalink)  
Antiguo 31/05/2005, 12:27
 
Fecha de Ingreso: noviembre-2004
Mensajes: 176
Antigüedad: 13 años, 1 mes
Puntos: 0
Perdona Neuron_376...
hice los cambios que me dijiste pero de igual forma se siguen ejecutando dos veces
  #33 (permalink)  
Antiguo 31/05/2005, 12:54
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Hola

Bueno, pues esta muy raro, tal vez tengas que hacer otro archivo limpio de 0, donde vas pegando paso a paso todo tu script para ver donde empieza a generar el problema, es decir, pega primero los includes, y has un:

<script>
alert("Aqui Estoy");
</script>

Asi, si ese mensaje te aparece solamente una vez, sabes que estas bien, cuando empieze a aparecerte dos veces sabras que realmente se ejecuta don veces.

Tambien, a los cambios que te di antes, agrega este JavaScript, si realmente vez el alert 2 veces, entonces el script si se esta ejecutando 2 veces, sino lo ves 2 veces quiere decir que tu teoria acerca del tipo de conexion y bases de datos debe ser el problema.

Creo que lo primero es aclarar si realmente se ejecuta 2 veces o no, y eso lo lograras con el alert.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #34 (permalink)  
Antiguo 31/05/2005, 14:03
 
Fecha de Ingreso: noviembre-2004
Mensajes: 176
Antigüedad: 13 años, 1 mes
Puntos: 0
Bien...
como dices tu neuron puse el alert y me encuentro con la sorpresa que solo lo ejecuta una vez, pero..... en la db y el objeto boleta ( que podria haber sido cualquiera!! ) se ejecuta dos veces porque al agregar un producto cuenta dos y al actualizar el stock en uno lo hace en dos
  #35 (permalink)  
Antiguo 31/05/2005, 14:13
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 12 años, 8 meses
Puntos: 2
Bien!!!

Ya es un avance no crees ? a mi se me hacia muy raro eso de dos veces, entonces bien, intenta ir depurando paso a paso esos modulos donde puede estar el error, ya sabes que el script solo corre una vez, ahora es cosa de donde haces el update y porque lo toma por dos.

Suerte!!
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #36 (permalink)  
Antiguo 31/05/2005, 14:29
 
Fecha de Ingreso: noviembre-2004
Mensajes: 176
Antigüedad: 13 años, 1 mes
Puntos: 0
Justamente ahi esta el problema porque los updates a la db los estoy haciendo en el mismo script al igual que agregar items a la boleta
  #37 (permalink)  
Antiguo 31/05/2005, 14:58
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
Solo por curiosidad

Verifica en esta linea
Código PHP:
$cantidad $RS->fields["stock"] - $cantidad;
$SQL "UPDATE productos SET stock = '".$cantidad."' WHERE ide = '".$_POST["txtIde"]."' "
Poner un echo antes del update asi, solo para ver que valor toma $cantidad despues de restarle al stock.
Código PHP:
$cantidad $RS->fields["stock"] - $cantidad;
echo 
$cantidad;
$SQL "UPDATE productos SET stock = '".$cantidad."' WHERE ide = '".$_POST["txtIde"]."' "
  #38 (permalink)  
Antiguo 01/06/2005, 08:38
 
Fecha de Ingreso: noviembre-2004
Mensajes: 176
Antigüedad: 13 años, 1 mes
Puntos: 0
dwaks...
hice lo que dijiste y el resultado que imprime es correcto, pero igualmente actualiza dos veces la db, por algun oscuro motivo lo hace cuando no imprimo ningun valor, es decir ejecuto el script y hago el header sin ninguna pausa
  #39 (permalink)  
Antiguo 01/06/2005, 09:04
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
Quita el header que manda a boleta.php, despues corre el script, verifica los datos y dinos si se repite?? sino se repite es porque algo en boleta hace que regrese a este script de agregar.

Verifica eso y me avisas estare pendiente.
  #40 (permalink)  
Antiguo 02/06/2005, 16:05
 
Fecha de Ingreso: noviembre-2004
Mensajes: 176
Antigüedad: 13 años, 1 mes
Puntos: 0
dwaks...
hice lo que dijiste y el resultado que imprime es correcto, pero igualmente actualiza dos veces la db, por algun oscuro motivo lo hace cuando no imprimo ningun valor, es decir ejecuto el script y hago el header sin ninguna pausa
  #41 (permalink)  
Antiguo 02/06/2005, 17:05
Avatar de otreblanc  
Fecha de Ingreso: mayo-2005
Ubicación: Chiapas, la última frontera...
Mensajes: 73
Antigüedad: 12 años, 7 meses
Puntos: 0
Hola!

Donde haces tus pruebas? (me refiero al navegador o algun IDE)

Yo desarrollo en PHP Expert Editor que tiene un 'Run(F9)' y cuando hago las operaciones de manipulacion de datos ('INSERT') mi base de datos reflejaba lo mismo que te pasa a ti (2 veces la operacion).

Me pareció raro, y lo que hice fue hacer las pruebas desde el navegador directamente. Aqui si funciona correctamente. Haber si te funciona!

Enjoy! xD
  #42 (permalink)  
Antiguo 02/06/2005, 17:35
 
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 249
Antigüedad: 14 años
Puntos: 0
Revisa en tu configuración de apache, puede que tengas la misma linea corriendo dos veces (lo dudo bastante... pero vale la pena verificar).

Luego estoy de acuerdo en verificar con algún IDE o desde algún otro server (de modo de descargar tu servidor).
__________________
Crónicas de un Programador es un sitio que registra lo que ocurre cada día en la vida de un desarrollador. Aquí, intentaremos contar nuestras experiencias diarias, errores, aciertos y técnicas, que pueden llegar a serles de utilidad.
  #43 (permalink)  
Antiguo 03/06/2005, 09:30
 
Fecha de Ingreso: noviembre-2004
Mensajes: 176
Antigüedad: 13 años, 1 mes
Puntos: 0
Otreblanc....

...eso de "PHP Expert Editor" lamentablemente es solo para windows (trabajo en linux) y por eso hago las pruebas directamente en el browser (firefox-1.0.4, IExplorer, Konqueror, y otros)......

de todas formas voy a instalar el expert editor que me dices y lo voy a debbuguear...
...Saludos
  #44 (permalink)  
Antiguo 03/06/2005, 09:31
 
Fecha de Ingreso: noviembre-2004
Mensajes: 176
Antigüedad: 13 años, 1 mes
Puntos: 0
Charcab...
...lo del server esta en un 99% descartado, ya que he probado en tres servers distintos incluyendo [email protected] y es por ello que no creo que sea el server

....Saludos
  #45 (permalink)  
Antiguo 06/06/2005, 15:08
 
Fecha de Ingreso: enero-2005
Mensajes: 15
Antigüedad: 12 años, 10 meses
Puntos: 1
2 ejecuciones

No veo nada raro en el scripter, pero tampoco puedo poner la manos al fuego por su correcta ejecucion. pues no he visto el codigo de las clases.

Lo que si te puedo decir es que para finiquitar tu duda sobre la doble ejecucion, te hagas un script con una variable de session, que se incrementa en 1 ej

if (!isset($_SESSION['demo'])) $_SESSION['demo']=1;
$_SESSION['demo']++;
echo $_SESSION['demo'];

si tus script se ejecutan 2 veces el incremento seria de 3, si tu servidor esta bien , solo seria 2 y si pasa eso el de codigo y no de servidor el problema y a trazar se ha dicho nomas.
  #46 (permalink)  
Antiguo 06/06/2005, 15:12
 
Fecha de Ingreso: noviembre-2004
Mensajes: 176
Antigüedad: 13 años, 1 mes
Puntos: 0
kubrick....
...he hecho esta prueba y por ello es que estoy segurissimo que se ejecutan dos veces, puesto que la variable de session se incrementa

...Saludos y Gracias !!!!
  #47 (permalink)  
Antiguo 06/06/2005, 15:26
 
Fecha de Ingreso: noviembre-2004
Mensajes: 176
Antigüedad: 13 años, 1 mes
Puntos: 0
....lo otro es que no es problema de las clases ya que en el sgte script no utilizo ninguna clase excepto la ADODB

Código PHP:
<?php
    
/**
     * insert_asiento.php
     *
     * Para grabar un asiento contable.
     * @author        Jose Garcia Gonzalez <[email protected]>
     * @version        beta
     * @copyright    JGG
     */
    /**
     * @package Cuentas
     */

include($_SERVER['DOCUMENT_ROOT']."config.php");
include(
$_SERVER['DOCUMENT_ROOT']."class/adodb/adodb.inc.php");
include(
$_SERVER['DOCUMENT_ROOT']."class/adodb/tohtml.inc.php");
include(
$_SERVER['DOCUMENT_ROOT']."inc/funciones.php");
//include($_SERVER['DOCUMENT_ROOT']."valores-enviados.php");
session_start();

/**
 * para probar la ejecucion unica del script
 * esta variable la muestro en asientos_manuales.php y luego la destruyo
 */
$_SESSION["xxx"]++;


$DB NewADOConnection('mysql');
$DB->SetFetchMode(ADODB_FETCH_ASSOC);
$DB->debug false;
$DB->Connect($HOST$DB_USER$DB_PASS$DB_NAME);
/*
if ( [email protected]$DB->Connect($HOST, $DB_USER, $DB_PASS, $DB_NAME) ) {
    echo "Error al conectar la base de datos ";
    exit;
}
*/
/**
 * Asignacion de variables.
 */
$fecha InvertirFecha($_POST["fecha"]);
$numero $_POST["numero"];
$nombre $_POST["nombre"];
$glosa $_POST["glosa"];

/**
 * Insert's en la base de datos.
 */
for ( $i=0$icount($_POST["cuenta"]); $i++ ) {

    if ( !
$_POST["debito"][$i] && !$_POST["credito"][$i] )
        continue;
        
    
$cuenta $_POST["cuenta"][$i];
    
$_POST["debito"][$i] ? $debito $_POST["debito"][$i] : $debito 0;
    
$_POST["credito"][$i] ? $credito $_POST["credito"][$i] : $credito 0;

    
$SQL "INSERT INTO asientos_contables (numero, fecha, cuenta, descripcion, "
            
."glosa, debito, credito, balance) "
            
."VALUES "
            
."($numero, '$fecha', '$cuenta', '$nombre', "
            
."'$glosa', $debito, $credito, 0)";
    
$DB->Execute($SQL);

}
$DB->Close();

header("Location: ../asientos_manuales.php");
?>
  #48 (permalink)  
Antiguo 07/06/2005, 10:56
 
Fecha de Ingreso: noviembre-2004
Mensajes: 176
Antigüedad: 13 años, 1 mes
Puntos: 0
Sonrisa Solucionado !!!!!!!

...Al fin.... despues de quebrarme la cabeza por mas de una seman logramos dar con la solucion al problema (...y digo logramos por la gran ayuda e interes de ustedes)....
....Era una simple linea de javascript la cual invocaba dos veces al presionar un boton

antes
Código PHP:
    $boton .= "&nbsp;";
/********** aqui el error *******************/
    
$boton .= "<a href=\"javascript:".$accionJS."\" onClick=\"".$accionJS."\" ";
/*****************************/
    
$boton .= "onMouseMove=\"MouseIn('".$id_boton."', '".$img_on_mouse_in."')\" ";
    
$boton .= "onMouseOut=\"MouseOut('".$id_boton."', '".$img_on_mouse_out."')\" ";
    
$boton .= "title=\"".strtoupper($tipo_boton)."\"><img align=\"absmiddle\" ";
    
$boton .= "onMouseMove=\"MouseIn('".$id_boton."', '".$img_on_mouse_in."')\" ";
    
$boton .= "onMouseOut=\"MouseOut('".$id_boton."', '".$img_on_mouse_out."')\" ";
    
$boton .= "img src=\"".$img_boton."\" title=\"".strtoupper($tipo_boton)."\" name=\"".$id_boton."\" ";
    
$boton .= "border=\"0\" width=\"25\" height=\"25\" id=\"".$id_boton."\">".strtoupper($tipo_boton)."</a>";
    
$boton .= "&nbsp;\n";

return(
$boton); 
... ya que tenia un link y ademas un evento el cual no se como me enviaba dos veces el formulario y por ende lo procesaba dos veces en la pagina de destino

ahora
Código PHP:
    $boton .= "&nbsp;";
    
$boton .= "<a href=\"javascript:".$accionJS.";\" ";
    
$boton .= "onMouseMove=\"MouseIn('".$id_boton."', '".$img_on_mouse_in."')\" ";
    
$boton .= "onMouseOut=\"MouseOut('".$id_boton."', '".$img_on_mouse_out."')\" ";
    
$boton .= "title=\"".strtoupper($tipo_boton)."\"><img align=\"absmiddle\" ";
    
$boton .= "onMouseMove=\"MouseIn('".$id_boton."', '".$img_on_mouse_in."')\" ";
    
$boton .= "onMouseOut=\"MouseOut('".$id_boton."', '".$img_on_mouse_out."')\" ";
    
$boton .= "img src=\"".$img_boton."\" title=\"".strtoupper($tipo_boton)."\" name=\"".$id_boton."\" ";
    
$boton .= "border=\"0\" width=\"25\" height=\"25\" id=\"".$id_boton."\">".strtoupper($tipo_boton)."</a>";
    
$boton .= "&nbsp;\n";
    
    return ( 
$boton ); 
Agradezco a todos quienes participaron de este problemilla que resulto ser error (como suele suceder) del programador !!! .............jasjasjasjas

Saludos y Gracias !!!
  #49 (permalink)  
Antiguo 07/06/2005, 13:22
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
Bueno solo para refleccionar.
Como te pudiste dar cuenta en ninguno de tus post de este problema que comentaste pusiste nada de los links esos que muestras ahora.

Asi que nadie pudo dar con errores obvios por falta de informacion.
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 14:59.