0

あなたが助けることができるかどうか疑問に思っていますか?

私は現在、管理者がファイルをサーバーにアップロードできるようにするスクリプトに取り組んでいます。ファイルがアップロードされると、フォームから情報が取得されてデータベースに保存され、後でアクセス許可を持つユーザーがファイルをダウンロードできるようになります。

私はフォームを作ることができました:

Select File To Upload
<div style="width:100%; margin:5px;">
<form action="uploadclientfile.php" method="post" enctype="multipart/form-data" name="upload" style="margin:5px;">
<label> File</label><br /><br />
<input name="uploaded_file" type="file" class="input-xlarge" required/>
<input type="hidden" name="MAX_FILE_SIZE" value="1000000" /><br /><br />
<label>Select Users Who Can Download The File</label><br /><br />
<select name="users[]" multiple="multiple" style="width:300px">
<?php
$useruploadids = mysql_query("SELECT member_id, firstname, lastname FROM members");
while ($row = mysql_fetch_assoc($useruploadids)) {
    $user_id = $row['userid']; 
    $firstname = $row['firstname'];
    $lastname = $row['lastname'];
?>
<option value=""<?php echo $user_id ?>"><?php echo $firstname ?><?php echo $lastname     ?></option>
<?php } ?>
<input name="Upload" type="submit" value="Upload" class="btn" />
</form>

したがって、これにより、データベースからのすべてのユーザーを含む複数選択ボックスが作成され、必要に応じて複数を選択できます。ユーザー ID の名と姓を呼び出します。ただし、ユーザーIDは表示されません。それは結構です。

次のファイルはアップロード ファイルです。発生している問題はデータベースにあります。選択したユーザー ID は記録されておらず、ファイル名は常に配列として表示されます。ファイルの場所は正しく保存されますが。

何が間違っているのですか?

<?php 

 $target = "clientfiles/"; 
 $target = $target . basename( $_FILES['uploaded_file']['name']); 

 $userid=$_POST['users[]'];  
 $file=($_FILES['uploaded_file']); 

 mysql_connect("localhost", "username", "password") or die(mysql_error()) ; 
 mysql_select_db("database") or die(mysql_error()) ; 



 mysql_query("INSERT INTO `cfiles` VALUES ('$userid', '$file', '$target')") ; 


 if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $target)) 
 {
 echo "The file ". basename( $_FILES['uploadedfile']). " has been uploaded, and your information has been added to the directory"; 
 } 
 else {  
 echo "Sorry, there was a problem uploading your file."; 
 } 
 ?> 

手がかりはありますか?

読んでくれてありがとう

4

1 に答える 1

0

ユーザーがuseridsフォーム表記で複数を選択できるようにすると[]、以下$userid=$_POST['users[]'];は配列になります。与えられ$useridた配列を文字列としてArray()保存すると、実際の user_id 値の代わりに値が保存されます。データベース テーブル フィールドuser_idの型が のINT場合、文字列値をArray()格納することさえできず、結果は 0 になります。

複数の値を保存して複数のレコードに変換することが目標の場合は、$user_id配列を反復処理して次のように保存する必要があります

foreach ($userid as $id) {
    mysql_query("INSERT INTO `cfiles` VALUES ('$id', '$file', '$target')")
}
于 2013-07-20T09:23:56.463 に答える