PDA

View Full Version : مبتدی: ذخیره آدرس تصویر در دیتابیس



siamak_rp
شنبه 28 مرداد 1391, 04:39 صبح
سلام
من می خوام فایل های تصویریم تو یک پوشه ذخیره شه و آدرسش تو یک فیلد تو دیتابیس ذخیره شه . هر کاری میکنم آدرس تو دیتابیس ذخیره نمیشه در بهترین حالت لغت Array تو فیلد مربوطه ذخیره میشه لطفن راهنمایی کنین.
با تشکر

pejman_view
شنبه 28 مرداد 1391, 05:39 صبح
سلام

مشکل شما این است که می خواهید آرایه را در دیتابیس بجای آدرس بریزید قبل از وارد کردن اطلاعات به دیتابیس از رشته استفاده کنید فرضاً اگر آرایه شما مانند زیر باشد:

$data = array('path'->'c:/directory','name'->'test.jpg',size->'10245');
حالا برای اینکه مسیر فایل را در دیتابیس وارد کنید مانند زیر باید عمل کنید:

$path = $data['path'];
و اگر نمی دانید آرایه شما به چه صورت است می توانید از تابع زیر استفاده کنید:

print_r($data);

MMSHFE
شنبه 28 مرداد 1391, 23:34 عصر
با سلام، لطفاً کدتون رو بگذارین تا بتونیم بگیم مشکل از کجاست.

siamak_rp
یک شنبه 29 مرداد 1391, 04:32 صبح
با تشکر از pejman_view عزیز کاری که گفتی رو انجام دادم ولی بازم مشکل قبلی برطرف نشد.

MMSHFE جان کد ها به شرح زیر است:
تو دیتابیس یه جدول به این صورت داریم:


CREATE TABLE IF NOT EXISTS `up` (
`id` int(10) unsigned NOT NULL,
`aks` varchar(255) collate utf8_bin NOT NULL,
PRIMARY KEY (`id`)
)

جهت درست کردن فرم آپلود کد زیر:

<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>
جهت آپلود و انتقال به دیتابیس:

$allowedExts = array("jpg", "jpeg", "gif", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 200000000)
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
$data = array('C:/Program Files/VertrigoServ/www/upload/',$_FILES["file"]["name"]);
$checked=implode(" ",$data);

move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
require_once('config.php');

import_request_variables('p','p_');
require_once('db.php');
$titibi=new up();
$result=$titibi->insert($p_checked);
}
else
{
echo "Invalid file";
}
با کدهای بالا ستون aks در دیتابیس خالی می ماند که البته در خط 27 با p_file$ در ستون مربوطه Array نوشته می شود.
queryهای مربوطه در db.php هم به این صورت است:

public function GetNewID()
{
$this->Connect();
$id=0;
$result=mysql_query('SELECT * FROM `up` ORDER BY `id` DESC LIMIT 1');
if(mysql_num_rows($result)>0)
{
$id=mysql_result($result,0,0);
}
$id++;
return $id;
}

public function insert($aks)
{
$this->connect();
$id=$this->GetNewID();
$result=mysql_query("insert into `up` values ('$id','$aks') ");
return mysql_affected_rows();
}

MMSHFE
یک شنبه 29 مرداد 1391, 12:06 عصر
با سلام، لطفاً این کد رو بجای خط 27 بگذارین و دوباره امتحان کنید:

$result=$titibi->insert('C:/Program Files/VertrigoServ/www/upload/' . $_FILES['file']['name']);

siamak_rp
دوشنبه 30 مرداد 1391, 02:20 صبح
دستت درد نکنه MMSHFE عزیز