PDA

View Full Version : آپلودر با چند فیلد + ذخیره در دیتابیس



rahahost
پنج شنبه 04 مهر 1392, 08:22 صبح
با سلام خدمت همه ی دوستان و اساتید محترم .

جستوجوهای زیادی در گوگل و همچنین در همین وب سایت کردم و به نتیجه هایی رسیدم اما کافی نبود و در بعضی موارد گنگ بود و تصمیم گرفتم اینجا مطرح کنم سوالم رو .


من یه فرم دارم که یه تعداد مشخصی آپلودر ( 6 ) عکس داره .

میخوام این آپلودرها چندتا کار انجام بده :
1 - اعتبار سنجی کنه که فایل آپلود شده واقعا عکس هست و حجم عکس کمتر از 3 مگابایت باشه .
2 - بعد از آپلود هر 6 عکس مقدارشو درون یک متغییر ریخته بشه و با , از هم جدا شده باشن و نهایتا اینسرت بشه درون دیتابیس .

در صورتی که همه عکسا آپلود نشد ، یه خطا بده و مثلا اگر عکس شماره 3 آپلود نشد و دوتای قبلی آپلود شد ، اون دوتا پاک بشه و درون هاست ذخیره نشه !


کدی که من برای یک عکس نوشتم اینه :




<?php

$uploadpath = '../uploads/';
$max_size = 2000;
$alwidth = 900;
$alheight = 800;
$allowtype = array('bmp', 'gif', 'jpg', 'jpe', 'png');

if(isset($_FILES['fileup']) && strlen($_FILES['fileup']['name']) > 1) {
$uploadpath = $uploadpath . basename( $_FILES['fileup']['name']);
$sepext = explode('.', strtolower($_FILES['fileup']['name']));
$type = end($sepext);
list($width, $height) = getimagesize($_FILES['fileup']['tmp_name']);
$err = '';

if(!in_array($type, $allowtype)) $err .= 'The file: <b>'. $_FILES['fileup']['name']. '</b> فرمت فایل شما غیر مجاز است . تنها فرمت تصاویر قابل قبول است .';
if($_FILES['fileup']['size'] > $max_size*1000) $err .= '<br/>حجم فایل بیش از حد مجاز است : '. $max_size. ' KB.';
if(isset($width) && isset($height) && ($width >= $alwidth || $height >= $alheight)) $err .= '<br/>ابعاد تصویر بیش از حد مجاز است: '. $alwidth. ' x '. $alheight;


if($err == '') {
if(move_uploaded_file($_FILES['fileup']['tmp_name'], $uploadpath)) {

include_once("../includes/config.php");
$cmelli = $_POST["cmelli"];
$fname = $_POST["fname"];
$lname = $_POST["lname"];
$pname = $_POST["pname"];
$nshenasname = $_POST["nshenasname"];
$bdateroz = $_POST["roz"];
$bdatemah = $_POST["mah"];
$bdatesal = $_POST["sal"];
$bdate = "$bdatesal"."$bdatemah"."$bdateroz";
$taahol = $_POST["taahol"];
$children = $_POST["children"];
$nvazife = $_POST["nvazife"];
$state = $_POST["state"];
$city = $_POST["city"];
$mtahsil = $_POST["mtahsil"];
$address = $_POST["address"];
$postalcode = $_POST["postalcode"];
$tellephone = $_POST["tellphone"];
$mobile = $_POST["mobile"];
$shoghl = $_POST["shoghl"];
$semat = $_POST["semat"];
$tellkar = $_POST["tellkar"];
$addresskar = $_POST["addresskar"];
$pic = $_FILES['fileup']['name'];
$email = $_POST["email"];
$email = $_POST["email"];
$password = MD5($_POST["userPass"]);
$loginip = $_SERVER['REMOTE_ADDR'];
$details = $_POST["details"];


$query ="INSERT INTO tbl_user ( cmelli,fname,lname,pname,nshenasname,bdate,taahol, children,nvazife,state,city,mtahsil,address,postal code,tellphone,mobile,shoghl,semat,tellkar,address kar,pic,email,password,loginip,details )
VALUES ('{$cmelli}','{$fname}','{$lname}' , '{$pname}' ,'{$nshenasname}' ,'{$bdate}' ,'{$taahol}' ,'{$children}' ,'{$nvazife}' ,'{$state}' ,'{$city}' ,'{$mtahsil}' ,'{$address}' ,'{$postalcode}' ,'{$tellephone}' ,'{$mobile}' ,'{$shoghl}' ,'{$semat}' ,'{$tellkar}' ,'{$addresskar}' ,'{$pic}' ,'{$email}' ,'{$password}' ,'{$loginip}' ,'{$details}' )";

if(mysql_query($query))
{
echo '<div class="add-user-ok"><i class="icon-ok-sign"></i> کاربر با موفقیت اضافه شد .</div>';
}
else
{
echo '<div class="add-user-error"><i class="icon-remove-sign"></i> در اضافه کردن کاربر خطایی رخ داده است !</div>';
}

}
else echo '<b>خطا در آپلود تصویر.</b>';
}
else echo $err;
}

?>



در موردی که گفتم از آرایه بعنوان اسم استفاده کردم و آپلود با موفقیت انجام مشد اما تمام شرطها اعمال نمیشد .


دوستان ، لطف میکنید کدم رو تکمیل کنید تا مشکلم رفع بشه؟


متشکرم .

rahahost
پنج شنبه 04 مهر 1392, 17:43 عصر
یک مورد دیگه هم که خودم تست زدم اینه :




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


if(count($_FILES["file"]["name"]) > 0) {

for($j=0; $j < count($_FILES["file"]["name"]); $j++) {

$filen = $_FILES["file"]["name"][$j];
$path = "gallery/".$filen;
if(move_uploaded_file($_FILES["file"]["tmp_name"][$j],$path)){


$insertSQL = "INSERT INTO table (img) VALUES ('$path')"
$Result1 = mysql_query($insertSQL,connection) or die(mysql_error());
}
}else{
$failed = "فایل آپلود نشد";}
}
}else if(empty($_FILES)){
$failed = "شما هیچ فایلی برای آپلود انتخاب نکردید";
}



این آپلود رو انجام میده اما شرطها و ... رو نمیتونم اعمال کنم !
لطفا راهنماییم کنید .

rahahost
سه شنبه 23 مهر 1392, 13:21 عصر
بعد از حدود دو هفته ، هنوز کسی نیومدو یه نظر هم نداد :D

جواب سوالم رو پیدا کردم اما متاسفانه یه ایرادی داره :

من حدودا 9 تا عکس دارم ، در زمان آپلود ، همه ی عکس ها آپلود میشه و درون دیتابیس اسمهاشون ثبت میشه اما در موقع آپلود یک اتفاقی میافته :

عکس شماره 1 آپلود میشه و همینطور عکس 2 و 3 و 4 .
بعد از آپلود شدن عکس شماره 4 ، نام عکس شماره 1 با عکس شما 4 جابجا میشه و عکس شماره 1 با نام خودش ولی با محتوای عکس شماره 4 ذخیره میشه درون هاست !

واقعا برام عجیبه !


// مشکل رفع شد .