-2

J'ai une balise HTML ici:l'image d'écho selon une condition

<span class="fa-stack fa-5x has-badge" > 
    <div class="badgesize"> 
     <img src="badgeImages/1.png" alt="" > 
    </div> 
</span> --> 

requête utilisée pour extraire les informations et les stocker dans une variable:

$q4 = "SELECT TOP 3 b.BadgeName, b.BadgeImage FROM BadgeImageTable AS b 
INNER JOIN employee_badge AS e 
ON e.badge_id = b.BadgeID 
WHERE e.employee_id = 2164 
ORDER BY e.earned_on DESC "; 
$stmt3=sqlsrv_query($conn,$q4); 
if($stmt3==false) 
{ 
echo 'error to retrieve info !! <br/>'; 
die(print_r(sqlsrv_errors(),TRUE)); 
} 

Dans la balise image que je suis en train de faire écho à l'image d'un badge avec certaines conditions.

<span class="fa-stack fa-5x has-badge" > 

     <div class="badgesize"> 

      <img src=" 

<?php 

if($count = sqlsrv_num_rows($stmt3) > 0){ 
while($recentBadge = sqlsrv_fetch_array($stmt3)){ 
$result[] = $recentBadge; 
} 

if($count > 3){ 
$result = array_rand($result, 3); 
         } 

foreach($result as $recentBadge){ 
echo 
$recentBadge['BadgeName'], 
'<img src="'.$recentBadge['BadgeImage'].'">', 
'<br>' 
    ; 
    } 
    } else { 
    echo 'no results'; 
     } 

     ?> 

     " alt="" > 

    </div> 

</span> 

Etat PHP ci-dessus:

Je veux faire écho à toutes les trois images aléatoires si le nombre est supérieur à 3, quel que soit d'autre écho « $ recentBadge » donne le résultat.

Problème: Je ne suis pas capable de faire écho selon la condition ci-dessus.

Chaque fois que j'essaie de faire écho une image simple sans aucune condition (en utilisant PHP ci-dessous), je peux le faire sans aucun problème. Donc, je suis capable de récupérer l'image de la base de données, le problème réside dans le PHP conditionnel.

<img src="<?php echo "".($badgerecent['BadgeImage']).""; ?>" > 
+1

Une indentation de code sensible serait une bonne idée. Il nous aide à lire le code et plus important encore, il vous aidera ** à déboguer votre code ** [Jetez un coup d'œil à une norme de codage] (http://www.php-fig.org/psr/psr-2/) pour votre propre bénéfice. Il vous sera peut-être demandé de modifier ce code dans quelques semaines/mois et vous me remercierez à la fin. – RiggsFolly

+0

___Question___ Sur combien de serveurs SQL testez-vous actuellement? – RiggsFolly

+0

'if ($ count = sqlsrv_num_rows ($ stmt3)> 0) {' doit être nettoyé. –

Répondre

0

La sortie de votre code a été de mettre <img> balises dans l'attribut src de la balise.
Cela ne fonctionne pas par définition en HTML. Si tout le reste avait raison, cela devrait fonctionner:

<?php 

function get_random_elements($array,$limit = 0) { 

    shuffle($array); 

    if ($limit > 0) { 
     $array = array_splice($array, 0, $limit); 
    } 
    return $array; 
} 

function render_images() { 
    global $stmt3; 
    $output = ''; 

    if ($count = sqlsrv_num_rows($stmt3) > 0) { 
     while ($recentBadge = sqlsrv_fetch_array($stmt3)) { 
      $result[] = $recentBadge; 
     } 

     if ($count > 3) { 
      $result = get_random_elements(result, 3); 
     } 

     foreach ($result as $recentBadge) { 
      $output .= $recentBadge['BadgeName']; 
      $output .= '<img src="' . $recentBadge['BadgeImage'] . '" alt="">'; 
      $output .= '<br>'; 
     } 
    } else { 
     $output = 'no results'; 
    } 

    return $output; 
} 
?> 

<span class="fa-stack fa-5x has-badge" > 

    <div class="badgesize"> 

     <?php echo render_images(); ?> 

    </div> 

</span> 

En tant que conseil: s'il vous plaît essayer de garder votre code séparé, la logique séparée de la vue.

+0

hey merci pour l'entrée.Malheureusement, je reçois une erreur --- Erreur d'analyse: erreur de syntaxe, inattendue 'var' (T_VAR) dans C: \ xampp \ htdocs \ web1 \ profile \ index.php sur la ligne 302 – jane

+0

S'il vous plaît essayez à nouveau maintenant. J'ai fait une erreur parce que je me suis habitué au langage de programmation que j'utilise maintenant (C# & JS) –

+0

merci beaucoup d'avoir essayé, malheureusement, mais j'ai eu des erreurs. – jane