العودة   مركز بوابة العرب التعليمي > قسم البرمجة والبرمجيات > منتدى لغات الانترنت وتصميم المواقع

إضافة رد
 
أدوات الموضوع
  #1  
قديم 29-06-2004, 11:36 PM
مـــلاك مـــلاك غير متواجد حالياً
مشــرفه ســابقه
 
تاريخ التسجيل: Feb 2002
المشاركات: 832
افتراضي درس .. كيفية تخزين الصور في قواعد البيانات




نستطيع تخزين الصور في قواعد البيانات بطريقتين
الاولى : نعتمد فيها على تخزين الصور ذاتها في قاعدة البيانات .
الثانية : نعتمد فيها على تخزين الصور على السيرفر و تخزين عنوانها في قاعدة البيانات.

لكل طريقة من الطريقتين مزايا و عيوب و لكني افضل الطريقة الثانية لانها تأخذ مساحة اقل
في قاعدة البيانات و تخفف عنها العبأ .
الان سوف ابدأ بتوضيح كلا من الطريقتين بالتفصيل ..

الطريقة الاولى : تخزين الصور ذاتها قي قاعدة البيانات
الدرس مشروح على قاعدة بيانات mysql و الخطوات هي ذاتها مع بقية قواعد البيانات

عند إنشاء
الجدول الذي نريد تخزين الصوره فيه لابد ان تكون الخانة المراد تخزين الصوره فيها
من نوع
Bolb
هذا النوع هو الذي يستخدم مع الملفات الرقمية .

لو اردنا الان ا رفع صوره من جهاز المستخدم و من ثم تخزينها في قاعدة البيانات كيف يتم ذلك
اولا لرفع الصوره نقوم بعمل فورم كالتالي مع ملاحظة وضع
كود:
encrypt=”mulipart/form-data”
لأعلام السيرفر بوجود ملفات .

كود:
<form method="POST" action="" enctype="multipart/form-data">
<input type="file" name="image_name" size="40">
<input type="hidden" name="flag" value=1>
<br>
<input type="submit" name="submit" value="تحميل">
</form>

اما الان و بعد ان يضغط المستخدم على تحميل ، يستقبل السيرفر ملف الصوره و يتم تخزينه في مجلد مؤقت
بالسيرفر ، يمكن الوصول لخصائص هذا الملف من خلال
كود PHP:
$_FILES[“image_name”
image_name
هو اسم الملف الذي استخدمناه في الفورم

ثانيا : نبدأ في عملية تخزين الصوره ، نحتاج الى تخزين نوع الصوره و الصوره
نفتح الاتصال مع قاعدة البيانات

كود PHP:
$connectionmysql_connect("localhost",$user_DB_name,$user_DB_pw);
mysql_select_db($DB_name); 
نحدد نوع الملف المحمل إن كان صوره ام لا وذلك كالتالي
كود PHP:
$img_type=$_FILES["image_name"]["type"];  // تم تخزين نوع الصوره في المتغير
    
$type=array("image/jpeg","image/gif","image/pjpeg","image/bmp","image/x-png");
    if(! 
in_array($img_type,$type))
    die(
"الصوره يجب ان يكون امتدادها اما  gif , jpg , bmp , png <br> حتى تقبل "); 
بعد التأكد من نوع الملف انه صوره
الان نقرأ ملف الصورة المؤقت الموجود في السيرفر و الذي نستيطع الحصول على موقعه من خلال
كود PHP:
$_FILES[“image_name”][“tmp_name”
كود PHP:
$r=fopen($_FILES["image_name"]["tmp_name"],"rb") or die("فشلت عملية فتح الملف"); 
الان نجهز محتوى الملف لأدخاله في قاعدة البيانات بإضافة سلاش ، في الصوره تضاف سلاش قبل
Null bit
كود PHP:
$image_name=addslashes(fread($r,filesize($_FILES["image_name"]["tmp_name"]))); 
استخدمنا الداله
fread
و هي داله تستخدم في قراءات الملفات الرقمية ، و يعد استخدامها آمن لانها تتجاهل نهاية السطور
\n
و هذه الدالة تقرأ حتى الطول المحدد في المرسل الثاني و لا بد ان يكون الملف بأكمله
و لهذا استخدمنا
كود PHP:
filesize($_FILES["image_name"]["tmp_name"]) 
ثالثا : كتابة الطلب الى قاعدة البيانات
الطلب لتخزين صوره لا يخلف ابدا عن اي طلب آخر

كود PHP:
$query="insert into image(id,img,type) values('','{$image_name}','$img_type')";
    
$result=mysql_query($query,$connection) or die (mysql_error($connection));
echo 
"تم تخزين الصورة في قاعدة البيانات"

رابعا : كيف نسترجع الصوره من قاعدة البيانات و نعرضها
يجب ان نقوم بعمل ملف خاص لعرض الصوره و ليكن ملف بإسم
display_image.php

لابد ان لا يحتوي الملف سوى كود استرجاع الصوره و عرضها و النقطه الهامه هو تحديد نوع محتوى
الصفحه و هذا يتم كالتالي
نسترجع الصورة و نوعها من قاعدة البيانات
كود PHP:
$connectionmysql_connect("localhost",$user_DB_name,$user_DB_pw);
mysql_select_db($DB_name);
$query="select * from image where id=$img_id";
$result=mysql_query($query,$connection);
$row=mysql_fetch_array($result);
$image_type=$row["type"];
$image$row["img"]; 
ثم نحدد نوع محتوى الصفحه بالسطر التالي

كود PHP:
header("Content-type:".$image_type); 
و الان طباعة الصوره
كود PHP:
print ($image); 
لإظهار الصور في الصفحات نكتب كالتالي
كود PHP:
<img src="display_image.php?img_id=$img_id"
انتهينا بذلك من الطريقة الاولى ..


الطريقة الثانيه : تخزين عناوين الصور في قاعدة البيانات
النقطة التي يجب مراعاتها عند إنشاء الجدول الذي سوف نخزن فيه عناوين الصور ان تكون الخانه من نوع
Varchar
و تحديد طول بقيمة كبيره في المثال
Varchar(255)
و السبب في ذلك حتى يتسع لأي عنوان ممكن ان يخزن فيه ، لو كان العنوان اطول مما تتسع الخانة في الجدول
سوف يخزن العنوان ناقصا ، و بالتالي لن نستفيد منه ..

عملية تحميل الصوره كما في الطريقة الاولى .. لكن بدلا من تخزين الصوره في قاعدة البيانات سوف نخزنها
في مجلد الصور الذي انشأناه في السيرفر

كود PHP:
$img_path="$image_directory/".$_FILES["image_name"]["name"];

copy($_FILES["image_name"]["tmp_name"],$img_path) or die("فشلت عملية نسخ الملف"); 
الان نخزن العنوان في قاعدة البيانات
كود PHP:
$query="insert into image_path(id,img_path) values('','$img_path')";
$result=mysql_query($query,$connection) or die(mysql_error($connection)); 
اما لعرض الصوره فقط نسترجعها من قاعدة البيانات و تعرض مباشرة
و لكن هناك نقطة هامة يجب مراعاتها في استخدام هذه الطريقة ، في حال تم حذف الصوره من المجلد مباشرة
سوف يبقى العنوان مخزن في قاعدة البيانات و هذا قد يتسبب في مشاكل عند عرض الصفحة
و لهذا يجب التأكد من وجود الصورة في المجلد قبل عرضها و قد خلقت صورة يتم عرضها في حال لم تكن الصوره
الاصلية موجوده ..
يتم التأكد من وجود الملف بواسطة الدالة :
file_exists

كود PHP:
if(file_exists($img_path))
    echo 
"<br><img src=\"$img_path\"><br>";
    else
    echo 
"<br><img src=\"$img_not_found\"><br>"
هكذا اكون انتهيت من توضيح الطريقة الثانية ...

لقد أرفقت الامثلة الخاصة بالدرس ..

ملاحظة :
كود PHP:
$_FILES 
تعمل من نسخة php4.1
و يمكن استبدالها
$HTTP_FILES_VARS
والتي تعمل من نسخة php4

أتمنى لكم الفائدة دوما
اختكم / مـــلاك
رد مع اقتباس
  #2  
قديم 30-06-2004, 01:13 AM
سهييييل سهييييل غير متواجد حالياً
 
تاريخ التسجيل: Dec 2002
المشاركات: 117
افتراضي

الاخت ملاك دائماً في قمة التميز

الف شكر على هذه المعلومات التي نحتاجها بالفعل .
رد مع اقتباس
  #3  
قديم 30-06-2004, 12:15 PM
mohayek mohayek غير متواجد حالياً
 
تاريخ التسجيل: Apr 2004
المشاركات: 28
افتراضي

السلام عليكم ورحمة الله وبركاته
شكرا جزيلا اخت ملاك على هذا الدرس القيم والمفيد جدا بالنسبة لي
وشكرا لك دائما على تعاونك معنا


اخوكي


محمد
رد مع اقتباس
  #4  
قديم 02-07-2004, 01:46 PM
راعي النياق راعي النياق غير متواجد حالياً
 
تاريخ التسجيل: Jun 2003
المشاركات: 3,414
افتراضي

بارك الله فيك اخت ملاك
رد مع اقتباس
  #5  
قديم 03-07-2004, 10:36 AM
شبيـــه الريح شبيـــه الريح غير متواجد حالياً
مشــرف ســابق
 
تاريخ التسجيل: Sep 2001
المشاركات: 1,923
افتراضي

رائع جدا اختي

ملاك

الله يعطيك العافية

ولي عودة ان شاء الله
رد مع اقتباس
  #6  
قديم 05-07-2004, 09:59 AM
m_h_s m_h_s غير متواجد حالياً
 
تاريخ التسجيل: May 2001
المشاركات: 283
افتراضي

اسلوب شرح اكثر من رائع

الله يعطيك العافية
رد مع اقتباس
  #7  
قديم 11-07-2004, 01:39 AM
مـــلاك مـــلاك غير متواجد حالياً
مشــرفه ســابقه
 
تاريخ التسجيل: Feb 2002
المشاركات: 832
افتراضي

شكرا للجميع على الاطراء و الدعم المعنوي .. اتمنى لكم الفائده
رد مع اقتباس
  #8  
قديم 11-07-2004, 11:52 PM
الصورة الرمزية sawwa77
sawwa77 sawwa77 غير متواجد حالياً
مشــرف ســابق
 
تاريخ التسجيل: Jun 2003
المشاركات: 2,472
افتراضي

اقتباس:
باقتباس من مشاركة راعي النياق بارك الله فيك اخت ملاك
رد مع اقتباس
  #10  
قديم 19-07-2004, 11:53 AM
ابوالعززز ابوالعززز غير متواجد حالياً
 
تاريخ التسجيل: Nov 2003
المشاركات: 243
افتراضي

بارك الله فيكي على هذه الجهود القيمة
رد مع اقتباس
  #11  
قديم 07-08-2004, 02:07 AM
مـــلاك مـــلاك غير متواجد حالياً
مشــرفه ســابقه
 
تاريخ التسجيل: Feb 2002
المشاركات: 832
افتراضي

اخوتي سواح ، خالد الفيصل ، ابو العززز لكم الشكر الجزيل على مروركم
بالموضوع و دعمه ..

بالتوفيق .. اختكم .. مــــلاك
رد مع اقتباس
  #12  
قديم 07-08-2004, 03:32 PM
4M-World 4M-World غير متواجد حالياً
 
تاريخ التسجيل: Aug 2004
المشاركات: 29
افتراضي

اختي العزيزة ملاك
ان من رائي ان افظل طريقة هي تخزين موقع الصورة لانه اسرع في التعامل واقل ضغط على القاعدة
وبصراحة شرحك ممتز
الله يخليك للمنتدى
رد مع اقتباس
  #13  
قديم 07-08-2004, 04:25 PM
HoGo HoGo غير متواجد حالياً
 
تاريخ التسجيل: Jan 2004
المشاركات: 177
افتراضي

شـكـراً جـزيـلاً ويسلمو الأنامل
رد مع اقتباس
  #14  
قديم 07-08-2004, 07:12 PM
الـمبـرمـج الـمبـرمـج غير متواجد حالياً
 
تاريخ التسجيل: Nov 2002
المشاركات: 305
افتراضي

السلام عليكم

شكرا لكي يا اخت ملاك

وبالتوفيق
رد مع اقتباس
  #15  
قديم 07-08-2004, 10:22 PM
مـــلاك مـــلاك غير متواجد حالياً
مشــرفه ســابقه
 
تاريخ التسجيل: Feb 2002
المشاركات: 832
افتراضي

شكرا لكم جميعا 4M-World و HoGo و اخي المبرمج على الدعم

بالنسبة لما ذكرته اخي 4M-World
فعلا كلامك صحيح و قد وضحت هذا في بداية شرح الموضوع

اتمنى لكم الفائده
اختكم / مـــلاك
رد مع اقتباس
  #16  
قديم 08-08-2004, 11:23 AM
4M-World 4M-World غير متواجد حالياً
 
تاريخ التسجيل: Aug 2004
المشاركات: 29
افتراضي

نعم لقد قرات ذلك ولكن ان التاكيد لا يضر
ومرة اخرى شكرا لك
رد مع اقتباس
  #17  
قديم 28-10-2006, 02:15 AM
made in morocco made in morocco غير متواجد حالياً
 
تاريخ التسجيل: Oct 2006
المشاركات: 2
افتراضي

اقتباس:
المشاركة الأصلية كتبت بواسطة مـــلاك
لقد أرفقت الامثلة الخاصة بالدرس ..
عفوا أختي ملاك أين هي الأمثلة المرفقة,
و شكرا على المعلومات
تحياتي
رد مع اقتباس
  #18  
قديم 03-06-2008, 05:07 AM
themuslim2007 themuslim2007 غير متواجد حالياً
 
تاريخ التسجيل: Jun 2008
المشاركات: 1
افتراضي

thanks for this fantastic topic
رد مع اقتباس
  #19  
قديم 18-10-2009, 08:24 PM
الصورة الرمزية dayslife
dayslife dayslife غير متواجد حالياً
 
تاريخ التسجيل: Aug 2009
المشاركات: 85
افتراضي

الف شكر
يسلموووووووووو
__________________
لا اله الا الله ..... محمد رسول الله
رد مع اقتباس
  #20  
قديم 22-10-2009, 04:28 PM
fabolouss fabolouss غير متواجد حالياً
 
تاريخ التسجيل: Oct 2009
المشاركات: 8
افتراضي

حاولت اسويها بس طلع عندي اغلاط في الطريقة الاولى

حاولت في الطريقة الثانية بس ما عرفت ايش اسمي المجلد الي احفض فيه الصور

ياريت ترفقي الأمثله مع الشرح ماهي موجوده وشكرا على جهودك
رد مع اقتباس
إضافة رد

أدوات الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع


الساعة الآن 02:51 PM.


جميع الحقوق محفوظة لشبكة بوابة العرب
New Page 4
 
 
Copyright © 2000-2017 ArabsGate. All rights reserved
To report any abuse on this website please contact abuse@arabsgate.com