2012-05-17 83 views
0

我正在構建一個簡單的應用程序,其基本任務是批准從MySQL表中列出的內容。列表項很長,比如15到20個項目。我想將複選框放在列表項目的右側,並允許用戶檢查多個項目,然後單擊提交按鈕批准所選項目。如何使用複選框在php中進行多個查詢?

我已經在表格上設置了一個基本的標誌列來設置0或1來批准或拒絕。在我現有的系統中,用戶必須單擊該鏈接並轉至特定頁面,然後單擊批准以批准該項目。我想通過允許用戶選中複選框並選擇多個條目以批准這些項目來縮短流程時間。

enter image description here

這是我的表和產品的YouTube鏈接,以便管理員可以查看視頻,如果它好,他/她可以通過檢查複選框批准。

這裏是具體批准的項目

<?php 
$msg = ""; 
$idForm = $_GET['id']; 

if(isset($_POST['submit'])){ 
    $msg= approveVideo($idForm); 
} 
?> 

的approveVideo功能當前頁面的PHP代碼:

function approveVideo($id) { 
    $message =""; 
    $query= "UPDATE locus_videos SET set_flag='1' WHERE id='{$id}'"; 

    if(mysql_query($query)) { 
     $message ="Video Approved "; 
    }else { 
     die("failed: " . mysql_error());  
    } 

    return $message; 

} 

的PHP文件中的表格式:

<table width="100%" height="487" border="0" cellpadding="5" cellspacing="5"> 

「方法=」 POST 「>

<table width="100%" border="0" cellspacing="5" cellpadding="5"> 

上傳名稱 視頻鏈接

」> 「 目標=」 _空白「>

</form> 
</td> 

在我目前的版本,當用戶點擊這個視頻重定向到特定的頁面,並從那裏只有他才能批准該視頻(YouTube的鏈接)的鏈接

+1

你有沒有爲這個項目編寫任何PHP?如果是這樣,請顯示相關部分。如果沒有,那麼你可能會尋找一些基本的PHP + HTML表單教程。 –

+0

這是從phpmyadmin的屏幕截圖 – mishu

+0

@mishu我認爲這是他想要做的一個例子 – pomeh

回答

2

有兩種方法,具體取決於您是否想要「批准」行,或者「批准」和「不批准」行。

第一:

<table> 
    <thead> 
     <tr> 
      <td>&nbsp;</td> 
      <td>Url</td> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td><input type="checkbox" name="Approve[]" value="1" /></td> 
      <td>http://www.youtube.com/...</td> 
     </tr> 
     <tr> 
      <td><input type="checkbox" name="Approve[]" value="2" /></td> 
      <td>http://www.youtube.com/...</td> 
     </tr> 
     <tr> 
      <td><input type="checkbox" name="Approve[]" value="3" /></td> 
      <td>http://www.youtube.com/...</td> 
     </tr> 
    </tbody> 
</table> 

正如你可以看到,有一個名爲複選框「批准[]」,並於各行的不同價值。該值是您表格的ID列。

在你的PHP,那麼您需要使用以下命令:

function approveVideos($ids) 
{ 
    $message = ''; 
    $query = 'update locus_videos set set_flag = 1 where id in (' . implode(',', $ids) . ')'; 
    if(mysql_query($query)) 
    { 
     $message ="Videos Approved "; 
    } 
    else 
    { 
     die("failed: " . mysql_error());  
    } 
    return $message; 
} 


$ids = $_POST['Approve']; 
approveVideos($ids); 

二:

<table> 
    <thead> 
     <tr> 
      <td>&nbsp;</td> 
      <td>Url</td> 
     </tr> 
    </thead> 
    <tbody> 
     <tr> 
      <td><input type="hidden" name="Approve[1]" value="0" /><input type="checkbox" name="Approve[1]" value="1" /></td> 
      <td>http://www.youtube.com/...</td> 
     </tr> 
     <tr> 
      <td><input type="hidden" name="Approve[2]" value="0" /><input type="checkbox" name="Approve[2]" value="1" /></td> 
      <td>http://www.youtube.com/...</td> 
     </tr> 
     <tr> 
      <td><input type="hidden" name="Approve[3]" value="0" /><input type="checkbox" name="Approve[3]" value="1" /></td> 
      <td>http://www.youtube.com/...</td> 
     </tr> 
    </tbody> 
</table> 

在PHP中,你會做到以下幾點:

function setVideoFlag($id, $flag = 1) 
{ 
    $message = ''; 
    $query = 'update locus_videos set set_flag = ' . $flag . ' where id = ' . $id; 
    if(mysql_query($query)) 
    { 
     $message ="Video " . ($flag == 1 ? 'Approved' : 'Disapproved'); 
    } 
    else 
    { 
     die("failed: " . mysql_error());  
    } 
    return $message; 
} 

foreach($_POST['Approve'] as $id => $flag) 
{ 
    setVideoFlag($id, $flag); 
} 

希望這有幫助嗎?

Gavin

+1

非常感謝您的時間。幫助很多 – monk

+1

加文爲詳細的代碼:) – verisimilitude

2

相當簡單。您需要爲您想要批准的每個內容選擇一組複選框(如下所示)。將每個複選框的值作爲內容標識

<input type="checkbox" id="chk_1" name="**band[]**" value="ABC" /> ABC <br/> 
<input type="checkbox" id="chk_2" name="**band[]**" value="PQR" /> PQR <br/> 
<input type="checkbox" id="chk_3" name="**band[]**" value="XYZ" /> XYZ <br/> 

現在上面的複選框將封裝在您的。當您提交表單,並檢查所張貼的陣列(即$ _POST)它將具有條目

陣列( 「帶」=>陣列( 「0」=> ABC,1 => PQR。 ); );

使用php的implode函數將其轉換爲以逗號分隔的php字符串,並將此字符串傳遞給Update查詢的WHERE的IN子句。

有兩件事很重要。

1)您需要使用上面示例中使用的複選框數組。

2)您需要將複選框的值屬性設置爲內容ID或任何內容表的主鍵。希望這可以幫助。

+0

這些返回值是身份證號碼,所以我必須把它們放在身份證號碼內,如 WHERE id ='1,2,3' – monk

+0

沒有。在哪裏id(1,2,3)。嘗試加文的解決方案,儘管使其與您的代碼/實施同步。 – verisimilitude

相關問題