PDA

View Full Version : سوال: آپلود 50 تصویر



soroush.r70
جمعه 19 مهر 1392, 21:37 عصر
می خوام در زمان ثبت اطلاعات یک پست مدیر وقتی تصاویر آپلود می کنه بتونه حداکثر تا 50 عکس آپلود کنه من باید به چه صورت باید اینکارو انجام بدم...؟

آیا باید 50 تا فیلد تصویر برای یک رکورد بزارم با 50 تا فیلد آپلود تصویر خوب این خیلی ناجور می شه آیا شما روش مناسبی می دونید..؟

saeidpsl
شنبه 20 مهر 1392, 01:12 صبح
این میتونه کمکت کنه
https://www.google.com/webhp?hl=en#hl=en&q=multiple+upload+one+file+input&safe=active

soroush.r70
شنبه 20 مهر 1392, 17:12 عصر
من در واقع می خوام یه فیلد آپلود بزارم با 50 تا فیلد عکس در جدول که اون فیلد بشه حداکثر تا 50 تا عکس رو انتخاب کرد و آپلود کرد و هر چند تا عکس انتخاب شد یکی یکی داخل فیلد ها ثبت بشه مثلا 36 عکس انتخاب کرد بیاد توی 36 تا فیلد عکس ثبت بشه....؟

saeidpsl
یک شنبه 21 مهر 1392, 00:40 صبح
ببین داش این که عکس رو انتخاب کنی و نمایش داده بشه میشه ولی فقط تو ie جواب میده مثال



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Testing File Upload Inputs</title>
<script type="text/javascript">
<!--
function doTest(form) {
window.frames.myframe.location = form.elements.myfile.value;
}

function showSrc() {
alert(window.frames.myframe.location);
}
// -->
</script>
</head>
<body>
<form method="get" action="#" onsubmit="doTest(this); return false;">
<input type="file" name="myfile" size="30">
<input type="submit" value="Test">
<input type="button" onclick="showSrc();" value="Show">
<br>
<input type="hidden" name="fname" value="">
</form>
<iframe src="#" width="300" height="300" frameborder="1" name="myframe"></iframe>
</body>
</html>
اگه عکس ها رو آپلود کنی بعد میتونی نمایش بدی ولی مستقیم از کامپیوتر نمایش بدی نمیشه فقط تو ie جواب میده.

مهرداد سیف زاده
یک شنبه 21 مهر 1392, 07:01 صبح
یعنی توی دیتابیس میخواید ۵۰ تا فیلد بزارید که آیا ۵۰ تا پر بشه و شایدم کل ۵۰ تا پر نشه
خب چه کاریه. یه فیلد توی جدول برای آدرس تصاویر و بعد بصورت آرایه همه رو در یک فیلد text ذخیره کن موقع خوندن تصاویر و برای ویرایش هم آرایه رو از دیتابیس بردار و کارهای لازم رو انجام بده

برای ریختن آرایه در دیتابیس از serialize و برای برداشتن آرایه از دیتابیس unserialize

برای فرم upload باید انتخاب تصاویرت بصورت زیر باشه



<input type="file" name=myimage[]" />


در قسمت دریافت فرم باید با حلقه foreach آرایایه که از myimage ساختی رو دریافت کنی


foreach($_FILES['myimage']['tmp_name'] as $key => $tmp_name ){
$file_name = $key.$_FILES['files']['name'][$key];
$file_tmp =$_FILES['files']['tmp_name'][$key];
move_uploaded_file($file_tmp,'/upload/'.$file_name);
}


البته با حلقه for هم این کار رو انجام دادن
http://stackoverflow.com/questions/2704314/multiple-file-upload-in-php

راهنمای php برای آپلود چند فایل بصورت همزمان
http://php.net/manual/en/features.file-upload.multiple.php

MMSHFE
یک شنبه 21 مهر 1392, 10:05 صبح
خوب یه فیلد برای هر کاربر بگذارین که تعداد تصاویر آپلود شده توسط اون رو نگه داره و هربار که یک عکس با موفقیت آپلود کرد، یکی بهش اضافه کنید و اگه به 50 رسید، دیگه فرم آپلود رو نشونش ندین. برای تصاویر آپلودی هم یک جدول با یک فیلد برای شناسه کاربر و یک فیلد برای مسیر عکس آپلودی کافیه. اینهمه درسر نمیخواد.

soroush.r70
دوشنبه 22 مهر 1392, 08:07 صبح
این تصاویر مربوط به اخبار می شه یعنی مدیر بتونه برای هر خبر که ثبت می کنه تا 50 تصویر ثبت کنه بعد اون خبر ویرایش می شه و بعضی از عکس های مربوط به خبر بشه حذف کرد شاید یه خبر 40 عکس شاید یکی 24 داشته باشه چطوری مدیر می تونه همراه با خبر که ثبت می کنه حداکثر تا 50 عکس ثبت کنه و تکلیفه این حداکثر 50 تصویر کنه می تونه ثبت کنه چی می شه به چه صورت باید پیاده سازی بشه که همراه خبر ثبت بشه دوستان اگه می تونید با یه مثال توضیح بدید ممنون می شم مرسی

MMSHFE
دوشنبه 22 مهر 1392, 10:02 صبح
اگه اینطوریه، یک فیلد برای تصاویر بگذارین و یک آرایه 50 عنصری برای تصاویر هم درنظر بگیرین. میتونید 50 تا عنصر file توی فرم بگذارین یا اینکه از AJAX Upload استفاده کنید. برای ذخیره کردن آدرسها هم میتونید با Serialize کردن یا بصورت JSON توی فیلد مربوطه ذخیره کنید و موقع خوندن هم Unserialize کنید (یا JSON رو دیکد کنید).

soroush.r70
دوشنبه 22 مهر 1392, 18:59 عصر
با تشکر جناب شهرکی امکانش هست یه نمونه بگید چون تا به حال از این تابع استفاده نکردم ممنون

MMSHFE
دوشنبه 22 مهر 1392, 19:27 عصر
توی سایت PHP.net دنبال json_encode و json_decode جستجو کنید. مثال زیاد داره. همچنین توابع serialize و unserialize

engmmrj
دوشنبه 22 مهر 1392, 22:16 عصر
چرا داده هارو Json یا serialize کنیم ؟ دلیلی خاصی داره ؟

mnvoh90
دوشنبه 22 مهر 1392, 22:35 عصر
چرا داده هارو Json یا serialize کنیم ؟ دلیلی خاصی داره ؟
دقیق یادم نیست ولی فکر کنم این ناقض قوانین نرمال سازی باشه

mohsenkw
دوشنبه 22 مهر 1392, 22:44 عصر
در مورد فرم آپلود میتونید فقط یک فیلد

<input name="img_name[]" type="file"/>
بزارید و یک دکمه برای اضافه کردن عکس که اگر کلیک شد با جاوااسکریپت همون فیلد بالایی یک بار دیگه به فرم اضافه کنه.
در سمت سرور هم میتونید با حلقه تک تک عکس هارو آپلود کنید.
برای جداول هم میشه یک جدول برای خود خبر باشه یک جدول دیگه هم فقط برای عکس ها که دو فیلد آی دی خبر و نام فایل داره(بعد سابمیت فرم اول خبر اینسرت کنین تا آی دیش در بیاد بعد جدول فایل هارو با استفاده ازین آی دی ...)

soroush.r70
دوشنبه 22 مهر 1392, 23:08 عصر
راهی وجود نداره که من همراه خبر بیام عکسامو ارسال کنم و دیگه نیازی به گرفتن یه id جداگانه نداشته باشه مثلا اون روشی که آقای شهرکی گفتن کسی می دونه به چه صورت باید بشه با json یا serialize روش بهتری وجود داره...؟

MMSHFE
سه شنبه 23 مهر 1392, 00:06 صبح
چرا داده هارو Json یا serialize کنیم ؟ دلیلی خاصی داره ؟
چطور میخواین آرایه رو توی یک فیلد ذخیره کنید؟ تنها راهش اینه که آرایه به string تبدیل بشه که serialize و json_encode این راه رو برای شما فراهم میکنن و موقع خوندن از دیتابیس دوباره با انجام عمل عکس (unserialize و json_decode) متن string موجود در دیتابیس رو به آرایه بر میگردونید.

دقیق یادم نیست ولی فکر کنم این ناقض قوانین نرمال سازی باشه
این مسئله ارتباطی به نرمال سازی نداره.

mnvoh90
سه شنبه 23 مهر 1392, 10:29 صبح
چطور میخواین آرایه رو توی یک فیلد ذخیره کنید؟ تنها راهش اینه که آرایه به string تبدیل بشه که serialize و json_encode این راه رو برای شما فراهم میکنن و موقع خوندن از دیتابیس دوباره با انجام عمل عکس (unserialize و json_decode) متن string موجود در دیتابیس رو به آرایه بر میگردونید.

این مسئله ارتباطی به نرمال سازی نداره.

ولی فکر کنم ربط داشته باشه. اینم ربطش (http://www.ntu.edu.sg/home/ehchua/programming/sql/Relational_Database_Design.html)

First Normal Form (1NF): A table is 1NF if every cell contains a single value, not a list of values. This properties is known as atomic. 1NF also prohibits repeating group of columns such as item1, item2,.., itemN. Instead, you should create another table using one-to-many relationship.

MMSHFE
سه شنبه 23 مهر 1392, 10:34 صبح
دوست گرامی، اون که مربوط به نرمالسازی میشه، جای دیگه است: اگه مقادیری که توی یک فیلد ذخیره شده، چندگانه باشه، صرفاً به شرطی نرمال سازی رو بهم میزنه که این مقادیر با جداول/فیلدهای دیگه در ارتباط باشن. در اینجا تصاویر، فقط توی سیستم فایل ذخیره هستن و توی دیتابیس کاری باهاشون نداریم (جدول یا فیلد جداگانه ای برای مدیریت تصاویر در دیتایبس نداریم که اینجا ID اونها رو بخوایم آرایه کنیم). صرفاً یک آرایه از مقادیر هست که بصورت متن ذخیره شده.

mnvoh90
سه شنبه 23 مهر 1392, 10:45 صبح
دوست گرامی، اون که مربوط به نرمالسازی میشه، جای دیگه است: اگه مقادیری که توی یک فیلد ذخیره شده، چندگانه باشه، صرفاً به شرطی نرمال سازی رو بهم میزنه که این مقادیر با جداول/فیلدهای دیگه در ارتباط باشن. در اینجا تصاویر، فقط توی سیستم فایل ذخیره هستن و توی دیتابیس کاری باهاشون نداریم (جدول یا فیلد جداگانه ای برای مدیریت تصاویر در دیتایبس نداریم که اینجا ID اونها رو بخوایم آرایه کنیم). صرفاً یک آرایه از مقادیر هست که بصورت متن ذخیره شده.
خوب در این صورت اون منبع که دادم خدمتتون اشتباهه. به این دلیل:

A table is 1NF if every cell contains a single value, not a list of values.

MMSHFE
سه شنبه 23 مهر 1392, 12:48 عصر
نه دقت کنید که اون مقاله درمورد بحثهای Relation داره صحبت میکنه. اینجا Relation در کار نیست و طبیعتاً مصداق اون مقاله نخواهد بود.

مهرداد سیف زاده
سه شنبه 23 مهر 1392, 14:35 عصر
دقیق یادم نیست ولی فکر کنم این ناقض قوانین نرمال سازی باشه

json برای تبادل داده‌ها بین زبانها ساخته شده. مثلا شما داده‌ای داری که میخوای از قسمتی از برنامت که به زبان ASP.NET هست به PHP یا python منتقل کنی بهترین کار ایتفاده از ساختار مناسب و استاندارد هست که داده‌ها در حال انتقال بین دو زبان بهم نریزن و همچنین تابع encode و decode در هر دو زبان مبدا و مقصد باید به یه شکا کار کنه و با داده‌ها رفتاری مشابه داشته باشه.(هر چند xml هم همین کار رو ولی با دردسرهای بیشتر انجام میده)
برای آشنایی بیشتر با json لینک زیر رو مطالعه کنید
http://www.json.org/json-fa.html

در مورد srialize شما میتونید یک آرایه رو براحتی به متن عادی در بیارید و حتی وضعیت فعلی یک شی رو هم میتونید در یک فیلد دیتابیس ذخیره کنی.

معمولا در تبدیل یک آرایه به متن ساده از هر دو میشه استفاده کرد.

mnvoh90
سه شنبه 23 مهر 1392, 14:40 عصر
json برای تبادل داده‌ها بین زبانها ساخته شده. مثلا شما داده‌ای داری که میخوای از قسمتی از برنامت که به زبان ASP.NET هست به PHP یا python منتقل کنی بهترین کار ایتفاده از ساختار مناسب و استاندارد هست که داده‌ها در حال انتقال بین دو زبان بهم نریزن و همچنین تابع encode و decode در هر دو زبان مبدا و مقصد باید به یه شکا کار کنه و با داده‌ها رفتاری مشابه داشته باشه.(هر چند xml هم همین کار رو ولی با دردسرهای بیشتر انجام میده)
برای آشنایی بیشتر با json لینک زیر رو مطالعه کنید
http://www.json.org/json-fa.html

در مورد srialize شما میتونید یک آرایه رو براحتی به متن عادی در بیارید و حتی وضعیت فعلی یک شی رو هم میتونید در یک فیلد دیتابیس ذخیره کنی.

معمولا در تبدیل یک آرایه به متن ساده از هر دو میشه استفاده کرد.

ممنون دوست عزیز ولی من هم با JSON‌ کار کردم و آرایه serialize کردم. ولی بحث سر این بود اون فیلد چند مقداری میشه. حالا چه با json چه خیلی ساده و حتی comma separated. ولی جناب MMSHFE زحمت کشیدن و توضییح دادن چون اون فیلد(ها) رابطه نداره موردی نیست.

soroush.r70
سه شنبه 23 مهر 1392, 15:09 عصر
اللوووو می گم پاک سوال ما رو یادتون رفت دوستان کسی می تونه بگه باید به چه صورت دقیقا پیاده سازی بشه یه مثال لطف کنید ممنون