2017-01-14 1 views
1

Ich versuche, die Wochen zu wiederholen, wenn eine bestimmte Medaille gewonnen wurde. Ich hole diese Daten von einer DB, deren Ergebnis in "$ toprow55" gespeichert wird.Echo-Text nur einmal in if-Anweisung

Im Folgenden ist der Code, den ich bin mit dem Ergebnis der Abfrage Echo: -

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

Problem: Ich erhalte den Text: "Goldmedaillen gewonnen:" so oft wie das Ergebnis wird echo. Ich verstehe, dass ich "sqlsrv_fetch_array ($ stmt55)" hier verwenden müssen. Bitte sagen Sie mir, wie ich "Goldmedaillen gewonnen:" onlyonce

pic das aktuelle Szenario angezeigt:

img

Antwort

1

Es sollte funktionieren. Sie können Ihr Etikett "Goldmedaillen gewonnen" einmal mit einem booleschen Wert anzeigen, der am Ende Ihrer if-Bedingung auf "True" und dann auf "False" gesetzt ist.

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

+0

Danke für die Eingabe. – jane

+0

es geht nicht zum else Teil. Es wird nicht angezeigt - "Keine Goldmedaillen gewonnen" – jane

+0

@jane Ich habe meine Antwort bearbeitet. Könnten Sie versuchen, mir zu sagen, ob es funktioniert? – Knriano

1

Die einfachste Art und Weise in Ihrem Fall wäre einen Zähler hinzuzufügen und zu fragen, wenn der Zähler Null oder etwas anderes ist.

<?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++; 
} 
?> 
+0

Dank lot.It works.God ya segnen. – jane

+0

es geht nicht zum else Teil. Es wird nicht angezeigt - "Keine Goldmedaillen gewonnen" @Philipp – jane

0

Sie müssen die while-Schleife brechen, nachdem die Ergebnisse erreicht wurden, werden ansonsten während unendlich wiederholen, solange $toprow55 = sqlsrv_fetch_array($stmt55) wahr ist.

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