PHP - Ayuda con while y número de resultados

 
Vista:

Ayuda con while y número de resultados

Publicado por Igor (3 intervenciones) el 14/02/2020 16:03:46
Hola

Estoy tratando de implementar este código y solo me funciona a medias. La idea es que solo se muestren post de usuarios seguidos. Como digo funciona, pero solo tiene en cuenta la ID del último usuario y no de todos. Pego el código de ejemplo:
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
$consulta = "SELECT leader_id, follower_id FROM wps9su_bp_follow WHERE follower_id='1'";
	$resultado = mysqli_query( $conexion, $consulta ) or die ( "Algo ha ido mal en la consulta a la base de datos");
 
	// Motrar el resultado de los registro de la base de datos
	// Encabezado de la tabla
	echo "<table borde='2'>";
	echo "<tr>";
	echo "<th>Nombre</th>";
	echo "<th>Edad</th>";
	echo "</tr>";
 
	// Bucle while que recorre cada registro y muestra cada campo en la tabla.
	while ($columna = mysqli_fetch_array( $resultado ))
 
	{
		echo "<tr>";
		 echo "<td>" . $columna['leader_id'] . "</td><td>" . $columna['follower_id'] . "</td>";
		echo "</tr>";
		   $seguido = $columna['leader_id'];
	}
 
	echo "</table>"; // Fin de la tabla
 
	// cerrar conexión de base de datos
	mysqli_close( $conexion );
 
 
 
 
?>
 
 
 
<div id="main">
            <div class="wrap">
 
                <div id="primary">
 
                    <div id="content" role="main">
				<?php if (have_posts()) : ?>
 
 <?php while (have_posts()) : the_post(); ?>
<?php $autor = get_post_field( 'post_author', $post_id ); ?>
<?php if ($autor == $seguido) {?>
 
... Aquí mostraríamos los Post del los autores seguidos...

Como digo funciona a medias, pues solo muestra los post del último resultado $seguido del While.

Muchas 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 Julio
Val: 1.658
Plata
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Ayuda con while y número de resultados

Publicado por Julio (492 intervenciones) el 14/02/2020 16:29:44
Hola.

(Lee primero la edición de abajo)

Primero, supongo que esto no te dará sólo un array con un solo resultado, ¿verdad?

1
$consulta = "SELECT leader_id, follower_id FROM wps9su_bp_follow WHERE follower_id='1'";

Luego, vamos a comprobar cosas. Dentro del while haz un var_dump($columna) a ver qué contiene y cuántas veces pasa. Y nos cuentas qué sale.

EDITO:

Espera espera, ¿hablas de que sólo muestra el último resultado de $seguido? Eso es evidente, en cada iteración del while estás haciendo:

1
$seguido = $columna['leader_id'];

O sea, machacando lo que había en $seguido con el nuevo valor. Al final sólo te quedará el valor del último.

-----------------------------
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

Ayuda con while y número de resultados

Publicado por igor (3 intervenciones) el 14/02/2020 17:55:41
Gracias,

He probado a no usar while

1
2
3
4
5
<?php $columna = mysqli_fetch_array( $resultado ); ?>
 
 
 
<?php $seguido = $columna['leader_id']; ?>

Pero el resultado sigue siendo un solo ID, en este caso el primero de la tabla.
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: 1.658
Plata
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Ayuda con while y número de resultados

Publicado por Julio (492 intervenciones) el 14/02/2020 18:16:56
Me temo que no estás viendo bien lo que estás haciendo. Claro que necesitas ese while para recorrer todos los resultados, no era precisamente lo que había que quitar, jeje.

Te pondré un ejemplo. Tienes un 1, un 2, un 3 y 4. Recorres esos números con el while y te guardas su valor en $seguido cada vez. Entonces tienes:

- primero guardas en $seguido un 1
- luego guardas en $seguido un 2
- después guardas en $seguido un 3
- finalmente guardas en $seguido un 4

Imprimes $seguido y sólo ves el último valor, el 4. ¡Por supuesto, has ido cargándote todos los demás números porque sobreescribes siempre en $seguido!

¿Ves por dónde voy?

-----------------------------
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

Ayuda con while y número de resultados

Publicado por igor (3 intervenciones) el 14/02/2020 20:12:07
He metido el Loop de los Post dentro del While de la consulta:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php while ($columna = mysqli_fetch_array( $resultado ))
 
 
		 if (have_posts()) :
 
  while (have_posts()) : the_post();
 $autor = get_post_field( 'post_author', $post_id );
		   $seguido = $columna['leader_id'];
 
						?>
 
 
 
 
<?php if ($autor == $seguido) {?>

Y funciona pero muestra todos los Post de los usuarios en el orden que se imprimen los ID de usuario. Es decir:

ID1
Post
post
Post
...
ID2
Post
post
Post
...

Es lógico y entiendo la razón. Mañana le daré una vuelta, 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
Imágen de perfil de Julio
Val: 1.658
Plata
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Ayuda con while y número de resultados

Publicado por Julio (492 intervenciones) el 14/02/2020 20:39:53
Hola.

Así te guardarás en un array de nombre $seguido todos los valores de todos los líderes y no se te perderá ninguno. Luego ya los muestras como quieras.

1
2
3
4
5
6
7
8
$seguido = array();
while ($columna = mysqli_fetch_array( $resultado ))
{
	echo "<tr>";
	echo "<td>" . $columna['leader_id'] . "</td><td>" . $columna['follower_id'] . "</td>";
	echo "</tr>";
	$seguido[] = $columna['leader_id'];
}

-----------------------------
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