Foros del Web » Programando para Internet » PHP »

Sucede algo extraño con consulta + insercion...no entiendo

Estas en el tema de Sucede algo extraño con consulta + insercion...no entiendo en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 05/12/2005, 16:23
 
Fecha de Ingreso: octubre-2005
Mensajes: 95
Antigüedad: 12 años, 1 mes
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
  #2 (permalink)  
Antiguo 05/12/2005, 16:30
 
Fecha de Ingreso: julio-2003
Ubicación: Benilloba/Valencia
Mensajes: 69
Antigüedad: 14 años, 4 meses
Puntos: 0
Lo he mirado un poco por encima solo pero fijate en esto:
if (mysql_num_rows($consulta) == 0) no seria mejor poner??
if (!mysql_num_rows($consulta)) , yo creo que si.

Es como yo lo hago y me va bien.
  #3 (permalink)  
Antiguo 05/12/2005, 16:32
 
Fecha de Ingreso: octubre-2005
Mensajes: 95
Antigüedad: 12 años, 1 mes
Puntos: 1
lo veré de inmediato y veremos que pasa...muchas gracias por la voluntad...
  #4 (permalink)  
Antiguo 05/12/2005, 16:49
 
Fecha de Ingreso: octubre-2005
Mensajes: 95
Antigüedad: 12 años, 1 mes
Puntos: 1
lamentablemente sucede lo mismo...lo raro es que siempre con los registros que si existen, funciona bien....es solo cuando los registros no existen que sucede eso...
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:10.