2011-10-26 13 views
0

複数のファイルをフォルダにアップロードし、名前をデータベーステーブルに保存しようとしています。コードは次のとおりです。アップロードされたファイルの名前を取得する必要があります。私は私のコードはがらくたである知っている:(複数のファイルをアップロードするファイルの名前を取得

は、それらのファイルのアップロードをループする方法はありますし、まだファイル名を返す? 私はMySQLのテーブルにそれらを挿入することができるようにそれらの名前を必要としています。ため

感謝。あなたの援助

​​

そして、PHPスクリプトは以下の通りです:

<?php 

    $target = "uploads/"; 
    $target = $target . basename($_FILES['pic1']['name']); 
    $target = $target . basename($_FILES['pic2']['name']); 
    $target = $target . basename($_FILES['pic3']['name']); 
    $target = $target . basename($_FILES['pic4']['name']); 

$pic1 =($_FILES['pic1']['name']); 
$pic2 =($_FILES['pic2']['name']); 
$pic3 =($_FILES['pic3']['name']); 
$pic4 =($_FILES['pic4']['name']); 

$con = mysql_connect("localhost", "root", ""); 
    if (!$con){ 
    die('Could not connect: ' . mysql_error()); 
    } 

    mysql_select_db("people", $con); 

    $sql="INSERT INTO mtpupload (name, age, pic1, pic2, pic3, pic4) 
    VALUES('$_POST[name]','$_POST[age]','$pic1', '$pic2', '$pic3', '$pic4')"; 

    //---------Here, I want to insert all the pictures----------//  
    if(move_uploaded_file($_FILES['pic1']['tmp_name'], $target)) { 
     //do nothing 
    } 
    if(move_uploaded_file($_FILES['pic2']['tmp_name'], $target)) { 
     //do nothingelse{ 
    }if(move_uploaded_file($_FILES['pic3']['tmp_name'], $target)) { 
     //do nothing echo "Sorry, the image was not moved from temp folder."; 
    }if(move_uploaded_file($_FILES['pic4']['tmp_name'], $target)) { 
     //do nothing 
     echo "The was a problem uploading one of your images."; 
    } 
    //--------------Ends here---------------------// 

    if (!mysql_query($sql,$con)){ 
    die('Error: ' . mysql_error()); 
    } 
    echo "1 record added"; 

    mysql_close($con) 
    ?> 

UPDATE:では、このコードは動作しているものの、フォルダ内に1つの画像しか保存していないことが判明しました。私は自分のmove_uploaded_fileが間違っていると思う。すべてのポインタ?

もう一度お手数をおかけします。

foreach ($_FILES as $file) { 
    echo $file['name']; // File name of file on user's computer 
    echo $file['tmp_name']; // Full path to the file on the server 
} 
+2

http://nl3.php.net/manual/en/control-structures.foreach.php –

+0

ループについてはどうですか? –

+0

ところで、あなたのコードは、同じファイル名の2つのファイルがアップロードされている場合を考慮していません。後者は単に前者を上書きします。 –

答えて

1

ご提案してくれてありがとうの人々、私は最終的にそれが働いてしまったこのことについて何

0

。私は多くの場所で$ target変数を使用していました。別の変数に名前を変更すると助けになりました。

1

たぶん、これはファイルのフィールド名とforeacharrayを使用して、便利です::

$fields = array('pic1', 'pic2', 'pic3', 'pic4'); 
$fileNames = array(); 

foreach($fields as $field) 
{ 
    $file = $_FILES[$field]; 
    # you can now process each file on it's own. 

    $fileNames[$field] = $file['name']; # store all names into an array 
    ... 
} 
関連する問題