الاخوة الافاضل
اذا كان لدينا قاعدة بيانات معينة نريد حفظ الصورة فيها بالاضافة الى بعض البيانات واستعراضها من خلال فورم بي اتش بي
كيف يمكننا ذلك؟؟
الرجاء الرد بالسرعة الممكنة
الاخوة الافاضل
اذا كان لدينا قاعدة بيانات معينة نريد حفظ الصورة فيها بالاضافة الى بعض البيانات واستعراضها من خلال فورم بي اتش بي
كيف يمكننا ذلك؟؟
الرجاء الرد بالسرعة الممكنة
تم تعديل هذه المشاركة بواسطة Mohammad Hamayel في 18 ديسمبر 2009 في 17:03
نعم بالامكان عمل ذلك ابحث عن الدروس الوجودة في المنتدى
والافضل ان يتم حفظ رابط الصورة في داخل قاعدة البيانات بدل من الصورة نفسها لكي تعمل قاعدة البيانات بكفاءة اكبر
hope is not a plan
----------------
السلام عليكم و رحمة الله و بركاته
حفظ الملفات في قاعدة البيانات في كثير من الأحيان يحسن من كفاءة عمل الموقع ليس العكس.. حيث أن قاعدة البيانات هي ملفات في حقيقة الأمر و لكنها مدارة بواسطة برنامج يسمى مدير قاعدة البيانات او DataBase Management System.. حيث يوفر حفظ الملفات في قاعدة البيانات ما يوفره للبيانات العادية من Security و Compression و Optimization و Indexing و هذا يسهل عملية البحث عن الملف و استرجاعه و بالتالي عرضه دون القيام بالكثير من عمليات الـ IO المهلكة للـ Server و ذلك بفضل الـ Indexing و الذي يمكن الوصول لمكان الملف على القرص بسرعة أكبر بكثير من السرعة التي يوفرها الدخول التقليدي للملفات، و يمكن أيضاً أن توفر قاعدة البيانات خصائص Caching للملفات و بالتالي عدم الرجوع للقرص كلياً.. و الفائدة الأخيرة و المهمة لتخزين الملفات في قاعدة البيانات هي أن عمل Backup لجميع محتويات الموقع الديناميكية يتم بمنتهى السهولة و دون الحاجة لنسخ أكثر من مصدر و ضغطهم.. و أيضاً عند الحاجة للتحكم في من يستطيع مشاهدة الملفات تمنحك هذه الطريقة تحكم أكبر..
حفظ روابط الملفات بدلاً من الملفات في قواعد البيانات ممكن أن يتم تحت ظروف خاصة مثل عدم كفاءة مدير قاعدة البيانات بالشكل الكافي لإدارته العمليات و هذا بعيد نسبياً عن برامج الإدارة الحالية.. كما أنه ممكن تماماً إن لم نرد الحصول على أي من الميزات التي يوفرها لنا تخزين هذه الملفات في قاعدة البيانات..
أحببت التوضيح فقط كي تعم الفائدة،،
تحياتي،،

اولا تحتاج ان تحول الصورة الى STRING
وبعدها تضعها في القاعدة بمتغير من نوع BLOB
LONGBLOB حتى 4 GB
MEDIUMBLOB حتى 1 MB
وعند استرجاعها عليك ان تحولها من سترينج الى صورة
<?php
//upload and save image in database
if (is_uploaded_file($F1)) {
$ImageT =time();
move_uploaded_file($F1, "/tmp/$ImageT");
$instr = fopen("/tmp/$ImageT","rb");
$image = addslashes(fread($instr,filesize("/tmp/$ImageT")));
unlink("/tmp/$ImageT");
// here sql query mysql_query() INSERT INTO `table1` ( `image` ) VALUES ('$image', '}
}
// shpw image in browser
if($id){
$gotten = @mysql_query("Select * From table1 where id='$id'");
if ($row = @mysql_fetch_assoc($gotten)) {
$bytes = $row[image];
}
}
header("Content-Type: image/jpeg");
echo $bytes;
?>تم تعديل هذه المشاركة بواسطة bastr3 في 23 ديسمبر 2009 في 16:49
هاي ما فهمت شي من الكود ،،عاوزة اسأل اذا بدي ارفع صور على موقعي اخزنها في قاعدة بيانات وبعدين اعرضها مباشرة على الصفحة ،،ممكن حد يساعدني فيها؟
اقتباسهاي ما فهمت شي من الكود ،،عاوزة اسأل اذا بدي ارفع صور على موقعي اخزنها في قاعدة بيانات وبعدين اعرضها مباشرة على الصفحة ،،ممكن حد يساعدني فيها؟
الظاهر إني بكتب هندي !! مالكود السابق بعمل إللي إنتي عايزاه
لا ما بتحكي هندي ولا شي بس انا اللي موش فاهمة الطريقة دي ،
ممكن تشوفلي طيب وين المشكلة بالملف المرفق ازا سمحتوا ؟؟ انا عملت كل شي تمام والصورة بتنضاف بس لما اجي اظهرها ما بتظهر :( مش عارفة شو السبب مع انها موجودة بقاعدة البيانات
مابتظهر وإلا بظهر ربش يعني كلام مش مفهوم ؟
إذا بظهر كلام مش مفهوم بكون هاد شيء طبيعي لآنك في عمليه إظهار الصورة بتطبعي الآي دي
$gotten = @mysql_query("Select * From files");
if ($row = @mysql_fetch_assoc($gotten)) {
$bytes = $row[filedata];
$id=$row['id'];
}
echo $id;
echo $bytes;
?>إحذفي
echo $id
ممكن يظهر الربش كمان مرة مشان هيك بنصح تعملي صفحة ثانيه وتحطي فيها كود هتمل لإظهار الصورة كمايلي :
<img src="upload.php?id=1" alt="" />
برضه في مشكلة ،، اكيد في شيء ناقص لانه الصورة بتنحفظ في قاعدة البيانات لكن لما اجي اظهرها على صفحة الويب ما بيطلع شي :(
هي محاولتي بالمرفقات وكمان في صورة الناتج لشغلي ،
في كمان شي انه انتا عامل بالكود اللي حاطه فوق انه الصورة تنحفظ في مجلد اسمه images لكنه كمان ما بيحفظ الصورة بهالمجلد ؟؟؟؟ اتوقع انه في شغلة بالصلاحيات تبع المجلد images لازم ازبطها
جربي الكود كما يلي :
<?php
$F1 = $_FILES['filedata'];
//upload and save image in database
if (is_uploaded_file($F1)) {
$ImageT =time();
move_uploaded_file($F1, "/tmp/$ImageT");
$instr = fopen("/tmp/$ImageT","rb");
$image = addslashes(fread($instr,filesize("/tmp/$ImageT")));
unlink("/tmp/$ImageT");
echo $image;
}
$con = mysql_connect("localhost", "ola", "now") or die ("فشل في الإتصال بقاعدة لبينات ");
$db=mysql_select_db('alkhor',$con);
$result = @mysql_query("INSERT INTO `files` VALUES ('', '$fileName', '$fileSize', '$fileType', '$image')");
if($result)
{
echo "file added";
echo $data2;
}
else
{
echo "error";
}
// shpw image in browser
if($_GET[id]){
$gotten = @mysql_query("Select * From files where id=$_GET[id]");
$row = @mysql_fetch_assoc($gotten);
echo $row[filedata];
exit;
}
$gotten = @mysql_query("Select * From files ");
while($row = @mysql_fetch_array($gotten)) {
echo '<img src="?id=$row[id]" alt="hi" />';
}
?>وتأكدي إنو الحقل filedata في قاعدة البيانات من نوع BLOB
مستحيييييييييييييييييييييييييييل نفس المشكلة طلعتلي ، نوع الحقل BLOB ، لكن ما عم تظهر الصورة ........
اللي اتوقعه والله اعلم انه بيحفظ الصورة ع شكل ARRAY ، او ربش متل ما قلت عشان هيك ما بتظهر على الويب ، والشيء الاغرب انه اصلا ما عم تنحفظ بالمجلد اللي اسمه tmp ،،
شوف الكود المرفق بالملف ، هذا كود بيحفظ الصورة بمجلد tmp لكن المشكلة بتواجهني بكيفية اظهار الصورة على الويب ، وخطرت في بالي فكرة انه احفظ رابط الصورة داخل قاعدة البيانات بدل ما احفظ الصورة نفسها ،لكن كيف طريقة حفظ الرابط مش عارفة ، لكن الرابط لازم يتاخد من المجلد اللي حفظت فيه الصورة ...؟؟؟
اذا كنت تريد تخزين الصور في قاعدة البيانات في صورة BLOB فإن شاء الله يفيدك هذا الرابط هنـــــــــــــــــا
I Say Nothing
شكرا اختي Mano واخي Baster3 ،،، استفدت من الرابط اللي بعتيه ،، انا اللي بدي اعمله كالآتي : اني ارفع الصورة على مجلد ، واخذ اسمها والرابط تبعها واحطهم بجدول بقاعدة البيانات واصير استعلم عنهم ،، عملتها لكنها مو زابطة لغاية الان ،، في مشكلة ما بعرف ايش هية ، واظن الله اعلم انه في صلاحيات المجلد ، انا بقدر ارفع على المجلد ملفات لكني ما بقدر اظهرهم على صفحة الويب ،،، خليني احاول اكتر من مرة وان شاء الله رح تزبط :P
واذا ما زبطت وحسيت اني فقدت الامل رح ارجع أسألكم من جديد :P : D
غلبتكم معي سلام مؤقتا ولي عودة ان شاء الله :D
جربي هذا الكود شغال مية بالمية ، طريقة عمله :
1- بيحمل الصور فقط
2- بيحفظ الصورة باسم جديد ومن ثم بخزنها في مجلد اسمه upload
3- بيحفظ اسم الصورة الجديد ومسارها في قاعدة البيانات
4- بيعرض الصورة على الصفحة واذا ضغطي على الصورة بتظهرلك الصورة لوحدها في صفحة فارغة .
طبعا ما استخدمت بقاعدة البيانات الا حقلين : حقل الرقم التسلسلي وحقل اسم الصورة مع مسارها .
<form name="newad" method="post" enctype="multipart/form-data" action="bas.php">
<table>
<tr><td><input type="file" name="image"></td></tr>
<input type="hidden" name="MAX_FILE_SIZE" value="90000" />
<tr><td><input name="Submit" type="submit" value="Upload image"></td></tr>
</table>
</form>
<?php
$con = mysql_connect("localhost", "ibrahim", "gotohel") or die ("فشل في الإتصال بقاعدة لبينات ");
$db=mysql_select_db('tc',$con);
define ("MAX_SIZE","100");
// this function to get extension of files.................
function getExtension($str) {
$i = strrpos($str,".");
if (!$i) { return ""; }
$l = strlen($str) - $i;
$ext = substr($str,$i+1,$l);
return $ext;
}
$errors=0;
if(isset($_POST['Submit']))
{
$image=$_FILES['image']['name'];
if ($image)
{
$filename = stripslashes($_FILES['image']['name']);
$extension = getExtension($filename);
$extension = strtolower($extension);
if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif"))
{
echo '<h1>Unknown extension!</h1>';
$errors=1;
}
else
{
$size=filesize($_FILES['image']['name']);
if ($size > MAX_SIZE*1024)
{
echo '<h1>You have exceeded the size limit!</h1>';
$errors=1;
}
$image_name=time().'.'.$extension;
$newname="upload/".$image_name;
$copied = copy($_FILES['image']['tmp_name'], $newname);
if (!$copied)
{
echo '<h1>Copy unsuccessfull!</h1>';
$errors=1;
}}}}
if(isset($_POST['Submit']) && !$errors)
{
echo "<h1>File Uploaded Successfully! Try again!</h1>";
// echo "<img src=$newname>";
// ------------------------------------------- To Save Path of Image in DataBase and show it on Browser...
$result = @mysql_query("INSERT INTO `news` VALUES ('', '$newname')");
if($result)
{
echo "file added";
}
else
{
echo "error";
}
$gotten = @mysql_query("Select * From news ");
while($row = @mysql_fetch_array($gotten)) {
$pic=$row[path];
$id=$row['id'];
// echo "<img src=$pic>";
// Here to Display Image on Browser and In Blank Browser if you like.....
echo "
<a href='$pic' target='_blank'>
<img border='0' src=$pic alt=$pic>
</a>
";
}
}
?>اتمنى الكود يفيدك ويفيد الجميع ،،،