PHP - consulta con while

 
Vista:
sin imagen de perfil
Val: 336
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

consulta con while

Publicado por Alejandro (172 intervenciones) el 27/04/2020 11:33:59
Hola buenos dias, a ver si me podeis ayudar con esto.

Tengo un una consulta a mi base de datos mysql donde muestro los datos en una tabla con un while. Funciona perfectamente solo que se me repite el encabezado de la tabla. Os dejo el codigo:

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
$selectForm="SELECT * FROM formacion_academica_empleo WHERE codigo_persona_form=".$id;
$resultForm=mysqli_query($GLOBALS['conn'],$selectForm);
while($fila=mysqli_fetch_array($resultForm)){
echo"
    <hr>
    <div class='divMostrarDatos'>
        <h3>Datos de Formación</h3>
            <table>
                <thead>
                    <tr>
                        <th>Tipo de formación</th>
                        <th>Nombre de formación</th>
                        <th>Centro</th>
                        <th>Año</th>
                        <th>Objetivo</th>
                        <th>Nivel</th>
                        <th>Documentacion</th>
                        <th>Acción</th>
                    </tr>
                </thead>
                <tr>
                    <td>".$fila['tipo_formacion']."</td>
                    <td>".$fila['nombre_formacion']."</td>
                    <td>".$fila['centro']."</td>
                    <td>".$fila['año']."</td>
                    <td>".$fila['objetivo']."</td>
                    <td>".$fila['nivel']."</td>
                    <td>";
                 if(!empty($fila['documentacion_titulacion'])){
 
                        echo "<a download href='".$fila['documentacion_titulacion']."'><img src='imagenes/flecha_descargar.png' class='imgtabla'></a>";
 
                 }else{
 
                 }
 
            echo "  </td>
                    <td>";
?>
                    <form method="post" action="borrarFormacion.php?id_personal=<?php echo $fila['codigo_persona_form']?>">
                        <input type="hidden" value="<?php echo $fila['id_formacion_empleo'] ?>" name="idFormacion">
                        <button type="submit" value="formacion" name="accion">Borrar</button>
                    </form>
<?php
            echo"   </td>
                </tr>
            </table>
    </div>";
 
}
mysqli_free_result($resultForm);

Yo lo que quiero es que el encabezado de la tabla salga una vez y los resultados debajo sin repetirse el encabezado. Y cuando no haya datos pues que no muestre el encabezado

Gracias de antemano
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 Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

consulta con while

Publicado por Julio (830 intervenciones) el 27/04/2020 11:50:20
Hola.

Si tienes el encabezado dentro del while, es normal que te lo imprima en cada iteración del while. Sácalo de ahí dentro. Dentro del while sólo necesitas tener lo que quieres que se repita, es decir, esto:

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
<tr>
 
                    <td>".$fila['tipo_formacion']."</td>
 
                    <td>".$fila['nombre_formacion']."</td>
 
                    <td>".$fila['centro']."</td>
 
                    <td>".$fila['año']."</td>
 
                    <td>".$fila['objetivo']."</td>
 
                    <td>".$fila['nivel']."</td>
 
                    <td>";
                 if(!empty($fila['documentacion_titulacion'])){
                        echo "<a download href='".$fila['documentacion_titulacion']."'><img src='imagenes/flecha_descargar.png' class='imgtabla'></a>";
 
 
 
                 }else{
 
 
 
                 }
 
 
 
            echo "  </td>
                    <td>";
 
?>
 
                    <form method="post" action="borrarFormacion.php?id_personal=<?php echo $fila['codigo_persona_form']?>">
 
                        <input type="hidden" value="<?php echo $fila['id_formacion_empleo'] ?>" name="idFormacion">
 
                        <button type="submit" value="formacion" name="accion">Borrar</button>
 
                    </form>
 
<?php
 
            echo"   </td>
                </tr>

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
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: 336
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

consulta con while

Publicado por Alejandro (172 intervenciones) el 27/04/2020 14:05:09
Antes de nada gracias por responder,

pero si saco el encabezado del while, se queda visible y lo que quiero es que si no hay datos, no muestre el encabezado, eso seria posible?
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 Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

consulta con while

Publicado por Julio (830 intervenciones) el 27/04/2020 14:40:41
Claro, simplemente haz un if de si la consulta devuelve resultados o no.

Olvídate primero del lenguaje de programación o cómo debes implementarlo y piensa en parámetros de crear una estructura lógica del código que quieres generar.

- Obtienes desde la base de datos unos datos
- ¿Si no existen datos? Pues imprimes un mensaje diciendo que no hay registros o simplemente no haces nada
- ¿Si existen datos? Pues imprimes lo que no sea repetitivo en tu tabla (principio y final de tu tabla) y empiezas a recorrerlos y a imprimir cada una de las filas de forma repetitiva en bucle

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
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: 336
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

consulta con while

Publicado por Alejandro (172 intervenciones) el 27/04/2020 16:18:13
Entonces deberia ser asi?

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
$selectForm="SELECT * FROM formacion_academica_empleo WHERE codigo_persona_form=".$id;
$resultForm=mysqli_query($GLOBALS['conn'],$selectForm);
if($resultForm){
<hr>
    <div class='divMostrarDatos'>
        <h3>Datos de Formación</h3>
            <table>
                <thead>
                    <tr>
                        <th>Tipo de formación</th>
                        <th>Nombre de formación</th>
                        <th>Centro</th>
                        <th>Año</th>
                        <th>Objetivo</th>
                        <th>Nivel</th>
                        <th>Documentacion</th>
                        <th>Acción</th>
                    </tr>
                </thead>
while($fila=mysqli_fetch_array($resultForm)){
echo"
                <tr>
                    <td>".$fila['tipo_formacion']."</td>
                    <td>".$fila['nombre_formacion']."</td>
                    <td>".$fila['centro']."</td>
                    <td>".$fila['año']."</td>
                    <td>".$fila['objetivo']."</td>
                    <td>".$fila['nivel']."</td>
                    <td>";
                 if(!empty($fila['documentacion_titulacion'])){
 
                        echo "<a download href='".$fila['documentacion_titulacion']."'><img src='imagenes/flecha_descargar.png' class='imgtabla'></a>";
 
                 }else{
 
                 }
 
            echo "  </td>
                    <td>";
?>
                    <form method="post" action="borrarFormacion.php?id_personal=<?php echo $fila['codigo_persona_form']?>">
                        <input type="hidden" value="<?php echo $fila['id_formacion_empleo'] ?>" name="idFormacion">
                        <button type="submit" value="formacion" name="accion">Borrar</button>
                    </form>
<?php
            echo"   </td>
                </tr>
            </table>
    </div>";
 
}
mysqli_free_result($resultForm);
}else{
 
//No ocurre nada
 
}

Gracias por los consejos ;)
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 Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

consulta con while

Publicado por Julio (830 intervenciones) el 27/04/2020 16:38:47
No del todo. Dos cosas, empezando por la última.

¿Te has fijado que el final de la tabla está dentro del while? Te va a imprimir ese final una y otra y otra y otra vez. Dentro del while SÓLO la repetición de filas (o sea, desde tr a /tr).

Y lo primero. Existe un método mysqli_num_rows al que le pasarás $resultForm y te dirá el número de filas que ha devuelto. La condición del if es si el número de filas de $resultForm es mayor que 0.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
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: 336
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

consulta con while

Publicado por Alejandro (172 intervenciones) el 28/04/2020 10:25:26
me ha funcionado, muchisimas gracias Julio. Estos errores me serviran para ir afinando en programacion ;) Gracias
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