Estoy tratando de hacer eco de las semanas en que se ganó una medalla en particular. Estoy obteniendo esos datos de un DB, cuyo resultado se almacena en "$ toprow55".

El siguiente es el código que estoy usando para hacer eco del resultado de la consulta: -

<div class="modal-body" style="white-space: pre-line ;color:black;background:#ffc266; font-size:17px ">
                <?php while( $toprow55 = sqlsrv_fetch_array( $stmt55) ){
                 if($toprow55 !== NULL){?>
              <?php  echo "Gold medals won  : "."\n". "".$toprow55['WeekNumber']."" ."\n";
                }
              else {
                {
                  echo "No  Gold medals won";
                } }}?>

                </div>

Problema : Recibo el texto: "Ganaron medallas de oro:" tantas veces como se repite el resultado. Entiendo que necesito usar "sqlsrv_fetch_array ($ stmt55)" aquí. Por favor, dígame cómo ¿Muestro "Medallas de oro ganadas:" solo una vez

Foto para mostrar el escenario actual:

img

1
jane 14 ene. 2017 a las 21:12

3 respuestas

La mejor respuesta

Deberia de funcionar. Puede mostrar su etiqueta "Medallas de oro ganadas" una vez con un valor booleano establecido en verdadero y luego en falso al final de su condición if.

<div class="modal-body" style="white-space: pre-line ;color:black;background:#ffc266; font-size:17px ">
<?php
  $i = true;
  while( $toprow55 = sqlsrv_fetch_array( $stmt55) ){
    if($toprow55 !== NULL){
       if($i) echo "Gold medals won  :\n";        
       echo $toprow55['WeekNumber']."\n";
       $i = false;
     }
  }
  if($i){
    echo "No  Gold medals won";
  } 
?>
</div>
1
Knriano 14 ene. 2017 a las 19:39

La forma más sencilla en su caso sería agregar un contador y preguntar si el contador es cero o algo más.

<?php
$i = 0;
while( $toprow55 = sqlsrv_fetch_array( $stmt55) ){
    if ($i == 0) {
        echo echo "Gold medals won  : \n";
    }

    if($toprow55 !== NULL){
        echo $toprow55['WeekNumber'] . "\n";
    } else {
        echo "No  Gold medals won";
    }
    $i++;
}
?>
1
Philipp 14 ene. 2017 a las 18:17

Debe romper el ciclo while una vez que se hayan logrado los resultados, de lo contrario, reiterará el infinito siempre que $toprow55 = sqlsrv_fetch_array($stmt55) sea verdadero.

<div class="modal-body" style="white-space: pre-line ;color:black;background:#ffc266; font-size:17px ">
  <?php
    while($toprow55 = sqlsrv_fetch_array($stmt55)){
      if($toprow55 !== NULL){
        echo "Gold medals won  : "."\n". "".$toprow55['WeekNumber']."" ."\n";
      } else {
        echo "No  Gold medals won";
      };
      break;
    };
  ?>
</div>

PHP mientras documentación

0
user7404756user7404756 14 ene. 2017 a las 18:34