2011-11-22 38 views
0

我有幾種形式,具有不同的領域和目的。需要幫助使用php從mysql表中獲取id

所以我想「嘿,我會建立一個通用的insert.php頁面輸入數據到我的數據庫」。
好吧,到目前爲止這麼好。

但現在我需要將文件鏈接到每條記錄,所以我的表單有一個<input type="file">字段。
我真正想要做的是允許用戶選擇多個文件(圖片,視頻),創建一個名稱類似於表格的目錄加上正在插入的記錄的編號(upload/$tablename/$id/),存儲文件並添加數據庫路徑。

喜歡的東西:

ID | NAME | WEBPAGE | FILES 
01 | john | john.com | /upload/tblWebpages/01/ 
02 | mike | mike.net | /upload/tblWebpages/02/ 
19 | jimy | jimy.org | /upload/tblWebpages/19/ 

,因爲我不知道有多少文件將被插入或他們的名字,後來我打算以獲取在該目錄中的所有圖像,並顯示它。

是否有可能在正在處理上載時從表格中知道記錄ID?
因爲,如上所述,我想將這些文件存儲在一個名爲$ ID的目錄下。
我應該如何將它添加到我的查詢?

好了,到代碼:

insert.php

include('classes/class.upload.php'); 

$server = "localhost"; 
$user = "root"; 
$password = "xxxxx"; 
$database = "myDB"; 
$tabela = $_POST['tabela']; 
$diretorio = "upload/".$tabela."/"; 

mysql_connect($server,$user,$password); 
mysql_select_db($database) or die("Unable to select database" . mysql_error()); 

// create an array to hold your filnames 
$images = array(); 
$files = array(); 
foreach ($_FILES['imagem'] as $k => $l) { 
    foreach ($l as $i => $v) { 
     if (!array_key_exists($i, $files)) 
     $files[$i] = array(); 
     $files[$i][$k] = $v; 
    } 
}  
foreach ($files as $file) { 
    $handle = new Upload($file); 
    if ($handle->uploaded) { 
     $handle->Process($diretorio); 
     if ($handle->processed) { 
      echo 'OK '; 
      // add the filename to the array 
      $images[] = $handle->file_dst_pathname; 
     } 
     else { echo 'Upload error: ' . $handle->error; } 
    } 
    else { echo 'Upload error: ' . $handle->error; } 
unset($handle); 

} 

foreach ($_POST as $field => $value) { 
    if (!preg_match("/$value/i", $tabela)) { 
     if (preg_match("/$field/i", 'data')) {$value = date('Y-m-d', strtotime($value));} 
     else {$value = mysql_real_escape_string($value);} 
     $campo .= $field . ','; 
     $valor .= '\'' . $value . '\'' . ','; 
     $query = "INSERT INTO $tabela ($campo) VALUES ($valor)"; 
     $query = str_replace(",)",")",$query); 
     //echo " inside foreach RESULT = $result and QUERY = $query <br>"; 
    } 
} 

$result = mysql_query($query); 
echo " outside foreach RESULT = $result and QUERY = $query <br>"; 

if (!$result) { 
    $message = 'Invalid query: ' . mysql_error() . "\n"; 
    $message .= 'Whole query: ' . $query; 
    die($message); 
} 

mysql_close(); 

form.php的(簡體)

<form method="POST" action="insert.php" class="classeform" enctype="multipart/form-data"> 
    <label for="namee" class="lbl-d-input">Name: </label> 
    <input type="text" name="namee" id="namee" class="field"> 

    <label for="webpage" class="lbl-d-input">Webpage: </label> 
    <input type="text" name="webpage" id="webpage" class="field"> 

    <label for="files" class="lbl-d-input">Files: </label> 
    <input type="file" name="files[]" id="files" class="field-img"> 

    <input type="hidden" name="tabela" value="mytbl"> 

    <input type="submit" value="Enviar" class="btn-enviar"> 
</form> 
+1

明白了。稍後將發佈答案。 – RASG

回答

1

掌握它與mysql_insert_id()

0

你看到你的回顯的價值觀?

我會寫一些調試代碼

例如啓動: 這行代碼

if (!preg_match("/$value/i", $tabela)) { 

後,我會把

print("Value Matched"); 

你知道你進入這樣你的循環。另外我注意到你沒有追加到循環中的$ query變量,所以數據庫條目永遠不會被添加?

+0

嗨羅伯特。稍微改變了我的問題。你會看看嗎?謝謝。 – RASG

+0

@RASG在看到確定正在打印時是否會得到不同的結果? – Robert