2016-09-02 4 views
0

フェッチされたデータに基づいてフォントの素晴らしいアイコンを変更/追加することはできますか? type.pdfの場合、素晴らしいフォントは<i class="fa fa-file-pdf-o">になります。そうでない場合は、type.docxの場合は<i class="fa fa-file-word-o"></i>になります。誰かに私にそれをする方法を教えてもらえますか?私は何を使用しますか? JavascriptまたはPHP?一部のデータに基づいてフォントの素晴らしいアイコンを動的に追加する方法

ここにいくつかのコードがあります。

<div class="col-sm-6 col-md-6"> 
    <?php 
       $sql ="SELECT * FROM lectures WHERE subj_descr = '$subj'"; 
       $result = mysqli_query($con, $sql); 


       while($row = mysqli_fetch_array($result)){ 
       $file = $row['file']; 
       $type = $row['type']; 

     ?> 

    <a style="display:block; margin-top:5px;" href="uploads/<?php echo $file ?>" target="_blank"><i class="fa fa-file-word-o"></i> <?php echo $file; ?></i></a> 

     <?php 
      } 
     ?> 
    </div> 

答えて

1

このような何か試してみてください:すべての

<?php 
if($type = $row['type'] == 'pdf') // make <i> tag on behalf of condition 
{ 
    echo '<i class="fa fa-file-pdf-o">'. your text here .'</i>'; 
} 
else if($type = $row['type'] == 'txt') 
{ 
    echo '<i class="fa fa-file-word-o">'. your text here .'</i>'; 
} 
?> 
+0

感謝。それは働いた:) – nethken

+0

それは素晴らしいです!楽しい :) –

1

まず、ベストプラクティスは、あなたのロジックからプレゼンテーションを分離することです。あなたのHTMLの途中でmysqlクエリーを正しく実行するのは良い考えではありません。代わりに、HTMLの前にクエリを置き、結果をHTMLにループします。結果の上にHTMLループ内で次に

$files = []; 
while($row = mysqli_fetch_array($result)){ 
    $file['filename'] = $row['file']; 
    $file['type'] = $row['type']; 

    switch($file['type']) { 
     case 'pdf': 
      $file['fa'] = 'fa-file-pdf-o'; 
      break; 
     case 'docx': 
     case 'doc': 
      $file['fa'] = 'fa-file-word-o'; 
      break; 
     default: 
      throw new Exception('Invalid file type'); // Handle this how you want 
    } 
    $files[] = $file; 
} 

:あなたのHTMLの前にこのような何かを入れて

<div class="col-sm-6 col-md-6"> 
    <?php 
     foreach ($files as $file) { 
      ?> 
      <a style="display:block; margin-top:5px;" href="uploads/<?php echo $file['filename'] ?>" target="_blank"> 
       <i class="fa <?php echo $file['fa'];?>"></i> <?php echo $file['filename']; ?></i> 
      </a> 
      <?php 
     } 
    ?> 
</div> 
1

また、ここでスイッチを使用することができます。

switch(strtolower($row['type'])){ 
    case 'pdf': 
     $icon = "fa-file-pdf-o"; 
     break; 
    default: 
     $icon = "fa-file-word-o"; 
     break; 
} 

echo "<i class='fa ". $icon ."'>". your text here ."</i>"; 

注:テキストにも可変値を使用できます。スイッチケースの内部にも入ります。

1

このようにすることもできます.HTMLの少ないコードを入力してください。

<?php 
$row['type']=='pdf'?'pdf':'txt'; 
?> 
<i class="fa fa-file-<?=$row['type']?>-o"></i>; 
1

ページに次の機能を追加します。追加のファイルタイプ/アイコンを追加する必要がある場合は、配列$ faに要素数を追加することができます("new_file_type" => "fa-icon-name")。カンマを忘れないでください。

<i class="fa <?php echo getFa($type); ?>"></i> <?php echo $file; ?></i> 

機能は必要ありませんが、それは$型の変数が空であるか、ファイルの種類がある場合にエラーを防ぐでしょう:次に

<?php 
    function getFa($type){ 

     $fa = array(
      "pdf" => "fa-file-pdf-o", 
      "docx" => "fa-file-word-o" 
      ); 

     return isset($fa[$type]) ? $fa[$type] : ''; 
    } 
?> 

ArraysはHTMLで、次のように使用することができます配列に含まれていません。

ファイルタイプが常に存在し、配列に要素が関連付けられていることが確実な場合は、配列を作成してコードから呼び出すこともできます。

例:HTMLでは

<?php 
    $fa = array(
     "pdf" => "fa-file-pdf-o", 
     "docx" => "fa-file-word-o" 
     ); 
?> 

<i class="fa <?php echo $fa[$type]; ?>"></i> <?php echo $file; ?></i> 
関連する問題