Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/12/2005, 16:23
Bocaz
 
Fecha de Ingreso: octubre-2005
Mensajes: 95
Antigüedad: 18 años, 5 meses
Puntos: 1
Sucede algo extraño con consulta + insercion...no entiendo

Hola amigos del foro...
Lamentablemente tengo un problemilla que hecho que me rompa el craneo pensando y no logro encontrar la solución.
No se si a alguien le ha pasado.

Lo que intento hacer es simplemente una consulta preguntando si existe un registro antes de insertarlo.
Consiste en preguntar con sql si existe algun registro en que coincida un nº de orden de servicio y el código del cliente.
si el mysql_num_rows me arroja 0 es por que no existe y procedo a insertar y luego cierro las conexiones, si no existe simplemente cierro las conexiones.
Es una funcion. y aqui está el código:
Código PHP:
function AgregarOrdenServicio($Variables)
{
   
$valores explode(",",$Variables);
   echo 
"<span class='TextoNormal'>-> Recibiendo valores.</span><br>";
   
$valores[0]=GetSQLValueString($valores[0], "int");
   
$valores[1]=GetSQLValueString($valores[1], "text");
   
$valores[2]=GetSQLValueString($valores[2], "text");
   
$valores[3]=GetSQLValueString($valores[3], "int");
   
$valores[4]=GetSQLValueString(fecha($valores[4]), "date");
   
$valores[5]=GetSQLValueString(fecha($valores[5]), "date");
   
$valores[6]=GetSQLValueString($valores[6], "text");
   
$valores[7]=GetSQLValueString($valores[7], "text");
   
$valores[8]=GetSQLValueString($valores[8], "text");
   
$valores[9]=GetSQLValueString($valores[9], "int");   
   echo 
"<span class='TextoNormal'>-> Verificando si ya existe este nº de Orden de servicio para este Cliente...</span><br>";   
   
$existe "SELECT * FROM ordenes_de_servicios WHERE ordserv_cli_cod = $valores[3] and ordserv_num = $valores[1];";
   
$lnk Conectar();
   
$consulta mysql_query($existe,$lnk);
   if (
mysql_num_rows($consulta) == 0)
   {
      echo 
"<span class='TextoNormal'>-> No registrado.</span><br>";
      
mysql_free_result($consulta);
      
$insercion mysql_query("INSERT INTO ordenes_de_servicios (ordserv_cod, ordserv_num, ordserv_estado, ordserv_cli_cod, ordserv_femi, ordserv_frecep, ordserv_pqtnom, ordserv_pqtrut, ordserv_pqtfono, ordserv_usu_cod) VALUES ($valores[0],$valores[1],$valores[2],$valores[3],$valores[4],$valores[5],$valores[6],$valores[7],$valores[8],$valores[9]);",$lnk);
      
mysql_close($lnk);      
      return 
true;      
   }
   else
   {
      echo 
"<span class='TextoNormal'>-> Registrado.</span><br>";
      
mysql_free_result($consulta);
      
mysql_close($lnk);
      return 
false;
   }

Bien....a mi me perece que está bien, ahora lo que ocurre es que cuando quiero ingresar un registro ( que yo se que no existe por que lo verifico con un cliente mysql , el SQLyog ) la funcion iprime todos los echo que están cuando el registro existe y finalmente me devuelve false.. (que no insertó), pero = inserta....
He probado....y eliminando esta línea de código funciona a la perfección, indica cuando existe el registro y cuando no:

Código PHP:
$insercion mysql_query("INSERT INTO ordenes_de_servicios (ordserv_cod, ordserv_num, ordserv_estado, ordserv_cli_cod, ordserv_femi, ordserv_frecep, ordserv_pqtnom, ordserv_pqtrut, ordserv_pqtfono, ordserv_usu_cod) VALUES ($valores[0],$valores[1],$valores[2],$valores[3],$valores[4],$valores[5],$valores[6],$valores[7],$valores[8],$valores[9]);",$lnk2); 
Lamentablemente esta linea es la que inserta...
al colocarla nuevamente vuelve a fallar la comprobación...me arroja que existe, (cuando en realidad no existe) y a demás inserta el registro...

Realmente estoy PLOP!
Si pueden ayudar les agradecería mucho.
Saludos

Última edición por Bocaz; 05/12/2005 a las 16:41