PHP - Consulta solo lista un solo registro

 
Vista:
Imágen de perfil de yoclens
Val: 19
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Consulta solo lista un solo registro

Publicado por yoclens (20 intervenciones) el 20/02/2024 10:54:47
Tengo un problema con mi consulta, resulta que estoy tratando de listar los registros almacenados por cada chofer ejemplo: hay choferes que tienen registrados dos vehículos, tres vehículos etc., pero siempre mi consulta me muestra un registro cuando debería mostrar todos los registros de vehículos por chofer que tienen asignados, agradezco su ayuda en saber en que estoy fallando.

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
<?php
$sql = "SELECT COUNT(*) AS vehiculo,
vehiculo.id_vehiculo,
vehiculo.id_chofer,
vehiculo.id_marca,
vehiculo.id_modelo,
vehiculo.ano,
vehiculo.placa,
vehiculo.serial_carroceria,
vehiculo.serial_motor,
vehiculo.color,
vehiculo.id_status,
vehiculo.imagen_vehiculo,
chofer.id_chofer,
chofer.cedula,
chofer.nombres,
chofer.apellidos,
chofer.telefono,
chofer.direccion,
chofer.correo,
marca.id_marca,
marca.marca,
modelo.id_modelo,
modelo.modelo,
status.id_status,
status.status
FROM
vehiculo
INNER JOIN chofer ON vehiculo.id_chofer=chofer.id_chofer
INNER JOIN marca ON vehiculo.id_marca=marca.id_marca
INNER JOIN modelo ON vehiculo.id_modelo=modelo.id_modelo
INNER JOIN status ON vehiculo.id_status=status.id_status
WHERE vehiculo.id_chofer=:id_chofer GROUP BY vehiculo.id_chofer=:id_chofer";
$consulta = $DB_con->prepare($sql);
$consulta->execute(array(':id_chofer'=>$id_chofer));
if($consulta->rowCount() > 0){
$i=1;
 
echo "
<table  class='bordered responsive-table centered'>
<thead>
<tr>
<th data-field='Nº'></th>
<th data-field='Código'>MARCA</th>
<th data-field='Operaciones'>MODELO</th>
<th data-field='Operaciones'>AÑO</th>
<th data-field='Operaciones'>PLACA</th>
<th data-field='Operaciones'>VEHÍCULO ASIGNADO</th>
<th data-field='Operaciones'>STATUS</th>
<th data-field='Operaciones'>ACCIÓN</th>
</tr>
</thead>";
while ($editar_linea = $consulta->fetch(PDO::FETCH_ASSOC)) {
 
  $status_color = array(
 
    'Activo' => 'col s12 card-panel blue darken-2 center',
    'Inactivo' => 'col s12 card-panel yellow darken-2 center'
);
 
echo "<tr>
<td align=center>$i</td>
<td class='center-align'>{$editar_linea['marca']}</td>
<td class='center-align'>{$editar_linea['modelo']}</td>
<td class='center-align'>{$editar_linea['ano']}</td>
<td class='center-align'>{$editar_linea['placa']}</td>
<td class='center-align'><img src='../galerias_vehiculos/$editar_linea[imagen_vehiculo]' class='materialboxed responsive-img'  width='50px' height='50px'/></td>";
?>
 
<?php
echo "
<td>
<span class='white-text text-darken-2'>
<div class='". $status_color[$editar_linea['status']] ."'>$editar_linea[status]
</div></td>";
?>
 
<td>
<button data-target="#modificarstatusvehiculo_<?php echo $editar_linea['id_vehiculo']; ?>"
class='btn modal-trigger btn waves-effect waves-light blue btn-small tooltipped'
data-position='top' data-tooltip='Modificar Status'><img src='../icons/mode_edit.png'
style="margin: 4px 2px;"></button>
 
 
 
 
<!-- ventana modal-->
<?php
include "ventana_modal_modificar_status_vehiculo.php";
?>
<!-- fin ventana modal-->
 
 
<?php
 
echo "
<form action='vehiculo.php' method='POST'>
<input type='hidden' name='id_chofer' value='$editar_linea[id_chofer]'>
<input type='hidden' name='id_vehiculo' value='$editar_linea[id_vehiculo]'>
<button class='waves-effect waves-light red btn-small tooltipped' data-position='top' data-tooltip='Eliminar' type='submit' name='eliminar'><img src='../icons/delete.png' style='margin: 4px 2px;'>
</button>
</form>
</td>
</tr>";
$i++;
}
}else
echo "<div class='col s12 card-panel yellow darken-2 center'>
<h6 class='black-text text-darken-2 center CONDENSED LIGHT5'>
¡ Advertencia: No se ha encontrado ningún registro !
</h6>
</div>";
 
echo "</table>";
?>
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 Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Consulta solo lista un solo registro

Publicado por Mauro (1036 intervenciones) el 20/02/2024 13:08:28
Veo varias cosas, pero principalmente me parece que te estás confundiendo respecto de lo que hace GROUP BY y cómo funciona.

Precisamente, GROUP BY va a generar un registro por cada grupo. La definición de grupo la establecés al usar esa cláusula. Por ejemplo, GROUP BY id_marca te dará un resultado por cada valor de marca que tengas en la db.

Un detalle adicional, usar COUNT(*) no suele tener mucho sentido, de hecho es bastante ineficiente. Algo mejor que podés hacer es usar una clave primaria como argumento de COUNT, dado que esta no puede repertirse por definición, la cantidad de claves distintas = cant de registros distintos.

En definitiva, si quereś que por cada chofer te muestre todos sus vehículos no deberías usar GROUP BY. Lo que sí debés tener en cuenta que la consulta te va a devolver bastante información repetida (los datos del chofer van a estar en cada fila del resultado, asociados a los datos específicos del vehículo).

Espero haber sido claro, consultame si necesitás.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de yoclens
Val: 19
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Consulta solo lista un solo registro

Publicado por yoclens (20 intervenciones) el 23/02/2024 05:51:15
muchas gracias, tenias toda la razón solo faltaba aplicar bien la lógica, doy por cerrado el tema.

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
<?php
$id_chofer= $_GET['id_chofer'];
$consulta = $DB_con->query("SELECT
vehiculo.id_vehiculo,
vehiculo.id_chofer,
vehiculo.id_marca,
vehiculo.id_modelo,
vehiculo.ano,
vehiculo.placa,
vehiculo.serial_carroceria,
vehiculo.serial_motor,
vehiculo.color,
vehiculo.id_status,
vehiculo.imagen_vehiculo,
chofer.id_chofer,
chofer.cedula,
chofer.nombres,
chofer.apellidos,
chofer.telefono,
chofer.direccion,
chofer.correo,
marca.id_marca,
marca.marca,
modelo.id_modelo,
modelo.modelo,
status.id_status,
status.status
FROM
vehiculo
INNER JOIN chofer ON vehiculo.id_chofer=chofer.id_chofer
INNER JOIN marca ON vehiculo.id_marca=marca.id_marca
INNER JOIN modelo ON vehiculo.id_modelo=modelo.id_modelo
INNER JOIN status ON vehiculo.id_status=status.id_status
WHERE vehiculo.id_chofer='$id_chofer';");
if($consulta->rowCount() > 0){
$i=1;
 ?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar