2016-09-02 2 views
0

Можно ли изменить/добавить шрифт удивительный значок на основе выбранных данных? Если type - .pdf, то шрифт awesome будет <i class="fa fa-file-pdf-o"> else if type is .docx будет <i class="fa fa-file-word-o"></i>. Может ли кто-нибудь дать мне идеи, как это сделать? Что я буду использовать? Javascript или PHP?Как добавить шрифт awesome icon динамически на основе некоторых данных

вот некоторые из моих кодов.

<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

Прежде всего, лучшая практика, чтобы отделить презентацию от вашей логики. Неправильный выбор запроса mysql в середине вашего HTML - это не очень хорошая идея. Вместо этого поставьте свой запрос перед своим HTML и просмотрите результаты в HTML.

Put что-то вроде этого, прежде чем ваш 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

вы также можете сделать как этот.put нет код в html.

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

Добавьте на свою страницу следующие функции. Если вам нужно добавить дополнительные типы файлов/значков, вы можете добавить еще несколько элементов в массив $ fa в "new_file_type" => "fa-icon-name". Только не забудьте запятые. Arrays

<?php 
    function getFa($type){ 

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

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

Тогда в HTML, можно использовать так:

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

функция не требуется, но это будет избежать ошибок в случае, если переменная $ тип пуст или тип файла не содержащихся в массиве.

Также можно просто создать массив и вызвать его из вашего кода, если вы уверены, что тип файла всегда существует, и он будет иметь элемент, связанный в массиве.

Пример:

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

В HTML:

<i class="fa <?php echo $fa[$type]; ?>"></i> <?php echo $file; ?></i> 
Смежные вопросы