Foros del Web » Programando para Internet » PHP » Zend »

Registro duplicado cuando se hace el insert

Estas en el tema de Registro duplicado cuando se hace el insert en el foro de Zend en Foros del Web. hola a todos tengo este codigo Código PHP: if ( $Hora1 == 04  &&  $index == 39 ){          echo  "<tr>" ;       echo  "<td>" . $Dia ...
  #1 (permalink)  
Antiguo 17/08/2012, 15:33
 
Fecha de Ingreso: marzo-2012
Ubicación: Bogota
Mensajes: 177
Antigüedad: 12 años
Puntos: 2
Registro duplicado cuando se hace el insert

hola a todos


tengo este codigo
Código PHP:
if ($Hora1==04 && $index==39){
    
    echo 
"<tr>";  
    echo 
"<td>".$Dia."</td>";  
    echo 
"<td>".$Total_llamadas."</td>";  
    echo 
"<td>".$Promedio_respuesta."</td>";  
    echo 
"<td>".$Total_abandonadas."</td>";  
    echo 
"<td>".$Promedio_abandono."</td>";  
    echo 
"<td>".$Promedio_duracion."</td>";  
    echo 
"<td>".$Total_otro_estado."</td>";  
    echo 
"<td>".$Promedio_agentes."</td>";  
    echo 
"<td>".$Nivel_servicio."</td>";
    echo 
"<td>".$Fecha1."</td>";    
    echo 
"</tr>";
    
$mysql=mysql_query("INSERT INTO Hora_voz (Hora,Total_llamadas,Promedio_respuesta,Total_abandonadas,Promedio_abandono,Promedio_duracion,Total_otro_estado,Promedio_agentes,Nivel_servicio,Fecha) 
    VALUES ('$Dia','$Total_llamadas','$Promedio_respuesta','$Total_abandonadas','$Promedio_abandono','$Promedio_duracion', '$Total_otro_estado','$Promedio_agentes','$Nivel_servicio','$Fecha1')"
) or die ("problemas en el insert".mysql_error());  
    
    } 
y el insert se realiza 2 veces, es decir me guara el mismo registro 2 veces por que pasa esto me ayudan Gracias
  #2 (permalink)  
Antiguo 17/08/2012, 15:47
 
Fecha de Ingreso: agosto-2012
Ubicación: En algún lugar de México
Mensajes: 41
Antigüedad: 11 años, 8 meses
Puntos: 16
Respuesta: Registro duplicado cuando se hace el insert

Hola, puedes optar por:

Código PHP:

if (!mysql_query("INSERT INTO Hora_voz (Hora,Total_llamadas,Promedio_respuesta,Total_abandonadas,Promedio_abandono,Promedio_duracion,Total_otro_estado,Promedio_agentes,Nivel_servicio,Fecha)  
    VALUES ('$Dia','$Total_llamadas','$Promedio_respuesta','$Total_abandonadas','$Promedio_abandono','$Promedio_duracion', '$Total_otro_estado','$Promedio_agentes','$Nivel_servicio','$Fecha1')"
) )
die(
"Error: ".mysql_error()); 
Ese 04 es un número octal o una cadena. Por que si es una cadena le faltan las comillas
  #3 (permalink)  
Antiguo 17/08/2012, 15:56
 
Fecha de Ingreso: marzo-2012
Ubicación: Bogota
Mensajes: 177
Antigüedad: 12 años
Puntos: 2
Respuesta: Registro duplicado cuando se hace el insert

Cita:
Iniciado por kale86 Ver Mensaje
Hola, puedes optar por:

Código PHP:

if (!mysql_query("INSERT INTO Hora_voz (Hora,Total_llamadas,Promedio_respuesta,Total_abandonadas,Promedio_abandono,Promedio_duracion,Total_otro_estado,Promedio_agentes,Nivel_servicio,Fecha)  
    VALUES ('$Dia','$Total_llamadas','$Promedio_respuesta','$Total_abandonadas','$Promedio_abandono','$Promedio_duracion', '$Total_otro_estado','$Promedio_agentes','$Nivel_servicio','$Fecha1')"
) )
die(
"Error: ".mysql_error()); 
Ese 04 es un número octal o una cadena. Por que si es una cadena le faltan las comillas
Hola no no me sirve :( me sigue apareciendo = los dos registros iguales en la base de datos tedejo todo mi codigo aver si me puedes ayudar

Código PHP:
$gestor = @fopen("REPORTES/report_list_bcms_skill_15_time_00-00_.txt""r");//tarificacion04202012.txt  
if ($gestor) {  
$i=  
$cod=0;  
 
$index=0;

    echo 
"<table border='1' align='center'>";  
    echo 
"<tr>";  
    echo 
"<td>Dia</td><td>Total_llamadas</td><td>Promedio_respuesta</td><td>Total_abandonadas</td><td>Promedio_abandono</td><td>Promedio_duracion</td><td>Total_otro_estado</td><td>Promedio_agentes</td><td>Nivel_servicio</td><td>Fecha</td>";  
    echo 
"</tr>";  
    while ((
$buffer fgets($gestor999)) !== false) { 
$index++;
/*if($index>=7){
exit();
}    */
//$nuevacadena=preg_split("/SUMMARY/",$buffer,2);
    
$texto strtolower($buffer);
    
$arr = array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","%","_","-","*");

echo 
"<br>";
$texto_nuevo str_replace($arr""$texto);
//echo $texto_nuevo;
    
$Dia=substr($texto_nuevo0,11);  
    
$Total_llamadas=substr($texto_nuevo,  14,3);  
    
$Promedio_respuesta=substr($texto_nuevo18,5); 
    
$Total_abandonadas=substr($texto_nuevo27,3);      
    
$Promedio_abandono=substr($texto_nuevo30,5);  
    
$Promedio_duracion=substr($texto_nuevo36,5);  
    
$Total_otro_estado=substr($texto_nuevo60,8);  
    
$Promedio_agentes=substr($texto_nuevo69,4);  
    
$Nivel_servicio =substr($texto_nuevo74,3);  
    
$Fechasubstr($texto_nuevo,  40,2);
    
    
    
$Dia=trim($Dia);//Dia     
    
$Total_llamadas=trim($Total_llamadas);//Total_llamadas 
    
$Promedio_respuesta=trim($Promedio_respuesta);//Promedio_respuesta  
    
$Total_abandonadas=trim($Total_abandonadas);//Total_abandonadas 
    
$Promedio_abandono=trim($Promedio_abandono);//Promedio_abandono  
    
$Promedio_duracion=trim($Promedio_duracion);//Promedio_duracion  
    
$Total_otro_estado=trim($Total_otro_estado);//Total_otro_estado  
    
$Promedio_agentes=trim($Promedio_agentes);//Promedio_agentes  
    
$Nivel_servicio=trim($Nivel_servicio);//Nivel_servicio  
    
$Fecha=trim($Fecha);
    
    
$Fecha1date("d-m" ,time());
$Hora1date("h" ,time());
//echo $Hora1;
    
if ($Hora1==04 && $index==39){echo 1;
    
    echo 
"<tr>";  
    echo 
"<td>".$Dia."</td>";  
    echo 
"<td>".$Total_llamadas."</td>";  
    echo 
"<td>".$Promedio_respuesta."</td>";  
    echo 
"<td>".$Total_abandonadas."</td>";  
    echo 
"<td>".$Promedio_abandono."</td>";  
    echo 
"<td>".$Promedio_duracion."</td>";  
    echo 
"<td>".$Total_otro_estado."</td>";  
    echo 
"<td>".$Promedio_agentes."</td>";  
    echo 
"<td>".$Nivel_servicio."</td>";
    echo 
"<td>".$Fecha1."</td>";    
    echo 
"</tr>";
    if (!
mysql_query("INSERT INTO Hora_voz (Hora,Total_llamadas,Promedio_respuesta,Total_abandonadas,Promedio_abandono,Promedio_duracion,Total_otro_estado,Promedio_agentes,Nivel_servicio,Fecha)  
    VALUES ('$Dia','$Total_llamadas','$Promedio_respuesta','$Total_abandonadas','$Promedio_abandono','$Promedio_duracion', '$Total_otro_estado','$Promedio_agentes','$Nivel_servicio','$Fecha1')"
) )
die(
"Error: ".mysql_error());  
    }
    
    
    
    }  
    
$i++;  
   }  

    echo 
"</table>";          

    if (!
feof($gestor)) {  
        echo 
"Error: fallo inesperado de fgets()\n";  

    }  
    
fclose($gestor); 

mysql_close($link); 
  #4 (permalink)  
Antiguo 17/08/2012, 16:14
 
Fecha de Ingreso: agosto-2012
Ubicación: En algún lugar de México
Mensajes: 41
Antigüedad: 11 años, 8 meses
Puntos: 16
Respuesta: Registro duplicado cuando se hace el insert

Cita:
Iniciado por wendyl Ver Mensaje
Hola no no me sirve :( me sigue apareciendo = los dos registros iguales en la base de datos tedejo todo mi codigo aver si me puedes ayudar

Código PHP:
$gestor = @fopen("REPORTES/report_list_bcms_skill_15_time_00-00_.txt""r");//tarificacion04202012.txt  
if ($gestor) {  
[
COLOR="Magenta"]$i=  [/COLOR//No tiene valor?
$cod=0;  
 
$index=0;

    echo 
"<table border='1' align='center'>";  
    echo 
"<tr>";  
    echo 
"<td>Dia</td><td>Total_llamadas</td><td>Promedio_respuesta</td><td>Total_abandonadas</td><td>Promedio_abandono</td><td>Promedio_duracion</td><td>Total_otro_estado</td><td>Promedio_agentes</td><td>Nivel_servicio</td><td>Fecha</td>";  
    echo 
"</tr>";  
    while ((
$buffer fgets($gestor999)) !== false) { 
$index++;
/*if($index>=7){
exit();
}    */
//$nuevacadena=preg_split("/SUMMARY/",$buffer,2);
    
$texto strtolower($buffer);
    
$arr = array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","%","_","-","*");

echo 
"<br>";
$texto_nuevo str_replace($arr""$texto);
//echo $texto_nuevo;
    
$Dia=substr($texto_nuevo0,11);  
    
$Total_llamadas=substr($texto_nuevo,  14,3);  
    
$Promedio_respuesta=substr($texto_nuevo18,5); 
    
$Total_abandonadas=substr($texto_nuevo27,3);      
    
$Promedio_abandono=substr($texto_nuevo30,5);  
    
$Promedio_duracion=substr($texto_nuevo36,5);  
    
$Total_otro_estado=substr($texto_nuevo60,8);  
    
$Promedio_agentes=substr($texto_nuevo69,4);  
    
$Nivel_servicio =substr($texto_nuevo74,3);  
    
$Fechasubstr($texto_nuevo,  40,2);
    
    
    
$Dia=trim($Dia);//Dia     
    
$Total_llamadas=trim($Total_llamadas);//Total_llamadas 
    
$Promedio_respuesta=trim($Promedio_respuesta);//Promedio_respuesta  
    
$Total_abandonadas=trim($Total_abandonadas);//Total_abandonadas 
    
$Promedio_abandono=trim($Promedio_abandono);//Promedio_abandono  
    
$Promedio_duracion=trim($Promedio_duracion);//Promedio_duracion  
    
$Total_otro_estado=trim($Total_otro_estado);//Total_otro_estado  
    
$Promedio_agentes=trim($Promedio_agentes);//Promedio_agentes  
    
$Nivel_servicio=trim($Nivel_servicio);//Nivel_servicio  
    
$Fecha=trim($Fecha);
    
    
$Fecha1date("d-m" ,time());
$Hora1date("h" ,time());
//echo $Hora1;
    
if ($Hora1==04 && $index==39){echo 1;
    
    echo 
"<tr>";  
    echo 
"<td>".$Dia."</td>";  
    echo 
"<td>".$Total_llamadas."</td>";  
    echo 
"<td>".$Promedio_respuesta."</td>";  
    echo 
"<td>".$Total_abandonadas."</td>";  
    echo 
"<td>".$Promedio_abandono."</td>";  
    echo 
"<td>".$Promedio_duracion."</td>";  
    echo 
"<td>".$Total_otro_estado."</td>";  
    echo 
"<td>".$Promedio_agentes."</td>";  
    echo 
"<td>".$Nivel_servicio."</td>";
    echo 
"<td>".$Fecha1."</td>";    
    echo 
"</tr>";
    if (!
mysql_query("INSERT INTO Hora_voz (Hora,Total_llamadas,Promedio_respuesta,Total_abandonadas,Promedio_abandono,Promedio_duracion,Total_otro_estado,Promedio_agentes,Nivel_servicio,Fecha)  
    VALUES ('$Dia','$Total_llamadas','$Promedio_respuesta','$Total_abandonadas','$Promedio_abandono','$Promedio_duracion', '$Total_otro_estado','$Promedio_agentes','$Nivel_servicio','$Fecha1')"
) )
die(
"Error: ".mysql_error());  
    }
    
    
    
    }  
    
$i++;  
   }  

    echo 
"</table>";          

    if (!
feof($gestor)) {  
        echo 
"Error: fallo inesperado de fgets()\n";  

    }  
    
fclose($gestor); 

mysql_close($link); 
Aqui estoy viendo que lo tienes dentro de un ciclo, probablemente dentro de este se cumple dos veces la condición y por ello se realiza de igual forma 2 veces la inserción.

Si lo que deseas es leer un archivo y trabajar sobre esos valores, puedes hacerlo como en el ejemplo:

Código PHP:
$bufer="";
$gestor = @fopen("REPORTES/report_list_bcms_skill_15_time_00-00_.txt""r");//tarificacion04202012.txt 
if ($gestor) {
    while (!
feof($gestor)) {
        
$bufer.= fgets($gestor4096);
    }
    
fclose ($gestor);

Ahora solo trabajas con la variable $bufer que contiene todo el contenido del archivo
  #5 (permalink)  
Antiguo 17/08/2012, 16:14
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 2 meses
Puntos: 155
Respuesta: Registro duplicado cuando se hace el insert

a ver pega el archivo de texto aqui

este
report_list_bcms_skill_15_time_00-00_.txt

tambien intenta hacer esto:

Código PHP:
Ver original
  1. $sql="INSERT INTO Hora_voz (Hora,Total_llamadas,Promedio_respuesta,Total_abandonadas,Promedio_abandono,Promedio_duracion,Total_otro_estado,Promedio_agentes,Nivel_servicio,Fecha)   VALUES ('$Dia','$Total_llamadas','$Promedio_respuesta','$Total_abandonadas','$Promedio_abandono','$Promedio_duracion', '$Total_otro_estado','$Promedio_agentes','$Nivel_servicio','$Fecha1')";
  2.             echo $sql."<br>";
  3.             if (!mysql_query($sql) )
  4.                 die("Error: ".mysql_error());


nos la facilitamos un poco y si vemos que la impresion del query es doble es que se esta metiendo dos veces en esa parte
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #6 (permalink)  
Antiguo 17/08/2012, 16:26
 
Fecha de Ingreso: marzo-2012
Ubicación: Bogota
Mensajes: 177
Antigüedad: 12 años
Puntos: 2
Respuesta: Registro duplicado cuando se hace el insert

Cita:
Iniciado por mogurbon Ver Mensaje
a ver pega el archivo de texto aqui

este
report_list_bcms_skill_15_time_00-00_.txt

tambien intenta hacer esto:

Código PHP:
Ver original
  1. $sql="INSERT INTO Hora_voz (Hora,Total_llamadas,Promedio_respuesta,Total_abandonadas,Promedio_abandono,Promedio_duracion,Total_otro_estado,Promedio_agentes,Nivel_servicio,Fecha)   VALUES ('$Dia','$Total_llamadas','$Promedio_respuesta','$Total_abandonadas','$Promedio_abandono','$Promedio_duracion', '$Total_otro_estado','$Promedio_agentes','$Nivel_servicio','$Fecha1')";
  2.             echo $sql."<br>";
  3.             if (!mysql_query($sql) )
  4.                 die("Error: ".mysql_error());


nos la facilitamos un poco y si vemos que la impresion del query es doble es que se esta metiendo dos veces en esa parte


1INSERT INTO Hora_voz (Hora,Total_llamadas,Promedio_respuesta,Total_aban donadas,Promedio_abandono,Promedio_duracion,Total_ otro_estado,Promedio_agentes,Nivel_servicio,Fecha) VALUES ('16:0017:00','0','0:00','0','0:00','0:00', '0:00','1.0','','17-08')


no solo muestra este insert pero en mi base de datos si se duplica no se por que


aca les dejo el archivo report


Voice System name: Une calle 76 - BCMS SKILL REPORT

Switch Name: EMTELCO Date: 9:34 am TUE AUG 17, 2012
Skill: 15
Skill Name: LAI_VOZ Acceptable Service Level: 20

AVG AVG AVG TOTAL TOTAL % IN
ACD SPEED ABAND ABAND TALK AFTER FLOW FLOW AUX/ AVG SERV
TIME CALLS ANS CALLS TIME TIME CALL IN OUT OTHER STAFF LEVL

0:00- 1:00 0 0:00 0 0:00 0:00 0:00 0 0 0:00 0.0
1:00- 2:00 0 0:00 0 0:00 0:00 0:00 0 0 0:00 0.0
2:00- 3:00 0 0:00 0 0:00 0:00 0:00 0 0 0:00 0.0
3:00- 4:00 0 0:00 0 0:00 0:00 0:00 0 0 0:00 0.0
4:00- 5:00 0 0:00 0 0:00 0:00 0:00 0 0 0:00 0.0
5:00- 6:00 0 0:00 0 0:00 0:00 0:00 0 0 0:00 0.0
6:00- 7:00 0 0:00 0 0:00 0:00 0:00 0 0 1:12 0.6
7:00- 8:00 0 0:00 0 0:00 0:00 0:00 0 0 1:07 1.5
8:00- 9:00 0 0:00 0 0:00 0:00 0:00 0 0 14:45 3.0



BCMS SKILL REPORT

Switch Name: EMTELCO Date: 9:34 am TUE AUG 17, 2012
Skill: 15
Skill Name: LAI_VOZ Acceptable Service Level: 20

AVG AVG AVG TOTAL TOTAL % IN
ACD SPEED ABAND ABAND TALK AFTER FLOW FLOW AUX/ AVG SERV
TIME CALLS ANS CALLS TIME TIME CALL IN OUT OTHER STAFF LEVL

9:00-10:00 2 0:03 0 0:00 2:06 0:00 0 0 5:32 3.0 100
10:00-11:00 3 0:04 1 3:22 5:51 0:00 0 0 63:41 3.0 75
11:00-12:00 5 0:42 0 0:00 2:47 0:00 0 0 83:08 3.6 80
12:00-13:00 0 0:00 0 0:00 0:00 0:00 0 0 0:00 1.0
13:00-14:00 0 0:00 0 0:00 0:00 0:00 0 0 0:00 1.0
14:00-15:00 0 0:00 0 0:00 0:00 0:00 0 0 0:07 1.0
15:00-16:00 0 0:00 0 0:00 0:00 0:00 0 0 0:40 1.0
16:00-17:00 0 0:00 0 0:00 0:00 0:00 0 0 0:00 1.0
17:00-18:00 0 0:00 0 0:00 0:00 0:00 0 0 2:26 1.0



BCMS SKILL REPORT

Switch Name: EMTELCO Date: 9:34 am TUE AUG 17, 2012
Skill: 15
Skill Name: LAI_VOZ Acceptable Service Level: 20

AVG AVG AVG TOTAL TOTAL % IN
ACD SPEED ABAND ABAND TALK AFTER FLOW FLOW AUX/ AVG SERV
TIME CALLS ANS CALLS TIME TIME CALL IN OUT OTHER STAFF LEVL

18:00-19:00 0 0:00 0 0:00 0:00 0:00 0 0 0:00 1.0
19:00-20:00 0 0:00 0 0:00 0:00 0:00 0 0 41:16 1.0
20:00-21:00 0 0:00 0 0:00 0:00 0:00 0 0 13:07 1.0
21:00-22:00 0 0:00 0 0:00 0:00 0:00 0 0 13:07 1.0
22:00-23:00 0 0:00 0 0:00 0:00 0:00 0 0 13:07 1.0
----------- ----- ----- ---- ----- ----- ------- ---- ---- ------- ----- ---
SUMMARY 0 0:00 0 0:00 0:00 0:00 0 0 57:40 0.7


Entonces simplemente cada hora me actualiza por la linea de esa misma hora

ejemplo son las 5 entonces que me inserte la linea 14:00-15:00
  #7 (permalink)  
Antiguo 17/08/2012, 17:08
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 2 meses
Puntos: 155
Respuesta: Registro duplicado cuando se hace el insert

ya lo anduve checando y me surgen una duda , que es lo que llama a este script?

por lo que veo cumple en la condición que sea la linea 39 y que sean las 4 de la tarde , si lo que llama a este script lo llama dos veces dentro de la misma hora , entonces de debería insertar 2 veces el mismo registro
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #8 (permalink)  
Antiguo 21/08/2012, 07:19
 
Fecha de Ingreso: marzo-2012
Ubicación: Bogota
Mensajes: 177
Antigüedad: 12 años
Puntos: 2
Respuesta: Registro duplicado cuando se hace el insert

Cita:
Iniciado por mogurbon Ver Mensaje
ya lo anduve checando y me surgen una duda , que es lo que llama a este script?

por lo que veo cumple en la condición que sea la linea 39 y que sean las 4 de la tarde , si lo que llama a este script lo llama dos veces dentro de la misma hora , entonces de debería insertar 2 veces el mismo registro
No te entiendo mucho lo que me dices, en el archivo que pegue lo que quiero hacer es que me inserte la linea que es depende de la hora pero me crea 2 registros y no se por que :(

Etiquetas: duplicado, insert, mysql, registro, sql
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 11:02.