PHP - Consulta mysql php javascript

 
Vista:
sin imagen de perfil

Consulta mysql php javascript

Publicado por Oscar (7 intervenciones) el 17/10/2017 08:56:09
Buenos días,

Os voy a explicar que estoy montando, y donde tengo el problema.

Estoy montando una web para poder ver la entrada y salida de camiones a tiempo real.

Tengo un php, donde me muestra una primera tabla con todos los camiones ya sean entrada o salida, con un margen de tiempo de 3 horas, es decir, solo muestro los camiones en pantalla 3 horas antes de ser enviados o recibidos.

Ejemplo:

Estado Origen Destino Matricula Hora
Entrada Albacete Alcoy 7820-xxx 18:00:00
Salida Alcoy Valencia 7820-xxx 20:00:00

Esa es mi primera tabla, donde me muestra un ejemplo de camiones que van a entrar o salir del muelle.

Ahora lo que intento, es que justo debajo haya otra tabla, esa tabla solo muestra los camiones que en su estado sea salida, y que carga van a cargarle a los camiones.

Ejemplo:

Matricula Cargaa
7820-xxx Bq, Alcatel, Huawei


Dicha tabla lo que necesito es que cambie, es decir, cada x tiempo, quiero que me muestre una única salida, es decir, si tengo 3 camiones que van a salir, quiero que me muestre el primero y que carga lleva, después de x tiempo me muestre solamente el segundo y así sucesivamente hasta llegar al ultimo camión y vuelva a empezar.

Con php no he hayado la forma de conseguirlo, supongo que tengo que usar javascript o algún otro tipo de lenguaje de programación, pero estoy bastante pez y no se como hacerlo.

Alguien puede enfocarme al camino correcto o ponerme algún ejemplo de como hacer, que de una consulta mysql que se guarda en un array recorrer ese array y solo muestre una linea de camión cada x tiempo?

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
Imágen de perfil de Alejandro

Consulta mysql php javascript

Publicado por Alejandro (54 intervenciones) el 17/10/2017 13:22:20
Oscar,

Pienso que tus registros deberían ser ordenados (UPDATE) periódicamente por script en php (1,2,3) y luego el script ser ejecutado cada cierto tiempo 2, 3 ó 4 minutos dependiendo de lo que necesites, dicha ejecución la programas es mediante un administrador de tareas, en el caso que estés en Linux, deberás usar CRON

https://blog.desdelinux.net/cron-crontab-explicados/

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 mysql php javascript

Publicado por Oscar (7 intervenciones) el 17/10/2017 13:28:23
Hola Alejandro,

De antemano, agradecerte tu participación, pero no es la solución que busco, tengo una web programada en php y lo único que me falta, es que esos datos que he dicho anteriormente se muestre solamente uno, actualmente muestro todos a la vez, quiero que se muestre uno a uno cada x tiempo.

No se si hay algún método de recorrer el array en php y solo mostrar uno y refrescar la pagina cuando vaya a mostrar el segundo, o si tengo que usar javascript, ambas opciones, no se como hacerlas.

No tiene nada que ver, con el sistema que use (Linux o Windows), de la forma que tu dices, lo único que consiguiere sera refrescar la pagina pero seguirá mostrándome todos los datos.

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
Imágen de perfil de Alejandro

Consulta mysql php javascript

Publicado por Alejandro (54 intervenciones) el 17/10/2017 13:48:40
Como te comente,
la opción más simple que veo es en PHP, es
programar una query que actualice tus datos mediante un campo extra, de esa forma los ordenas y
luego ejecutas un SELECT*FROM mitabla LIMIT 1 ASC; para mostrar el ultimo registro.
y la idea del CRON es que te ejecute ese 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 mysql php javascript

Publicado por Oscar (7 intervenciones) el 17/10/2017 16:34:05
Sigo pensando que no ha quedado claro lo que intento hacer, he subido una imagen donde se va a ver claro.

Aparecen 3 camiones, y en la tabla de abajo solo dos, son los dos camiones que son SALIDAS, y quiero que muestre la carga que llevan.

Pues bien, esos camiones, se tienen que mostrar solamente uno CADA CIERTO TIEMPO, primero me muestra uno y a los X segundos, me muestre el otro y el primero desaparezca, y vuelva a empezar.

Si hago un LIMIT 1 ASC solo me mostraría el ultimo que ha sido insertado en la base de datos y no es lo que quiero.

Necesito algún método de recorrer el array de mi consulta, que solo muestre una fila del array y al paso de X segundos, desaparezca la primera linea y aparezca la segunda, y cuando acabe el bucle, si no hay mas filas que mostrar vuelva a empezar.

En la imagen lo veras mejor.
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 mysql php javascript

Publicado por Oscar (7 intervenciones) el 17/10/2017 17:22:26
Muchas gracias por facilitarme esa información, pero me sigo quedando igual, en ese ejemplo el pone que muestre un numero aleatorio, es algo muy sencillo.

Lo mio es una consulta que muestra varias lineas de valores, cada 3 segundos, me mostraría siempre lo mismo, como idea me ha servido pero no me sirve.
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
Val: 1.071
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Consulta mysql php javascript

Publicado por Yamil Bracho (888 intervenciones) el 17/10/2017 17:43:16
Definitivamente necesitas un timer en javascript.
1) Al arrancar esa pantalla toma los Id de los camiones que son de salida y los guardas en un arreglo, digamos camionArray
2) Ten un variable que sea currentCamion = 0 la primera vez
3) Asigna la funcion que se va a ejecutar en el timer de javascript, que sea un GET o POST via AJAX y le pasas el Id del camion tomando currentCamion como indice de camionArray.
4) Al ejecutarse la funcion AJAX refresca la informacion en pantalla e incrementa la variable currentCamion
5) Si currentCamion > camionArray.length entonces currentCamion = 0 para que muestre de nuevo el primero
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 mysql php javascript

Publicado por Oscar (7 intervenciones) el 17/10/2017 17:54:51
Hola, muchas gracias por contestar, se lo que quieres que haga, pero no se como hacerlo, lo he leído ya varias veces y no se por donde empezar, soy bastante novato y solo he programado en php.

Podrías ponerme un ejemplo de como se haría eso en javascript? Y pongo el código que tengo ahora mismo yo, la consulta de abajo que es la que necesito, ahora mismo esta dividida en dos for each, pero antes lo tenia en uno único, no paro de hacer cambios en el código y no me sale. Viendo mi código, podrías ayudarme a como montar ese javascript, donde tendría que ponerlo para que funcionara.

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
67
require_once 'conexion.php';
$self = $_SERVER['PHP_SELF'];
header("refresh:20; url=$self");
 
$tiempo=$pdo->prepare("SELECT estado,hora,origen, destino, observaciones, matricula,fecha FROM camiones WHERE hora BETWEEN TIME(DATE_SUB(CURRENT_TIME(), INTERVAL 30 MINUTE)) AND TIME(DATE_SUB(CURRENT_TIME(), INTERVAL -3 HOUR)) AND fecha = CURDATE() ");
$tiempo->execute();
 
?>
<div class="reloj">
 <table class="negrita">
 		<td>ESTADO</td>
		<td>HORA</td>
		<td>ORIGEN</td>
		<td>DESTINO</td>
		<td>MATRICULA</td>
		<td>OBSERV.</td>
<?php foreach($tiempo as $actual):?>
	<table class="green">
	<td><?=strtoupper($actual['estado'])?></td>
  	<td><?=$actual['hora']?></td>
   	<td><?=strtoupper($actual['origen'])?></td>
    <td><?=strtoupper($actual['destino'])?></td>
   	<td><?=strtoupper($actual['matricula'])?></td>
   	<td><?=strtoupper($actual['observaciones'])?></td>
	</table>
<?php endforeach ?>
	</table>
</div>
</br>
 
 
<?php
require_once 'conexion.php';
 
 
$idactual=$pdo->prepare("SELECT id from camiones where hora BETWEEN TIME(DATE_SUB(CURRENT_TIME(), INTERVAL 30 MINUTE)) AND TIME(DATE_SUB(CURRENT_TIME(), INTERVAL -3 HOUR)) AND camiones.fecha = CURDATE() ");
$idactual->execute();
 
?>
 
<table class="negrita">
	<td>MATRICULA</td>
	<td>CARGA</td>
 
<?php foreach($idactual as $actual):?>
 
	<?php
	$mostrar = $actual['id'];
	require_once 'conexion.php';
	$resultado=$pdo->prepare("SELECT matricula,carga from envios where id='".$mostrar."' ");
	$resultado->execute();
	?>
 
	<?php foreach($resultado as $result):?>
	<table class="green">
	<td><?=strtoupper($result['matricula'])?></td>
   	<td><?=strtoupper($result['carga'])?></td>
	</table>
<?php endforeach ?>
<?php endforeach ?>
	</table>
</div>
</br>
<?php
?>
</body>
</html>
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