SQL - consulta de disponibilidad de productos

 
Vista:
sin imagen de perfil

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:

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
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 Isaias
Val: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

consulta de disponibilidad de productos

Publicado por Isaias (1921 intervenciones) el 12/10/2016 00:29:30
A simple vista, no me parece que el problema lo tengas en el SQL, todo indica que esta en tu lenguaje de programacion.
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