2012-11-03 83 views
1

語言:PHP/MySQL的

我有一個頁面上的表單,隱藏輸入。我將來自這些輸入的數據轉發到另一個頁面,然後將它們插入到我的數據庫中。

形式內的輸入是:

  • copied_filename []
  • copied_url []
  • copied_userid []

這些建立爲陣列,因爲有次一個用戶將會連接多個文件

<input type="hidden" id="copied_filename" name="copied_filename[]" value="<?php echo $img->filename; ?>" /> 
<input type="hidden" id="copied_url" name="copied_url[]" value="<?php echo $img->url; ?>" /> 
<input type="hidden" id="copied_userid" name="copied_userid[]" value="<?php echo $current_user->id; ?>" /> 

現在在哪兒接收數據的第二頁,這是我如何處理它:

if (empty($_POST["copied_filename"])) { 
    WHAT IT DOES WHEN THERE ARE NO ATTACHED FILES 
    } 

    else { 
    $copied_filename = $_POST["copied_filename"]; 
    $copied_url = $_POST["copied_url"]; 
    $new_sessionid = $_POST['session_id']; 


    foreach ($_POST["copied_filename"] as $copied_file) { 
     $sql = "INSERT INTO ".$wpdb->prefix."estimate_images (code, url, filename, session_id, user_id) VALUES ('".$code."', '".$copied_url."', '".$copied_file."','".$new_sessionid."', '".$current_user->id."')"; 
     $wpdb->query($sql); 

    } 

它工作正常的文件名,但插入我的數據庫中的網址是詞「Array」...

我確定這是foreach格式,但我很難&不知道如何解決它。

非常感謝你的時間,任何幫助將不勝感激!

+2

使用'print_r($ _ POST [「copied_filename」])'看看,這個變量有什麼結構。 – bidifx

+0

它看起來像你的$ copied_url是一個數組,需要使用php implode()函數轉換爲字符串。或者甚至更好的解決方案是將它作爲一個字符串在開始 –

+0

我改變了你的foreach循環了一下,檢查我的答案。讓我知道它是否正常工作 – kidz

回答

2
if (empty($_POST["copied_filename"])) { 
    //WHAT IT DOES WHEN THERE ARE NO ATTACHED FILES 
} 

else { 
    $new_sessionid = $_POST['session_id']; 

    foreach ($_POST["copied_filename"] as $k => $copied_file) { 
     $copied_url = $_POST["copied_url"][$k];   

     $sql = "INSERT INTO ".$wpdb->prefix."estimate_images (code, url, filename, session_id, user_id) VALUES ('".$code."', '".$copied_url."', '".$copied_file."','".$new_sessionid."', '".$current_user->id."')"; 
     $wpdb->query($sql); 
    } 
} 
+0

非常感謝您分享您的知識,我很感激! :) – Mafia

1

因爲它們是數組。 echo無法正確顯示數組。使用print_rvar_dump查看正確的結構。

如果要訪問第一個元素,則需要echo $_POST["copied_filename"][0]

如果要訪問所有元素,請使用foreach循環對其進行迭代。

+0

感謝您的回覆,我如何將其與當前使用的foreach結合使用? – Mafia

0

$ copied_url是一個數組。 要獲取網址,您必須執行如下操作$ copied_url [0]。 在你的情況也許simething這樣可以工作:

for($i=0; $i< count($_POST["copied_filename"]); $i++) { 
    $sql = "INSERT INTO ".$wpdb->prefix."estimate_images (code, url, filename, session_id, user_id) VALUES ('".$code."', '".$copied_url[$i]."', '".$copied_filename[$i]."','".$new_sessionid."', '".$current_user->id."')"; 
    $wpdb->query($sql); 

} 
1

你的foreach只工作copied_filename。對於你的情況嘗試這樣:

foreach ($_POST["copied_filename"] as $key => $val) 
{ 
    $sql = "INSERT INTO ".$wpdb->prefix."estimate_images (code, url, filename, 
    session_id, user_id) VALUES ('".$code."', '".$copied_url[$key]."', 
    '".$val."','".$new_sessionid."', '".$current_user->id."')"; 
    $wpdb->query($sql); 
}