PHP - porque el while solo me da el primer resultado?

 
Vista:

porque el while solo me da el primer resultado?

Publicado por user1 (30 intervenciones) el 29/11/2020 21:18:22
tengo un ciclo para que me muestre los resultados de una tabla que tienen el id de otra ($podcastSelectSub), pero no me funciona , solo muestra el primer resultado, porque es? Gracias de antemano

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<div>
    <?php if ($podcastSelectSub>0) { ?>
    <?php do { ?>
 
        <div class="art">
        <a href="articulo.php?id=<?php echo $podcast ?>&search=<?php echo $search ?>">
        <span id="titlePod"><?php echo utf8_encode($PodTittleSub) ?></span><br>
        <span id="descPod"><?php echo substr(utf8_encode($PoddesSub),0,250) ?></span><br>
        <span><img id="tdI"src="data:image/*;base64,<?php echo base64_encode($PodimgSub); ?>"></span>
        </a>
        </div>
   <?php } while (!$podcastSelectSub); ?>
<?php }
else echo '<h2 style="color:#fff; margin-left:20px; font-size: 20px; text-align:center;">No te haz suscrito a ningún podcast</h2>';
?>
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

porque el while solo me da el primer resultado?

Publicado por Mauro (1037 intervenciones) el 30/11/2020 18:56:07
El problema es la condición que estás usando en el while:

1
while (!$podcastSelectSub)

Esta condición sólo será verdadera cuando $podcastSelectSub sea false.

Dado que $podcastSelectSub es una variable numérica, el único valor que la hará false es el 0.

Y esta condición no se dará nunca, debido al if que pones al comienzo:

1
<?php if ($podcastSelectSub>0) { ?>

De hecho, este ciclo se ejecuta una vez porque usaste una estructura
1
do { ... }while
en lugar de
1
while { ... }
.

Por otra parte, el valor de $podcastSelectSub no se modifica nunca dentro de tu ciclo, con lo cual si corriges la condición del while entrarás en un ciclo infinito.

Por último, te sugiero que cuando publiques código en el foro uses las etiquetas de resaltado correspondientes, así será más fácil de leer tus mensajes y ayudarte.

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

porque el while solo me da el primer resultado?

Publicado por user1 (30 intervenciones) el 30/11/2020 23:57:54
hola gracias. Ahora lo he corregido pero no me arroja resultados. Adjunto el codigo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<div class="container3">
 
    <?php if (!$podcastSelectSub>0) { ?>
         <?php while ($podcastSelectSub) {?>
 
          <div class="art">
                  <a href="articulo.php?id=<?php echo $podcast ?>&search=<?php echo $search ?>">
                 <span id="titlePod"><?php echo utf8_encode($PodTittleSub) ?></span><br>
                 <span id="descPod"><?php echo substr(utf8_encode($PoddesSub),0,250) ?></span><br>
                  <span><img id="tdI"src="data:image/*;base64,<?php echo base64_encode($PodimgSub); ?>"></span>
                   </a>
           </div>
         <?php }  ?>
   <?php }
    else echo '<h2 style="color:#fff; margin-left:20px; font-size: 20px; text-align:center;">No te haz suscrito a ningún podcast</h2>';
    ?>
</div>

ahora me arroja el else. Saludos

pd: como resalto las etiquetas?
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 Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

porque el while solo me da el primer resultado?

Publicado por Mauro (1037 intervenciones) el 01/12/2020 14:13:34
pd: como resalto las etiquetas?

Ya lo has hecho :)

Ahora tienes un problema en la expresión

1
<?php if (!$podcastSelectSub>0) { ?>

El operador "!" es la negación, es decir, estás preguntando si la negación de $podcastSelectSub es mayor que 0... dudo que eso sea lo que quieres escribir ya que sólo será cierto cuando $podcasSelectSub sea exactamente 0 y en ese caso el while no se ejecutará nunca.
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