
consulta de disponibilidad de productos
Publicado por Víc M.R. (3 intervenciones) el 11/10/2016 11:49:29
La idea es obtener los valores que contienen el resultado de dos queries y almacenarlos en un solo array,ya que este se trata después y se hace otra query con el mismo.Os pongo en situación:
El script no acaba de devolver lo que deseo.. muestra una lista de barcos disponibles según las fechas especificadas,pero como decia antes,no esta correctamente guardado en un solo array,por lo que se aplican solamente los ultimos cambios y se devuelve una parte de los datos.
.
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
//Las dos variables se pasan por POST,desde un formulario con campos DATE..
$fecha_inicio = $_POST['fecha_inicio']; $fecha_fin = $_POST['fecha_fin'];
//Mediante una función obtengo los dias existentes entre esos dos
function createDateRangeArray($strDateFrom,$strDateTo = null) { // takes two dates formatted as YYYY-MM-DD and creates an // inclusive array of the dates between the from and to dates. $aryRange=array();
$iDateFrom=mktime(1,0,0,substr($strDateFrom,5,2), substr($strDateFrom,8,2),substr($strDateFrom,0,4));
$iDateTo=mktime(1,0,0,substr($strDateTo,5,2), substr($strDateTo,8,2),substr($strDateTo,0,4));
if ($iDateTo>=$iDateFrom)
{
array_push($aryRange,date('Y-m-d',$iDateFrom)); // first entry
while ($iDateFrom<$iDateTo)
{
$iDateFrom+=86400; // add 24 hours
array_push($aryRange,date('Y-m-d',$iDateFrom));
}
}
return $aryRange;
}
//Guardo los valores de las fechas en una cadena
$array_rango_fechas = createDateRangeArray($fecha_inicio,$fecha_fin);
$fechas_a_reservar = implode(',' ,$array_rango_fechas );
//Despues con estas fechas,compruebo los datos de los barcos que esten //reservados en dias presentes en el rango
$comprobar_reservas_inicio = $sql->ejecutar_consulta(" SELECT id_producto FROM reservas_prueba WHERE fecha_inicio IN ('$fechas_a_reservar') " );
$comprobar_reservas_fin = $sql->ejecutar_consulta(" SELECT id_producto FROM reservas_prueba WHERE fecha_fin IN ('$fechas_a_reservar') " );
//y después,gurado los IDs de los barcos YA RESERVADOS,para excluirlos de la //consulta de barcos disponibles
$barcos_no_disponibles = array();
$i = 0;
while($row = mysqli_fetch_assoc($comprobar_reservas_inicio))
{
$barcos_no_disponibles = $row['id_producto'].",";
}
while($row = mysqli_fetch_assoc($comprobar_reservas_fin))
{
$barcos_no_disponibles .= $row['id_producto'];
}
/---COMPROBAR flota con ID (?) $comprobar_flota = $sql->ejecutar_consulta("SELECT * FROM flota WHERE FLOTAID NOT IN ('$barcos_no_disponibles') ");
$array_flota = array();
$i = 0;
while($row = mysqli_fetch_array($comprobar_flota )) {
$array_flota[$i]['FLOTAID'] = $row['FLOTAID'];
$array_flota[$i]['NOMBRE'] = $row['NOMBRE'];
$array_flota[$i]['CARACTERISTICAS'] = $row['CARACTERISTICAS'];
$array_flota[$i]['EQUIPAMIENTO'] = $row['EQUIPAMIENTO'];
$i++;
}
//por ultimo devuelvo los valores al script php que llama a este //de esta forma debido a ser una petición AJAX
header("Content-Type: application/json");
echo json_encode($array_flota);
exit;
El script no acaba de devolver lo que deseo.. muestra una lista de barcos disponibles según las fechas especificadas,pero como decia antes,no esta correctamente guardado en un solo array,por lo que se aplican solamente los ultimos cambios y se devuelve una parte de los datos.
.
Valora esta pregunta


0