2011-09-21 55 views
2

我正在使用codeigniter,此刻我遇到了一些問題。當我插入IFRAME(來自YouTube的)到數據庫的視圖文件,我得到行這樣的代碼:將iframe插入到mysql db中

<iframe width="420" height="315" src="http://www.youtube.com/embed/aWvcNkRJhHw" frameborder="0" allowfullscreen></iframe> 

如何插入iframe中到數據庫並正確顯示?

編輯的零件:

插入

形式:

<h3>Create News</h3> 
<?php echo form_open('news/create_news') ?> 
<label for="title">Title</label><input type="text" name="title" class="inputBox" id="title"><br> 
<label for="body">Text</label><textarea name="body" class="inputBox" id="body" rows="5"></textarea> 
<label for="datepicker">Date</label><input type="text" name="date" class="inputBox" id="datepicker"> 
<input type="submit" name="submit" value="Create" class="submit" /> 
<input type="reset" class="button standard" value="Clear" /> 
<?php echo form_close() ?> 

功能插入:

function create_news() 
    { 
     $data = array(
    'title' => $_POST['title'], 
    'body' => $_POST['body'], 
    'date' => $_POST['date']   
); 
$this->db->insert('news', $data); 
    } 

我試圖從YouTube(嵌入視頻)插入iframe中,但它不工作很好。當我加載視圖文件時,我只是獲取文本而不是視頻()。

控制器功能:

function news() { 
    $this->load->helper('text'); 
    if ($this->session->userdata('is_logged_in') == true) { 
     $q = $this->news_model->get_all(); 
     if ($q == false) { 
      $data['np'] = 'There is no news at the moment.'; 
     } else { 
      $data['news'] = $q; 
     } 
     $this->pagg();      
     $data['main_content'] = 'admin_news'; 
     $data['title'] = 'Admin News'; 
     $this->load->view('admin/template', $data);      
    } else { 
     $this->index(); 
    } 
} 

查看文件:

<div id="news"> 
<?php if (isset($np)) { echo '<p>' . $np . '</p>'; } ?> 
<?php if (isset($news)) : ?>  
    <?php foreach ($news as $row) : ?> 
    <div class="borderBott col_12"> 
      <h3><a href="<?php echo base_url() ?>admin/news_update/<?php echo $row['title'] . "/" . $row['id_news'] ?>" ><?php echo $row['title'] ?></a></h3> 
      <p class="<?php echo alternator('par', 'nepar') ?>"><?php echo word_limiter($row['body'], 50); ?></p> 
      <p>Date written: <?php echo $row['date'] ?></p> 
      <a href="#" class="delete" id="<?php echo $row['id_news'] ?>">Delete News</a>    
     </div> 
    <?php endforeach; ?> 
<?php endif; ?> 
+0

我想你必須多解釋一下。你如何「插入一個iframe到數據庫」,你的結果是什麼,你期待什麼結果?一些示例和代碼的相關部分很適合用來回答這個問題。 – oezi

+0

我編輯了文件。 – Sasha

+0

請同時添加代碼,您要從數據庫中提供輸出。 – Usman

回答

3

由於NullUserException建議,這不是整個iframe標籤在數據庫中存儲一個好主意。

首先,它很醜。將佈局依賴數據存儲在數據庫中。切勿這樣做。如果您決定要使用不同的默認寬度和高度,該怎麼辦?您需要編輯數據庫中的所有現有記錄。其次,如果YouTube更改了他們的嵌入代碼,您的所有數據都將變得毫無用處。

IMO的正確解決方案是從iframe中提取視頻ID並將其存儲在數據庫中。

然而,如果有什麼我假設是正確的,你有一個消息後,在其嵌入的視頻,你需要看看BBCode機制。您的HTML存儲爲純文本,因此在從數據庫中簡單輸出值時無法正確顯示。通過使用像BBCode這樣的機制,您可以定義自定義標記(通常用直括號'[]'括起來),以存儲在您的數據庫中。

再次顯示數據後,您所有的標籤都會轉換回正確的HTML,您將獲得嵌入式視頻!

CodeIgniter有幾個幫手:BBCode HelperAnother BBCode Helper。 (注意:這些是助手的實際名稱,我不想變得有趣:))。

在我的CI應用程序中,我總是使用Smarty模板引擎,它也提供了BBCode助手,所以我從未使用過上述任何一種。

HTH。

0

<iframe width="560" height="315" src="https://www.youtube.com/embed/IwB4idmx7oE" frameborder="0" allowfullscreen></iframe>