PHP - varios select con sum y sus updates

   
Vista:

varios select con sum y sus updates

Publicado por trebmal (4 intervenciones) el 10/03/2013 23:51:53
Hola, el siguiente codigo suma los datos correspondientes a un telefono y a un mes, y los pasa a una tabla temporal donde se deberian cargar los datos de todo el año de ese numero. El primer mes lo hace correctamente ( los datos de enero de un telefono), pero el mes siguiente, no lo ejecuta y no me da error, en cambio si los ejecuto de manera individual mes a mes, funciona correctamente, pero la intencion es que rellene todo en el mismo proceso.
Alguien me puede orientar,

Muchas gracias,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// ******** Mes Gener
 
$conexio = mysql_connect($bd_host, $bd_usuario, $bd_password); // conexion al servidor
mysql_select_db($bd_base, $conexio); //conexion a la base de datos concreta 
 
$a=0;
$t=1;
$tipus_trafic = "";
 
 
$sql="SELECT tipus_trafic, sum(trucadas) as truc01, sum(durada) as min01,  sum(import_net) as net01, sum(import_fra) as brut01 FROM telefons2012 WHERE mes = 01 and numero = $numero_triat GROUP bY tipus_trafic ORDER BY num_tipus_trafic";
$resultat = mysql_query($sql,$conexio);
while($row = mysql_fetch_array($resultat) or die(mysql_error())){
 
$truc01[] = $row['truc01'];
$min01[] = $row['min01'];
$brut01[] = $row['brut01'];
$net01[] = $row['net01'];
 
$tipus_trafic[] = $row['tipus_trafic'];
 
echo "<p>" .$t.";".$tipus_trafic[$a].";".$truc01[$a].";".$min01[$a].";".$brut01[$a].";".$net01[$a]."</p>";
 
 
$sql="UPDATE trafictmp set truc01='$truc01[$a]', min01='$min01[$a]', brut01='$brut01[$a]', net01='$net01[$a]' where nomgest='$tipus_trafic[$a]'";
$res01=mysql_query($sql,$conexio);
 
$a++;
$t++;
 
	}
 
//**************** Febrer
 //conexio al servidor de bases de dades
 
$conexio = mysql_connect($bd_host, $bd_usuario, $bd_password); // conexion al servidor
mysql_select_db($bd_base, $conexio); //conexion a la base de datos concreta 
 
$a=0;
$t=1;
$tipus_trafic = "";
$num_tipus_trafic="";
$nomgest = "";
 
$sql="SELECT tipus_trafic, sum(trucadas) as truc02, sum(durada) as min02,  sum(import_net) as net02, sum(import_fra) as brut02 FROM telefons2012 WHERE mes = 02 and numero = $numero_triat GROUP bY tipus_trafic ORDER BY num_tipus_trafic";
$resultat = mysql_query($sql,$conexio);
while($row = mysql_fetch_array($resultat) or die ("Error en:  " . mysql_error ())){
 
 
$truc02[] = $row['truc02'];
$min02[] = $row['min02'];
$brut02[] = $row['brut02'];
$net02[] = $row['net02'];
 
$tipus_trafic[] = $row['tipus_trafic'];
 
echo "<p>" .$t.";".$tipus_trafic[$a].";".$truc02[$a].";".$min02[$a].";".$brut02[$a].";".$net02[$a]."</p>";
 
 
$sql="UPDATE trafictmp  set truc02='$truc02[$a]', min02='$min02[$a]', brut02='$brut02[$a]', net02='$net02[$a]' where nomgest='$tipus_trafic[$a]'";
$res02=mysql_query($sql,$conexio);
 
$a++;
$t++;
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

varios select con sum y sus updates

Publicado por xve (5513 intervenciones) el 11/03/2013 07:33:14
Hola Trebmail, he revisado tu código, y lo veo un poco raro...
Utilizas Arrays para coger los datos y luego con una variable contadora actualizas un update...

No seria mejor hacerlo directamente?... algo así:
1
2
3
$sql="UPDATE trafictmp
set truc02='".$row['truc02']."', min02='".$row['min02']."', brut02='".$row['brut02']."', net02='".$net02[$a]."'
where nomgest='".$row['tipus_trafic']."'";


Sobre el problema que comentas, puede ser que este en la variable $row['tipus_trafic']... Esta variable tiene el mismo valor para todos los meses? Si es así, lo que haces es actualizar los datos de enero, y luego los machacas con los datos de febrero...

Puede ser que cuando haces dos meses, siempre se queda el ultimo mes? y se pierden los datos de los meses anteriores?

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

varios select con sum y sus updates

Publicado por trebmal (4 intervenciones) el 11/03/2013 11:06:19
Hola xve, muchas gracias por contestar.
El codigo es raro seguro, ya que estoy empezando..... ;-)
Te amplio un poco mas la explicación.
Tengo una tabla "telefons2012" donde van a parar todas las llamadas, mensajes, etc de todos los telefonos. Tambien tengo una tabla "trafic2012" donde van a parar las sumas totales por concepto y mes (mensajes, llamadas, etc) . Hasta aqu,i todo me funciona correcto.

El problema biene cuando quiero hacer el detalle por concepto y mes de un numero en concreto.
1 - Primero creo una tabla "trafictmp" a partir de trafic2012", que incluye los conceptos (mensajes, llamadas etc) ya introcucidos en esta tabla y con el resto de valores a 0.

id nomgest truc01 min01 brut01 net01 truc02 min02 brut02 net02 ........etc hasta net12

2 - A partir de aqui, es cuando se deberia ejecutar el codigo que he adjuntado, sumar todos los de un mes concreto y un telefono concreto y añadirlos a la tabla trafictmp segun los conceptos ya incluidos en la tabla (nomgest) . Donde podria ser que en un mes concreto, no hubiera movimientos de un concepto concreto.
3 - Aqui es donde me quedo ya que no me salta al select del mes siguiente, ni me da error.

No me hace el ultimo mes, sino que unicamente el primero. Pero si los ejecuto de manera individual funcionan todos.

Gracias,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

varios select con sum y sus updates

Publicado por xve (5513 intervenciones) el 11/03/2013 12:26:00
Ok, te voy entendiendo... gracias por la explicacion...

Puede ser que el update no funcione correctamente porque el "nomgest" no exista y no haga ningún update? has revisado que exista esa valor para que pueda actualizar?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

varios select con sum y sus updates: Solucionado

Publicado por trebmal (4 intervenciones) el 11/03/2013 13:08:17
Hola de nuevo xve,
Ya lo he solucionado , te comento , he añadido el codigo update que me has pasado antes.
He entendido, que no hace falta recargar las variables en un array despues del select, para pasarlos al update por medio de un while.

No entiendo muy bien como indexa el update, pero funciona,

Muchas gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$conexio = mysql_connect($bd_host, $bd_usuario, $bd_password); // conexion al servidor
mysql_select_db($bd_base, $conexio); //conexion a la base de datos concreta 
 
 
$sql="SELECT num_tipus_trafic, sum(trucadas) as truc01, sum(durada) as min01,  sum(import_net) as net01, sum(import_fra) as brut01, tipus_trafic FROM telefons2012 WHERE mes = 01 and numero = $numero_triat GROUP bY tipus_trafic ORDER BY num_tipus_trafic";
$resultat = mysql_query($sql,$conexio);
while($row = mysql_fetch_array($resultat)) {
 
$sql="UPDATE trafictmp set truc01='".$row['truc01']."', min01='".$row['min01']."', brut01='".$row['brut01']."', net01='".$row['net01']."' where nomgest='".$row['tipus_trafic']."'";
 
$res01=mysql_query($sql,$conexio);
}
 
	//************************ Febrer
 //conexio al servidor de bases de dades
 
$conexio = mysql_connect($bd_host, $bd_usuario, $bd_password); // conexion al servidor
mysql_select_db($bd_base, $conexio); //conexion a la base de datos concreta 
 
 
$sql="SELECT tipus_trafic, sum(trucadas) as truc02, sum(durada) as min02,  sum(import_net) as net02, sum(import_fra) as brut02, tipus_trafic FROM telefons2012 WHERE mes = 02 and numero = $numero_triat GROUP bY tipus_trafic ORDER BY num_tipus_trafic";
$resultat = mysql_query($sql,$conexio);
while($row = mysql_fetch_array($resultat)) {
 
$sql="UPDATE trafictmp set truc02='".$row['truc02']."', min02='".$row['min02']."', brut02='".$row['brut02']."', net02='".$row['net02']."' where nomgest='".$row['tipus_trafic']."'";
 
$res02=mysql_query($sql,$conexio);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

varios select con sum y sus updates

Publicado por Edwin edwinbazan_usat1@hotmail.com (3 intervenciones) el 18/03/2013 14:02:55
Hola que tal :

La verdad no esta tan entendible tu código y no por la falta de experiencia en programar sino por los comentarios por cada codigo fuente que tu programes, lo digo por este codigo fuente :

while($row = mysql_fetch_array($resultat) or die ("Error en: " . mysql_error ())) {
//esta sentencia simplemente no existe, el or die se debe poner despues de ejecutar una consulta al servidor, para que veas el error generado en tu consulta al servidor

También estado observando que utilizas este codigo fuente :

$truc02[] = $row['truc02']; // Este codigo fuente simplemente no existe, ya que almacenas el valor de un campo en una variable de tipo array, el valor de los campos son datos simples y no necesitas que lo almacenes en un array. Lo recomendable es que los variables de todos los campos lo almacenes en un array para posteriormente lo puedas leer el array con un determinado fin.

$sql="UPDATE trafictmp set truc02='$truc02[$a]', min02='$min02[$a]', brut02='$brut02[$a]', net02='$net02[$a]' where nomgest='$tipus_trafic[$a]'";
$res02=mysql_query($sql,$conexio);

//He visto este codigo fuente y simplemente no entiendo que es lo que quieres hacer, lo recomendable es que generes un array con todos los valores de los campos que has almacenado en la tabla y despues recorreas ese array para que la actualizacion se vaya realizando item por item y no de esa manera


Adicionalmente he visto este codigo fuente :

$a=0;
$t=1;

$a++;
$t++;

//Hasta donde me puedo dar cuenta aquí inicia lizas cada variable y después lo incrementar cada variable, pero sin embargo no existe ninguna sentencia que te permita recorrer dichas variables algo asi como un for, un while, etc.

La verdad tienes que leer un poco el tema de arreglos, su uso y funcionalidad con base de datos para realizar dicha aplicacion .

Ahora si gustas me puedes contratar para apoyarte en la culminacion de dicho proyecto web, claro si quieres que te funcione perfectamente.

Mi correo es el siguiente :
edwinbazan_usat1@hotmail.com

Mi telefono es : 942264227

Espero tus comentarios al respecto.

Saludos cordiales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

varios select con sum y sus updates

Publicado por trebmal (4 intervenciones) el 21/03/2013 20:21:31
Hola Edvin, antes de nada agradezco tus comentarios, finalmente el codigo funciono, tal y como indico en un cometario.
Estoy empezando en el tema de PHP, provengo de programacion lineal y ciertamente puede que mi codigo sea algo redundante o que simplemete no haga nada, pero mas o menos me voy saliendo.
Ciertamente ya me interesaria tener un programador experto al lado, pero hoy por hoy y por desgracia para el sector, la especialización, no es una opción, actualmente los informaticos han de tirar cable, programar, configurar servidores, servicio help desk.
Vamos hay que hacer de todo.

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar