مرحبا اخواني
لقد قمت بعمل سكريبت لرفع الملفات غلى قاعدة البيانات بدلا من رفعها الى مجلد معين على القرص، ولكنني اردت تطويره ليصبح بالامكان رفع اكتر من ملف في ان واحد الى قاعد بيانات واستخدمت طريقة جعل المستخدم يحدد عدد حقول رفع الملفات ليختار عدد الملفات المراد رفعها
ولكنني اواجه مشكلة الا وهي ان السكريب يرفع الملف الاول ولكنه عند رفع الملف التاني نلاحظ انه قام بدمج الملفين الاول والتاني في الحقل في قاعدة البيانات
- خصائص الحقول في قاعدة البيانات
كود PHP:
`fileID` int(11) NOT NULL auto_increment,
`file_mime` text NOT NULL,
`file_contents` mediumblob NOT NULL,
`file_name` text NOT NULL,
`file_size` int(4) NOT NULL default '0',
- كود ادخال ملف واحد في قاعدة البيانات
كود PHP:
$fp = fopen($_FILES['userfile']['tmp_name'], "rb");
while(!feof($fp))
{
$file_contents .= fread($fp, 1024);
//fread is binary safe
}
fclose($fp);
$file_contents = addslashes($file_contents);
$file_contents = addcslashes($file_contents, "\0");
$file_mime= $_FILES['userfile']['type'];
$file_name= $_FILES['userfile']['name'];
$file_size= $_FILES['userfile']['size'];
$Incats =mysql_query("INSERT INTO files (file_mime,file_contents,file_name,file_size) VALUES ('$file_mime','$file_contents','$file_name','$file_size')") or die (mysql_error());
- كود اظهار 5 حقول رفع ملفات
كود PHP:
<?
<form method='POST' enctype ='multipart/form-data' action='$PHP_SELF?action=upadd'>";
$num_forms = $_POST['num_forms'];
for ($num=5$num>0;$num--) {
echo "<input name='userfile[]' type='file' size='32'><br>";
}
echo "<input type='submit' value='اضــــافة' >
<input type='hidden' value='num_forms' value='$num_forms' name='filled'>
</form>
- وهذا كود استقبال الملفات لادخالها في قاعدة البيانات الذي قمت بعمله
الملاحظة انه في الادخال جميع الحقل تدخل بشكل صحيح وهي
file_mime
file_name
file_size
اما حقل
file_contents
فيتم ادخال الملف الاول بصورة صحيحة اما الملف التاني فيتم دمج الاول معه كما لاحظت
كود PHP:
$r = 0;
$userfile = $_POST['userfile'];
while (isset($userfile[$r])){
if($userfile[$r])
$fp = fopen($_FILES['userfile']['tmp_name'][$r], "rb");
while(!feof($fp))
{
$file_contents .= fread($fp, 1024);
//fread is binary safe
}
fclose($fp);
$file_contents = addslashes($file_contents);
$file_contents = addcslashes($file_contents, "\0");
$file_mime= $_FILES['userfile']['type'][$r];
$file_name= $_FILES['userfile']['name'][$r];
$file_size= $_FILES['userfile']['size'][$r];
$Incats =mysql_query("INSERT INTO files (file_mime,file_contents,file_name,file_size) VALUES ('$file_mime','$file_contents','$file_name','$file_size')") or die (mysql_error());
$r++;
}
نرجو من حضرتكم المساعدة
وكل عام وانتم بخير