الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

[ تمت الإجابة ]كود تخزين مسار الصور في قاعدة البيانات

بدأه العض في 29 أبريل 2012 · 5 رد · 3,751 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

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

اي عمل uplode للصورة من صفحة html وتخزين مسار الصورة في قاعدة البينات ثم عرض الصورة عن طريق المسار في صفحة html

كل ما اريده هو كود php للتخزين

شكرا

#2

السلام عليكم ورحمة الله وبركاته

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

اي عمل uplode للصورة من صفحة html وتخزين مسار الصورة في قاعدة البينات ثم عرض الصورة عن طريق المسار في صفحة html

كل ما اريده هو كود php للتخزين

شكرا

#3
العض كتب:

السلام عليكم ورحمة الله وبركاته

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

اي عمل uplode للصورة من صفحة html وتخزين مسار الصورة في قاعدة البينات ثم عرض الصورة عن طريق المسار في صفحة html

كل ما اريده هو كود php للتخزين

شكرا

لقد أكملت من تعلم كيفية تخزين الصور الآن وهذا الكود يقوم بتخزين اسم ومسار الصورة فلا اعلم ان كان هو ماتريده ام لا

<?php
IF ($action=="add")
{
if ($_SERVER["REQUEST_METHOD"]=="POST")
{
$file_name = $HTTP_POST_FILES['image']['name'];
$random_digit=rand(0000,9999);
$new_file_name=$random_digit;
if ( $file_name =="")
{
echo "<BR><BR><BR><center><a href='javascript:history.back()'>?أكمل بقية البيانات</a><BR><BR><BR>";
}else
{
$path= "upload/".$new_file_name;
if($image !=none)
{
if(copy($HTTP_POST_FILES['image']['tmp_name'], $path))
{
$catimage = $new_file_name;
$query = @mysql_query ("INSERT INTO announ (catimag ,path) VALUES ('$catimage','$path')") or die ("error query");
if($query)
{
echo "<BR>";
echo "<CENTER><B>تم حفظ الصورة بنجاح";
echo "<META HTTP-EQUIV='Refresh' CONTENT='1;URL=view_manger_ann.php'>";
echo "<BR>";
}else{
echo "<BR>لم يتم حفظ الصورة";
EXIT;
}
}
}
}
}
}else{
?>

العض كتب:

السلام عليكم ورحمة الله وبركاته

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

اي عمل uplode للصورة من صفحة html وتخزين مسار الصورة في قاعدة البينات ثم عرض الصورة عن طريق المسار في صفحة html

كل ما اريده هو كود php للتخزين

شكرا

لقد أكملت من تعلم كيفية تخزين الصور الآن وهذا الكود يقوم بتخزين اسم ومسار الصورة فلا اعلم ان كان هو ماتريده ام لا

<?php
IF ($action=="add")
{
if ($_SERVER["REQUEST_METHOD"]=="POST")
{
$file_name = $HTTP_POST_FILES['image']['name'];
$random_digit=rand(0000,9999);
$new_file_name=$random_digit;
if ( $file_name =="")
{
echo "<BR><BR><BR><center><a href='javascript:history.back()'>?أكمل بقية البيانات</a><BR><BR><BR>";
}else
{
$path= "upload/".$new_file_name;
if($image !=none)
{
if(copy($HTTP_POST_FILES['image']['tmp_name'], $path))
{
$catimage = $new_file_name;
$query = @mysql_query ("INSERT INTO announ (catimag ,path) VALUES ('$catimage','$path')") or die ("error query");
if($query)
{
echo "<BR>";
echo "<CENTER><B>تم حفظ الصورة بنجاح";
echo "<META HTTP-EQUIV='Refresh' CONTENT='1;URL=view_manger_ann.php'>";
echo "<BR>";
}else{
echo "<BR>لم يتم حفظ الصورة";
EXIT;
}
}
}
}
}
}else{
?>
#4

شكرا لك

ولكن ليس هذه الطريقة التي اقصدها هناك طريقة ابسط من هذه

<?php

	$file = $_FILES['file'];
	$name = $file['name'];


	$path = "C:wamp/www/uploads/" . basename($name);
	if (move_uploaded_file($file['tmp_name'], $path)) {

	} else {
    // Move failed. Possible duplicate?
	}

ولكن المشكلة في طريقة عرض الصورة

#5

السلام عليكم

هذا كود عرض الصورة

<?php require_once('Conn/conn.php'); ?>
<?php
mysql_select_db($database_conn, $conn);
$query = "SELECT * FROM announ ";
$result = @mysql_query($query);
do { ?>
<table border='0' cellpadding='0' cellspacing='0' width='39%' dir='rtl' id='table1'>
<tr>
<td>
<div align='center'>
<table width='59' border='0' cellspacing='1' bordercolor='#000066' bordercolorlight='#C0C0C0' bordercolordark='#C0C0C0' dir='rtl' id='table1' height='61' bgcolor="#E8FFE8">
<tr bgcolor="#FFFFFF">
<td bgcolor="#E8FFE8"><div align='left'>
<font face="Simplified Arabic" size="2">
<img border='0' src='<?php echo $row[path]; ?>' align="right" ></font></div></td>
</tr>
</table>
</div></td>
</tr>
</table>
<?php
} while ($row = @mysql_fetch_array($result));
?>
#6

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

نستطيع تخزين الصور في قواعد البيانات بطريقتين

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

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

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

في قاعدة البيانات و تخفف عنها العبأ .

الان سوف ابدأ بتوضيح كلا من الطريقتين بالتفصيل ..

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

الدرس مشروح على قاعدة بيانات 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:

$connection= mysql_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:

$connection= mysql_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>";

هكذا اكون انتهيت من توضيح الطريقة الثانية ...

1

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…