Foros del Web » Creando para Internet » Sistemas de gestión de contenidos »

No inserta en tabla ORDERS_TOTAL

Estas en el tema de No inserta en tabla ORDERS_TOTAL en el foro de Sistemas de gestión de contenidos en Foros del Web. Hola, Creo que me ocurre desde que cambie la pagina de servidor, pero no estoy seguro... Tengo una tienda oscommerce. El problema que se me ...
  #1 (permalink)  
Antiguo 08/12/2009, 09:51
 
Fecha de Ingreso: abril-2005
Mensajes: 46
Antigüedad: 19 años
Puntos: 0
No inserta en tabla ORDERS_TOTAL

Hola,

Creo que me ocurre desde que cambie la pagina de servidor, pero no estoy seguro...

Tengo una tienda oscommerce.
El problema que se me presenta es que, desde hace unos dias, no exactamente cuando ni a raiz de que, no me inserta registros en la tabla orders_total cuando un cliente realiza un pedido.

El pedido lo realiza con normalidad y el cliente no nota nada, aparentemente. Yo me di cuenta al ver que no iban apareciendo los pedidos en el panel de administracion. Investigando vi que no se veian porque no entraban en la select que hace para seleccionarlos ya que esta hace un LEFT JOIN con la tabla orders_total y claro, no coinciden. Los pedidos si que quedan insertados en la tabla ORDERS.

Viendo el codigo fuente he llegado a ver el punto exacto en cual deberia hacer el INSERT. Es en la pagina checkout_process.php, en el siguiente trozo de codigo exactamente:

Código:
  for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) {

  $sql_data_array = array('orders_id' => $insert_id,
                            'title' => $order_totals[$i]['title'],
                            'text' => $order_totals[$i]['text'],
                            'value' => $order_totals[$i]['value'], 
                            'class' => $order_totals[$i]['code'], 
                            'sort_order' => $order_totals[$i]['sort_order']);
					
	tep_db_perform(TABLE_ORDERS_TOTAL, $sql_data_array);

  }
Conretamente es la funcion tep_db_perform la que hace el INSERT. Pero el problema viene de antes ya que ni siquiera entra al bucle FOR ya que, he puesto un "echo" antes del FOR para comprobar la variable "sizeof($order_totals)" y en efecto me da el valor 0. Al ser 0 ni siquiera entra al FOR y por lo tanto ni mucho menos hace el insert.

La cuestion es: ¿Porque esta variable puede estar llegando a este punto con valor 0? ¿Si antes me funcionaba, que he podido tocar para que pase esto? ¿Es posible que el cambio de servidor tenga algo que ver en esto? Yo no le veo ninguna relacion pero las fechas mas o menos coinciden, aunque ya digo que no creo que tenga nada que ver el cambio de servidor, creo mas posible que haya tocado yo algo que no debiera.

Por favor, es muy importante para nosotros solucionar este tema cuanto antes.

Muchas gracias, un saludo.
  #2 (permalink)  
Antiguo 08/12/2009, 16:47
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
Respuesta: No inserta en tabla ORDERS_TOTAL

depura tu consulta con or die(mysql_error());

Saludos
__________________
Hospedaje Web al mejor costo!
  #3 (permalink)  
Antiguo 08/12/2009, 17:45
 
Fecha de Ingreso: abril-2005
Mensajes: 46
Antigüedad: 19 años
Puntos: 0
Respuesta: No inserta en tabla ORDERS_TOTAL

He visto que la variable $order_totals se inicia aqui un poco antes en las siguiente lineas de codigo:

Código:
  require(DIR_WS_CLASSES . 'order_total.php');
  $order_total_modules = new order_total;

  $order_totals = $order_total_modules->process();
Entonces he ido a comprobar la funcion process() del fichero order_total.php.

he estado probando, poniendo "echo" para que imprima para ver en qué medida el código y por donde pasó o no pasó en la funcion de process() del fichero clase order_total.php:

Código:
    function process() {
        
      $order_total_array = array();
      if (is_array($this->modules)) {
          
        reset($this->modules);
        while (list(, $value) = each($this->modules)) {
                
          $class = substr($value, 0, strrpos($value, '.'));
          if ($GLOBALS[$class]->enabled) {
            $GLOBALS[$class]->process();

            for ($i=0, $n=sizeof($GLOBALS[$class]->output); $i<$n; $i++) {
                        
              if (tep_not_null($GLOBALS[$class]->output[$i]['title']) && tep_not_null($GLOBALS[$class]->output[$i]['text'])) {
                          
                $order_total_array[] = array('code' => $GLOBALS[$class]->code,
                                             'title' => $GLOBALS[$class]->output[$i]['title'],
                                             'text' => $GLOBALS[$class]->output[$i]['text'],
                                             'value' => $GLOBALS[$class]->output[$i]['value'],
                                             'sort_order' => $GLOBALS[$class]->sort_order);
              }
            }
          }
        }
      }

      return $order_total_array;
    }


No se cumple la siguiente condición: if (is_array ($ this-> modules))

Al no complir la condicion del if ni siquiera entra dentro asi que es normal que no inserte nada. La pregunta es, ¿por qué esta condición no se cumple (is_array ($ this-> modules))?

Ya no sé dónde buscar más ... no se me ocurre que es lo que falla ...
  #4 (permalink)  
Antiguo 09/12/2009, 17:12
 
Fecha de Ingreso: abril-2005
Mensajes: 46
Antigüedad: 19 años
Puntos: 0
Respuesta: No inserta en tabla ORDERS_TOTAL

SOLUCIONADO. El problema era que no existia la variable en la base de datos que contenia los ficheros de la carpeta orders_total bueno mas bien tenia un valor vacio, por eso no creaba el array y por tanto no pasaba del IF.

Gracias por todo.
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:22.