PDA

View Full Version : سوال: چه کدی اضاف کنم تا 3تا عکس همزمان اپلود بشه؟



saeed-71
یک شنبه 24 شهریور 1392, 12:56 عصر
سلام.
چه کدی به این کد اضاف کننم تا چنتا عکس همزمان اپلود بشن؟


if(isset($_POST['submit']))
{
$exp=strrchr($_FILES["img"]["name"], ".");
if ($exp==".jpg" or $exp==".JPG" or $exp==".png" or $exp==".png" or $exp==".gif" or $exp==".gif")
{
$random_digit=rand(00000000,99999999);
$new_file_name=$random_digit.$file_name;
$folder = "upload/".$new_file_name;
$target = $folder . $_FILES["img"]["name"];
move_uploaded_file($_FILES["img"]["tmp_name"], $target);
}

ابوذر محمودی
یک شنبه 24 شهریور 1392, 14:04 عصر
اگه کلا 3 تا فایل همزمان میخوای آپلود شه ، تو کد HTML سه تا فیلد file بذار با اسامی مختلف،اونوقت موقع آپلود به تک تکشون دسترسی مستقیم داری و میتونی کد آپلودشو بذاری .(این راه معمولی)

اینم میشه که سه تا فیلد input بذاری منتهی تو قسمت نام باید آرایه ای تعریف کنی ، یعنی هر سه تافیلد با یک اسم منتهی حتما [ ] در آخر نامشون بذاری . مثلا [ ]pic ، حالا موقعی که میخوای اطلاعاتو با php بگیری با مقادیر به صورت آرایه باید رفتار کنی.(که با کدی که شما نوشتی ، این راه بهتر و بهینه تره چون فقط میخاد آخر ورودی ها اندیس آرایه رو بدی)

saeed-71
یک شنبه 24 شهریور 1392, 14:46 عصر
یعنی اینجوری


$exp=strrchr($_FILES["img[]"]["name"], ".");
if ($exp==".jpg" or $exp==".JPG" or $exp==".png" or $exp==".png" or $exp==".gif" or $exp==".gif")
{
$random_digit=rand(00000000,99999999);
$new_file_name=$random_digit.$file_name;
$folder = "upload/".$new_file_name;
$target = $folder . $_FILES["img[]"]["name"];
move_uploaded_file($_FILES["img[]"]["tmp_name"], $target);
}

خوب تو ولیو چی بذارم؟برا همشون بذارم $target
گذاشتم ارور داد چیزی ذخیره نشد!

ابوذر محمودی
یک شنبه 24 شهریور 1392, 19:00 عصر
نه نه نه اشتباس واسا کد بدم

ابوذر محمودی
یک شنبه 24 شهریور 1392, 19:26 عصر
این تو HTML

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

اینم واسه دسترسی تو php



for($i=0;$i<3;$i++)
{

$exp=strrchr($_FILES["ufile"]["name"][$i], ".");
if ($exp==".jpg" or $exp==".JPG" or $exp==".png" or $exp==".png" or $exp==".gif" or $exp==".gif")
{
$random_digit=rand(00000000,99999999);
$new_file_name=$random_digit.$file_name;
$folder = "upload/".$new_file_name;
$target = $folder . $_FILES["ufile"]["name"][$i];
move_uploaded_file($_FILES["ufile"]["tmp_name"][$i], $target);
}

}
البته اینم خودت استادی میدونی که حلقه به تعداد فایل هایی که کاربر آپ کرده باید بچرخه ، شاید کاربر یکی آپ کرده باشه اونوقت دستور بالا 3 بار تکرار میشه که دفعه دوم و سومش خطا میده ، شرط حلقه رو به تعداد خانه های آرایه تکرار کن .

saeed-71
یک شنبه 24 شهریور 1392, 20:04 عصر
خوب بعد که میخوام وارد دیتابیس کنم من 3تا فیلد واسه ادرس عکسا گذاشتم.
چجوری اینا رو وارد کنم؟قبلا که یه عکس بود $target میذاشتم و فقط یه عکس وارد میکردم.
اما الان که 3تا واسه ولیو هر عکس چی بذارم که وارد دیتا بیس بشه؟

ابوذر محمودی
یک شنبه 24 شهریور 1392, 20:34 عصر
با هر بار اجرای حلقه مقدار $target عوض میشه مشکلی بابت ذخیره ندارین .

saeed-71
یک شنبه 24 شهریور 1392, 20:59 عصر
اما اینجوری نیست و تو هر 3تا فیلد ادرس اخرین عکس ذخیره میشه

ابوذر محمودی
یک شنبه 24 شهریور 1392, 21:58 عصر
برای اینکه شما باید دستورات ذخیره تو دیتابیس رو تو حلقه بذارین ، بعد از دستور move_uploaded_file

saeed-71
یک شنبه 24 شهریور 1392, 22:18 عصر
اقا گذاشتم اما بازم همون اخری فقط ثبت میشه.
کل کد رو واستون میذارم میشه لطف کنید بگید باید چیکار کنم؟



<?php
ob_start();
session_start();
include('../funcs/config.php');
include_once('jdf.php');
mysql_query("set names utf8");
if(isset($_POST['submit']))
{
for($i=0;$i<2;$i++)
{

$exp=strrchr($_FILES["ufile"]["name"][$i], ".");
if ($exp==".jpg" or $exp==".JPG" or $exp==".png" or $exp==".png" or $exp==".gif" or $exp==".gif")
{
$random_digit=rand(00000000,99999999);
$new_file_name=$random_digit.$file_name;
$folder = "upload/".$new_file_name;
$target = $folder . $_FILES["ufile"]["name"][$i];
move_uploaded_file($_FILES["ufile"]["tmp_name"][$i], $target);
}

}
$berand=mysql_real_escape_string($_POST["berand"]);
$model=mysql_real_escape_string($_POST["model"]);
$ostan=mysql_real_escape_string($_POST["state"]);
$tsakht=mysql_real_escape_string($_POST["tsakht"]);
$gheymat=mysql_real_escape_string($_POST["gheymat"]);
$karkard=mysql_real_escape_string($_POST["karkard"]);
$bime=mysql_real_escape_string($_POST["bime"]);
$rang=mysql_real_escape_string($_POST["rang"]);
$silandr=mysql_real_escape_string($_POST["silandr"]);
$sukht=mysql_real_escape_string($_POST["sukht"]);
$otagh=mysql_real_escape_string($_POST["otagh"]);
$rangin=mysql_real_escape_string($_POST["rangin"]);
$girebox=mysql_real_escape_string($_POST["girebox"]);
$tozih=mysql_real_escape_string($_POST["tozih"]);
$name=mysql_real_escape_string($_POST["name"]);
$tsabet=mysql_real_escape_string($_POST["tsabet"]);
$tarikhsabt=mysql_real_escape_string($_POST["tarikhsabt"]);
$mobile=mysql_real_escape_string($_SESSION['mobile']);
$ip=$_SERVER['REMOTE_ADDR'];
$result=mysql_query("INSERT INTO tblcarinfo (berand,model,ostan,tsakht,gheymat,karkard,bime, rang,silandr,sukht,otagh,rangin, girebox,img1,img2,tozih,name,mobile,tsabet,flag,ta rikhsabt,ip,vizhe)
VALUES
('$berand','$model','$ostan','$tsakht','$gheymat', '$karkard','$bime','$rang','$silandr','$sukht','$o tagh','$rangin','$girebox','$target','$target','$t ozih','$name','$mobile','$tsabet','1',now(),'$ip', '1')");

if ($result)
$_SESSION['msg']='<font color="#00CC00" style="background:#c6ff00;padding-right:170px;padding-left:166px;margin:3px" >آگهی شما ثبت گردید.</font>';
else
$_SESSION['msg']='<font color="#ff0000" style="background:#ff4e4e;padding-right:170px;padding-left:166px;margin:3px" >آگهی شما ثبت نگردید.</font>';
}
header('location:allad.php');
?>

ابوذر محمودی
یک شنبه 24 شهریور 1392, 22:47 عصر
} خط 32 رو بذار خط 51
شما تو خط 22 حلقه رو بستین ها ، اصلا توجه نمیکنین

saeed-71
یک شنبه 24 شهریور 1392, 23:00 عصر
} خط 32 رو بذار خط 51
شما تو خط 22 حلقه رو بستین ها ، اصلا توجه نمیکنین
من قبلا این کار رو کردم.اما جواب نداد.به خاطر همین اصل کد رو گذاشتم که ببینید.بازم عکس اخر ذخیره میشه:عصبانی++:

ابوذر محمودی
دوشنبه 25 شهریور 1392, 07:48 صبح
آها ، خب کوئری تون طوریه که باید بیرون از حلقه بذارینش،شما بیا وقتی حلقه داره تکرار میشه اسم عکسارو تو یه متغیر آرایه ای بریز ، اگه $target رو تو بانک ذخیره میکنین ، اینم آرایه ای کنین ، یعنی تو خط 18 و 19 یه [i$] بعد target بذارین ، بعد موقعی هم که تو بانک میخان بریزین ، تو خط 44 اینطوری بذارین

'$target[0]','$target[1]'

پس با توجه به کدتون دستورات درج و اینارو همون بیرون حلقه بذارین.

saeed-71
دوشنبه 25 شهریور 1392, 08:29 صبح
گذاشتم ولی به جای ادرس عکس بازم تو فیلد اولی کارکتر u و تو فیلد دومی کارکتر p قرار داد. :ناراحت::عصبانی++:

saeed-71
دوشنبه 25 شهریور 1392, 17:32 عصر
کسی نمیدونه؟؟؟

افشین66
دوشنبه 25 شهریور 1392, 20:20 عصر
$target باید یک آرایه باشه !!! سک متغغیر دوبار داری تو کویئریت می گذاری !!!! خط 18 , 19 به این تغییر بده !



$target[$i] = $folder . $_FILES["ufile"]["name"][$i];
move_uploaded_file($_FILES["ufile"]["tmp_name"][$i], $target[$i]);



خط 42 تا 45 که کوئریت اونجاست اینجوری کن



$result=mysql_query("INSERT INTO tblcarinfo (berand,model,ostan,tsakht,gheymat,karkard,bime, rang,silandr,sukht,otagh,rangin, girebox,img1,img2,tozih,name,mobile,tsabet,flag,ta rikhsabt,ip,vizhe)
VALUES
('$berand','$model','$ostan','$tsakht','$gheymat', '$karkard','$bime','$rang','$silandr','$sukht','$o tagh','$rangin','$girebox','$target[0]','$target[1]','$t ozih','$name','$mobile','$tsabet','1',now(),'$ip', '1')");