PHP - una peticion puede importar datos de una peticion anterior?

   
Vista:

una peticion puede importar datos de una peticion anterior?

Publicado por cesar182 (9 intervenciones) el 06/06/2017 03:23:18
Saludos...veran soy estudiante de ing. electronica y la verdad soy algo nuevo en php, y me ha surgido una duda al respecto...hace un par de dias he estado haciendo un proyecto, el cual consiste en medir la velocidad de vehiculos mediante detectores magneticos que se comunican con un servidor local (XAMP) por wi-fi (ESP8266). Tengo dos detectores y los separo a una distancia determinada y cuando el vehiculo pase por el primer detector realizara una primera consulta, un instante despues el vehiculo pasa por el segundo detector, y este hace una segunda consulta. Lo que intento hacer es registrar la hora exacta que se realiza la primera consulta, guardarlo para luego poder usarlo en la segunda consulta...y de esa forma obtener la diferencia de tiempos entre cada consulta. He estado intentando hacerlo pero no me esta funcionando muy bien. Ahi les dejo el codigo de la primera consulta:
1
2
3
4
5
6
7
8
9
10
11
<?php
    // Leemos los valores que nos llegan por GET
    $TDE1 = $_GET['tiempo1'];
    $time1 = microtime(true);
 $dbhost = "localhost";
    $dbuser = "root";
    $dbpass = "";
    $dbname = "prueba";
    // Conexión con la base de datos
    $con = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
?>

este es el codigo de la segunda consulta:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
    // Importamos datos
    include("DE1OC.php");
    // Leemos los valores que nos llegan por GET
    $TDE2 = $_GET['tiempo2'];
    $time2 = microtime(true);
 
    $timeTot= $time2-$time1;
 
    // Esta es la instrucción para insertar los valores
    $query = "INSERT INTO `p_velocidad`(`t_detector1`,`t_detector2`,`t_desp`) VALUES ('$TDE1','$TDE2','$timeTot')";
    // Ejecutamos la instrucción
    mysqli_query($con, $query);
    mysqli_close($con);
?>
les dejo tambien una captura de los datos que supuestamente le llegan al servidor. Las dos primeras filas son de cuando al recibir el dato por GET la variable era 'tiempo' en ambas consultas

Obviamente estoy haciendo algo mal, ya que en la columna 't_desp' solo me da 0, por favor alguien que me pueda ayudar con este problema por favor, estoy con todas las ganas de aprender. Gracias de antemano
Captura1
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 kip

una peticion puede importar datos de una peticion anterior?

Publicado por kip (861 intervenciones) el 06/06/2017 03:40:07
Hola, que tal si en cada pasada por el detector inicial almacenas ese tiempo como una variable de sesion y luego en la segunda pasada accederias a este valor para almacenarlo junto con el valor de la pasada actual (segunda pasada) en la DB.

Algo asi:

1
2
session_start();
$_SESSION['tiempo1'] = $_GET['tiempo1'];

Aquella variable $_SESSION['tiempo1'] tendra el valor de la primera pasada y podra ser accedida sin problema en el script PHP de la segunda.

Intentalo y nos avisas si pudiste conseguirlo.
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

una peticion puede importar datos de una peticion anterior?

Publicado por cesar (9 intervenciones) el 06/06/2017 04:30:52
la verdad no se como funciona una variable de sesion, hasta donde entendi esas dos lineas me sirven para iniciar una sesion y almacenar el dato de tiempo1 en una variable de la sesion. Pero lo que no entiendo es como puedo puedo acceder a esta variable desde la segunda consulta, cual seria mas o menos las lineas de codigo?
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 kip

una peticion puede importar datos de una peticion anterior?

Publicado por kip (861 intervenciones) el 06/06/2017 04:32:45
Simplemente reanudas la sesion con session_start() y tomas la variable, asi:

1
2
3
session_start();
$tiempo_almacenado_en_sesion = $_SESSION['tiempo1'];
echo $tiempo_almacenado_en_sesion;
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

una peticion puede importar datos de una peticion anterior?

Publicado por cesar (9 intervenciones) el 06/06/2017 05:46:36
lo probe y no me esta funcionando...no me sta registrando los datos de la primera consulta
1
2
3
4
5
6
<?php
    // Leemos los valores que nos llegan por GET
 	session_start();
	$_SESSION['tiempo'] = $_GET['tiempo1'];
    $_SESSION['timer'] = microtime(true);
?>
la segunda consulta me quedo asi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
    session_start();
    $time1 = $_SESSION['timer'];
    $TDE1 = $_SESSION['tiempo'];
    // Leemos los valores que nos llegan por GET
    $TDE2 = $_GET['tiempo2'];
    $time2 = microtime(true);
    $timeTot= $time2-$time1;
    $dbhost = "localhost";
    $dbuser = "root";
    $dbpass = "";
    $dbname = "prueba";
    // Conexión con la base de datos
    $con = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
    // Esta es la instrucción para insertar los valores
    $query = "INSERT INTO `p_velocidad`(`t_detector1`,`t_detector2`,`t_desp`) VALUES ('$TDE1','$TDE2','$timeTot')";
    // Ejecutamos la instrucción
    mysqli_query($con, $query);
    mysqli_close($con);
?>
el resultado es el siguiente:

Captura1
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 kip

una peticion puede importar datos de una peticion anterior?

Publicado por kip (861 intervenciones) el 06/06/2017 06:07:51
Desde donde envias $_GET['tiempo1'] ?

Intenta comprobando que se almacenaron los valores de sesion:

1
2
3
4
5
6
7
<?php
    session_start();
    if ( ! isset($_SESSION['timer']) || empty($_SESSION['timer'])) die('No se almaceno correctamente la variable de sesion!')
    $time1 = $_SESSION['timer'];
    $TDE1 = $_SESSION['tiempo'];
    // Leemos los valores que nos llegan por GET
    $TDE2 = $_GET['tiempo2'];
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

una peticion puede importar datos de una peticion anterior?

Publicado por cesar (9 intervenciones) el 06/06/2017 06:19:20
el dato llega desde un modulo esp8266
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
#include <ESP8266WiFi.h>
const char* ssid     = "SSID";
const char* password = "PASSWORD";
const char* host = "SERVER";
String peticion="GET /Proyecto/DE1OC.php?tiempo1=";
long valor;
void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
  delay(500);
  }
  Serial.print(1);
}
 
void loop() {
  if(Serial.available()>0){
    valor=Serial.read();
    WiFiClient client;
    const int httpPort = 80;
    if (client.connect(host, httpPort)) {
      client.print(peticion);
      client.print(valor);
      client.println("HTTP/1.1");
    }
    else{
      client.stop();
    }
  }
}
voy a verificar tu codigo
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 kip

una peticion puede importar datos de una peticion anterior?

Publicado por kip (861 intervenciones) el 06/06/2017 06:37:28
Es Arduino verdad ?

Veo que declaras el string que sera el url de destino, estableces en la url tiempo1 pero jamas le das el valor del tiempo, no ? Si estoy equivocado, podrias indicarme donde lo haces ?

Es decir veo que simplemente lo dejas asi y ya:

1
?tiempo1=

O es en esta parte donde envias el valor ?

1
client.print(valor);

Ademas al ver lo que tienes, te recomiendo hacer un POST en lugar de GET.
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

una peticion puede importar datos de una peticion anterior?

Publicado por cesar (9 intervenciones) el 06/06/2017 06:59:50
si el modulo esta programa en arduino, y el 'valor' es enviado por un arduino a travez del puerto serial del modulo y simplemente el ESP lo lee y lo envia
1
2
if(Serial.available()>0){
           valor=Serial.read();
que diferencia habria si uso POST en vez de GET?
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

una peticion puede importar datos de una peticion anterior?

Publicado por cesar (9 intervenciones) el 06/06/2017 15:20:42
saludos...encontre otra forma de poder realiazar la operacion por medio de MySQL...lo que hago es guardar los valores de '$time1' y 'tiempo1' de la base de datos con la primera consulta. En la segunda consulta lo que hago es extraer el dato de '$time1' y lo resto al tiempo '$time2' de la segunda consulta, y por ultimo actualizo la tabla con los datos obtenidos en la segunda consulta. Ahora mi pregunta es como puedo acceder a la ultima fila de mi tabla para actualizarla con lo datos obtenidos en la segunda consulta.
Les muestro el codigo que estoy usando para la primera consulta, la insercion me esta funcionando bien, pero al momento de actualizar con los datos obtenidos de la segunda consulta, los datos de las filas anteriores se cambian al de los datos de la ultima actualizacion (de la segunda consulta)


1
2
3
4
5
6
7
<?php
	$time1 = microtime(true);
	$conexion = mysql_connect("localhost", "root", "");
        mysql_select_db("prueba",$conexion);
 
    mysql_query("INSERT INTO `p_velocidad`(`t_inicio`,`t_detector1`) VALUES ('$time1','" . $_GET['tiempo1'] . "')", $conexion);
?>

1
2
3
4
5
6
7
8
9
10
<?php
	$time2 = microtime(true);
	$conexion = mysql_connect("localhost", "root", "");
    mysql_select_db("prueba",$conexion);
 
    $time1 = mysql_query("SELECT `t_inicio` FROM `p_velocidad` ORDER BY `ID` DESC", $conexion);
	$t_total = $time2 - $time1;
	//mysql> SET @max_id = (SELECT MAX(ID) FROM p_velocidad);
	mysql_query("UPDATE `p_velocidad` SET `t_final`='$time2',`t_detector2`='" . $_GET['tiempo2'] . "',`t_desp`='$t_total' ORDER BY `ID` DESC",$conexion);
?>
Ahh otro problema es que estoy usando una extension algo obsoleta para hacer consultas en MySQL, ya que aun nose como extraer y actualizar datos con la nueva extension (mysqli).

tabla
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 kip

una peticion puede importar datos de una peticion anterior?

Publicado por kip (861 intervenciones) el 06/06/2017 15:46:16
Me parece un buen metodo.

He modificado tu codigo corrigiendo algunos errores, prueba:

1
2
3
4
5
6
7
<?php
    $time1 = microtime(true);
    $conexion = mysql_connect("localhost", "root", "");
    mysql_select_db("prueba", $conexion);
    mysql_query("INSERT INTO `p_velocidad`(`t_inicio`,`t_detector1`) VALUES ('$time1','" . $_GET['tiempo1'] . "')", $conexion);
    mysql_close($conexion);
?>

1
2
3
4
5
6
7
8
9
10
<?php
    $time2 = microtime(true);
    $conexion = mysql_connect("localhost", "root", "");
    mysql_select_db("prueba", $conexion);
    $query = mysql_query("SELECT `ID`, `t_inicio` FROM `p_velocidad` ORDER BY `ID` DESC", $conexion);
    $time1 = mysql_fetch_assoc($query);
    $t_total = $time2 - $time1['t_inicio'];
    mysql_query("UPDATE `p_velocidad` SET `t_final`='$time2',`t_detector2`='" . $_GET['tiempo2'] . "',`t_desp`='$t_total' WHERE ID = " . $time1['ID'], $conexion);
    mysql_close($conexion);
?>

Nos avisas como te fue.
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

una peticion puede importar datos de una peticion anterior?

Publicado por cesar (9 intervenciones) el 06/06/2017 17:24:09
ya lo intente y lamentablemente no me esta funcionando no guarda datos de la segunda consulta, tambien lo hice corrigiendo la comilla (WHERE `ID`=")de la consulta UPDATE del segundo script y tampoco me funciona (sigue sin guardar los datos
)

tabla1
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