PHP - Consulta de mysqla a comando php no funciona

 
Vista:
Imágen de perfil de Ale
Val: 83
Ha disminuido su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

Consulta de mysqla a comando php no funciona

Publicado por Ale (54 intervenciones) el 21/04/2017 17:01:46
Buenas, tengo una base de datos con dos tablas, una se llama usuarios y la otra historial... lo que hago es, mediante una consulta en sql es pasar los datos de usuarios que contengan la condicion de FACTURADO a la tabla historial de este modo:

1
2
3
4
INSERT INTO `historial`(`Nombre`, `Direccion`, `Mail`, `Telefono`, `Observaciones`, `Estado`,
`Fecha`, `Cd`, `Obs`, `Gasto`, `Facturado`) SELECT `Nombre`, `Direccion`, `Mail`, `Telefono`,
 `Observaciones`, `Estado`, `Fecha`, `Cd`, `Obs`, `Gasto`, `Facturado` FROM `personas`
WHERE Estado = "Facturado" or Estado = "Dado de Baja"

ahora, quiero hacer esto mismo en PHP para que al pulsar un boton me haga ese traspaso y no hay forma... lo estoy haciendo de esta manera:

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
<?Php
 
if (isset($_REQUEST['BotonGrabar']))
{
require ("conexion.php");
$idCone = conexion();
	$SQL = mysql_query("INSERT INTO 'historial'('Nombre', 'Direccion', 'Mail', 'Telefono', 'Observaciones', 'Estado',
 'Fecha', 'Cd', 'Obs', 'Gasto', 'Facturado') SELECT 'Nombre', 'Direccion', 'Mail', 'Telefono', 'Observaciones', 'Estado',
 'Fecha', 'Cd', 'Obs', 'Gasto', 'Facturado' FROM 'personas' WHERE Estado = 'Facturado'");
mysql_query ($SQL, $idCone);
mysql_close($idCone);
 
echo "<H2>";
echo "<p Align=Center>";
echo "Cambio a Histórico realizado correctamente. Por favor revisar manualmente los cambios";
echo "<Br><Br>";
echo "</H2>";
}
else
{
echo "<H2>";
echo "<p Align=Center>";
echo "Actualización Cancelada";
echo "<Br><Br>";
echo "</H2>";
}
?>

y no hay caso, no hace nada...que error estaré comentiendo?Muchas gracias...
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
sin imagen de perfil

Consulta de mysqla a comando php no funciona

Publicado por David (27 intervenciones) el 23/04/2017 13:32:18
Hola.
Entiendo que tienes que hacer un bucle. Haces la búsqueda de la usuarios que tengan la condición de facturado y si hay resultados, repites el INSERT tantas veces como resultado tengas.

1
2
3
4
5
6
7
8
$sql = SELECT * FROM 'personas' WHERE Estado = 'Facturado'");
$resultado = mysql_query($sql, $idCone);

while ($fila = mysql_fetch_assoc($resultado)) {

mysql_query("INSERT INTO 'historial'('Nombre', 'Direccion', 'Mail', 'Telefono', 'Observaciones', 'Estado', 'Fecha', 'Cd', 'Obs', 'Gasto', 'Facturado') VALUES ($fila[0], $fila[1], $fila[2], $fila[3], $fila[4], $fila[5], $fila[6], $fila[7], $fila[8], $fila[9], $fila[10]);
 
}
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 Ale
Val: 83
Ha disminuido su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

Consulta de mysqla a comando php no funciona

Publicado por Ale (54 intervenciones) el 23/04/2017 16:12:06
Muchas gracias por la ayuda David, te comento que acomodando comillas y otras cosas, como el agregado de más campos tambien, me tira los siguientes errores en los 20 offset ahora

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined offset: 0 in C:\wamp\www\siniestros\moverahistorico.php on line 19
Call Stack
#	Time	Memory	Function	Location
1	0.0009	148208	{main}( )	..\moverahistorico.php:0
 
( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined offset: 1 in C:\wamp\www\siniestros\moverahistorico.php on line 19
Call Stack
#	Time	Memory	Function	Location
1	0.0009	148208	{main}( )	..\moverahistorico.php:0
 
( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined offset: 2 in C:\wamp\www\siniestros\moverahistorico.php on line 19
Call Stack
#	Time	Memory	Function	Location
1	0.0009	148208	{main}( )	..\moverahistorico.php:0
 
( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined offset: 3 in C:\wamp\www\siniestros\moverahistorico.php on line 19
Call Stack
#	Time	Memory	Function	Location
1	0.0009	148208	{main}( )	..\moverahistorico.php:0
 
( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined offset: 4 in C:\wamp\www\siniestros\moverahistorico.php on line 19
Call Stack
#	Time	Memory	Function	Location
1	0.0009	148208	{main}( )	..\moverahistorico.php:0
 
( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined offset: 5 in C:\wamp\www\siniestros\moverahistorico.php on line 19
Call Stack
#	Time	Memory	Function	Location
1	0.0009	148208	{main}( )	..\moverahistorico.php:0
 
( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined offset: 6 in C:\wamp\www\siniestros\moverahistorico.php on line 19
Call Stack
#	Time	Memory	Function	Location
1	0.0009	148208	{main}( )	..\moverahistorico.php:0
 
( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined offset: 7 in C:\wamp\www\siniestros\moverahistorico.php on line 19
Call Stack
#	Time	Memory	Function	Location
1	0.0009	148208	{main}( )	..\moverahistorico.php:0
 
( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined offset: 8 in C:\wamp\www\siniestros\moverahistorico.php on line 19
Call Stack
#	Time	Memory	Function	Location
1	0.0009	148208	{main}( )	..\moverahistorico.php:0
 
( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined offset: 9 in C:\wamp\www\siniestros\moverahistorico.php on line 19
Call Stack
#	Time	Memory	Function	Location
1	0.0009	148208	{main}( )	..\moverahistorico.php:0
 
( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined offset: 10 in C:\wamp\www\siniestros\moverahistorico.php on line 19
Call Stack
#	Time	Memory	Function	Location
1	0.0009	148208	{main}( )	..\moverahistorico.php:0
 
( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined offset: 11 in C:\wamp\www\siniestros\moverahistorico.php on line 19
Call Stack
#	Time	Memory	Function	Location
1	0.0009	148208	{main}( )	..\moverahistorico.php:0
 
( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined offset: 12 in C:\wamp\www\siniestros\moverahistorico.php on line 19
Call Stack
#	Time	Memory	Function	Location
1	0.0009	148208	{main}( )	..\moverahistorico.php:0
 
( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined offset: 13 in C:\wamp\www\siniestros\moverahistorico.php on line 19
Call Stack
#	Time	Memory	Function	Location
1	0.0009	148208	{main}( )	..\moverahistorico.php:0
 
( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined offset: 14 in C:\wamp\www\siniestros\moverahistorico.php on line 19
Call Stack
#	Time	Memory	Function	Location
1	0.0009	148208	{main}( )	..\moverahistorico.php:0
 
( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined offset: 15 in C:\wamp\www\siniestros\moverahistorico.php on line 19
Call Stack
#	Time	Memory	Function	Location
1	0.0009	148208	{main}( )	..\moverahistorico.php:0
 
( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined offset: 16 in C:\wamp\www\siniestros\moverahistorico.php on line 19
Call Stack
#	Time	Memory	Function	Location
1	0.0009	148208	{main}( )	..\moverahistorico.php:0
 
( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined offset: 17 in C:\wamp\www\siniestros\moverahistorico.php on line 19
Call Stack
#	Time	Memory	Function	Location
1	0.0009	148208	{main}( )	..\moverahistorico.php:0
 
( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined offset: 18 in C:\wamp\www\siniestros\moverahistorico.php on line 19
Call Stack
#	Time	Memory	Function	Location
1	0.0009	148208	{main}( )	..\moverahistorico.php:0
 
( ! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined offset: 19 in C:\wamp\www\siniestros\moverahistorico.php on line 19
Call Stack
#	Time	Memory	Function	Location
1	0.0009	148208	{main}( )	..\moverahistorico.php:0

La línea 19 es la
mysql_query("INSERT INTO historial

Acá está el código modificado

1
2
3
4
5
6
$sql = ("SELECT * FROM personas WHERE Estado = 'Facturado'");
	$resultado = mysql_query($sql, $idCone);
 
	while ($fila = mysql_fetch_assoc($resultado)) {
 
	mysql_query("INSERT INTO historial('Alta', 'Siniestro', 'Compania', 'Responsable', 'Nombre', 'Direccion', 'Mail', 'Telefono', 'Observaciones', 'Estado', 'Fecha', 'Cd', 'Obs', 'Gasto', 'Facturado', 'Diferencia', '`Rvl', 'Agb', 'id', 'Fs') VALUES ($fila[0], $fila[1], $fila[2], $fila[3], $fila[4], $fila[5], $fila[6], $fila[7], $fila[8], $fila[9], $fila[10], $fila[11], $fila[12], $fila[13], $fila[14], $fila[15], $fila[16], $fila[17], $fila[18], $fila[19]");

Saludos!
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
sin imagen de perfil

Consulta de mysqla a comando php no funciona

Publicado por David (27 intervenciones) el 23/04/2017 17:18:58
Quizá no tengas ningún resultado y haya que poner un contador para que solo se graben datos si en la consulta hay resultados.

1
2
3
4
5
6
7
8
9
10
11
$sql = ("SELECT * FROM personas WHERE Estado = 'Facturado'");
$resultado = mysql_query($sql);  //aqui he quitado el segundo parámetro. mysql_query solo manda una consulta
 
if (mysql_num_rows($resultado) > 0){  // si el número de filas devueltas por la consulta es mayor que 0, grabarlas en la nueva tabla.
	while ($fila = mysql_fetch_assoc($resultado)) {
 
$grabar ="INSERT INTO historial ('Alta', 'Siniestro', 'Compania', 'Responsable', 'Nombre', 'Direccion', 'Mail', 'Telefono', 'Observaciones', 'Estado', 'Fecha', 'Cd', 'Obs', 'Gasto', 'Facturado', 'Diferencia', '`Rvl', 'Agb', 'id', 'Fs') VALUES ($fila[0], $fila[1], $fila[2], $fila[3], $fila[4], $fila[5], $fila[6], $fila[7], $fila[8], $fila[9], $fila[10], $fila[11], $fila[12], $fila[13], $fila[14], $fila[15], $fila[16], $fila[17], $fila[18], $fila[19])";
 
mysql_query($grabar );
	}
}

De todas formas, teniendo las tres tablas sería mas "limpo" si en la tabla historial solo grabas el indice de la tabla personas, porque tiene que haber un índice irrepetible

1
$grabar ="INSERT INTO historial ('indice') VALUES ($fila[0])";
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 Ale
Val: 83
Ha disminuido su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

Consulta de mysqla a comando php no funciona

Publicado por Ale (54 intervenciones) el 24/04/2017 17:34:14
Hola, entre los campos a copiar a historial, figura el campo 'Id' que es irrepetible...y me sigue tirando el mismo error de offset indefinido , como te comente anteriormente en los 20 campos, acá te muestro el php completo, a ver si es otra cosa...las tablas personas e historial tienen los mismos campos en la bd, y respetan el orden también...
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
<?php
session_start();
include 'login/serv.php';
 
if(isset($_SESSION['user'])) {?>
<body bgcolor="#ffffff">
	<link rel="stylesheet" type="text/css" href="style.css">
<?Php
 
if (isset($_REQUEST['BotonGrabar']))
{
require ("conexion.php");
 $idCone = conexion();
$sql = ("SELECT * FROM personas WHERE Estado = 'Facturado'");
$resultado = mysql_query($sql);  //aqui he quitado el segundo parámetro. mysql_query solo manda una consulta
 
if (mysql_num_rows($resultado) > 0){  // si el número de filas devueltas por la consulta es mayor que 0, grabarlas en la nueva tabla.
	while ($fila = mysql_fetch_assoc($resultado)) {
 
$grabar ="INSERT INTO historial ('Alta', 'Siniestro', 'Compania', 'Responsable', 'Nombre', 'Direccion', 'Mail', 'Telefono', 'Observaciones', 'Estado', 'Fecha', 'Cd', 'Obs', 'Gasto', 'Facturado', 'Diferencia', 'Rvl', 'Agb', 'id', 'Fs', 'Tope') VALUES ($fila[0], $fila[1], $fila[2], $fila[3], $fila[4], $fila[5], $fila[6], $fila[7], $fila[8], $fila[9], $fila[10], $fila[11], $fila[12], $fila[13], $fila[14], $fila[15], $fila[16], $fila[17], $fila[18], $fila[19], $fila[20])";
 
mysql_query($grabar );
	}
}
 
 
mysql_query ($sql);
mysql_close($idCone);
 
echo "<H2>";
echo "<p Align=Center>";
echo "Cambio a Histórico realizado correctamente. Por favor revisar manualmente los cambios";
echo "<Br><Br>";
echo "</H2>";
}
else
{
echo "<H2>";
echo "<p Align=Center>";
echo "Actualización Cancelada";
echo "<Br><Br>";
echo "</H2>";
}
?>
<?php
	}else{
	echo '<script> window.location="login.php"; </script>';
}
?>

saludos
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
sin imagen de perfil

Consulta de mysqla a comando php no funciona

Publicado por David (27 intervenciones) el 24/04/2017 17:45:33
Seria bueno ver la estructura de la tabla, Si pudieras ponerla por aqui?
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 Ale
Val: 83
Ha disminuido su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

Consulta de mysqla a comando php no funciona

Publicado por Ale (54 intervenciones) el 25/04/2017 20:26:07
Te paso las fotos de las tablas. La primera es personas:

personas

Y ésta es historial:
historial

Te sirve asi?
Saludos y gracias de nuevo
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
sin imagen de perfil

Consulta de mysqla a comando php no funciona

Publicado por David (27 intervenciones) el 25/04/2017 22:21:17
Buenas.
En los campos auto-increment no puedes darle valores. ya lo hace la base de datos ella sola. En el INSERT, simpremente no pongas ese campo ni el valor:
$grabar ="INSERT INTO historial ('Alta', 'Siniestro', 'Compania', 'Responsable', 'Nombre', 'Direccion', 'Mail', 'Telefono', 'Observaciones', 'Estado', 'Fecha', 'Cd', 'Obs', 'Gasto', 'Facturado', 'Diferencia', 'Rvl', 'Agb', 'Fs', 'Tope') VALUES ($fila[0], $fila[1], $fila[2], $fila[3], $fila[4], $fila[5], $fila[6], $fila[7], $fila[8], $fila[9], $fila[10], $fila[11], $fila[12], $fila[13], $fila[14], $fila[15], $fila[16], $fila[17], $fila[19], $fila[20])";

Los campos DATE se tienen que grabar en formato AAAA-MM-DD. Tendrás que darle esa forma antes de grabarlo o te dará error.

Y un consejo, los campos ID ponlos los primeros en cada tabla, porque se suele trabajar con ellos y si mas adelante añades algún campo delante de ellos, donde están ahora, tendrás errores en las consultas. Es mejor que siempre sea el puesto 0 de una matriz.

Por lo que veo son tablas iguales y estás repitiendo los datos con el único requisito de haber facturado. Porque no haces una sola tabla y cuando quieras ver quien ha faturado, haces una busqueda con ese filtro?

SELECT * FROM personas WHERE facturado <> NULL;

Un saludo
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