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

عرض صورة

بدأه الشييماء في 19 مارس 2011 · 5 رد · 878 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخواني واخوتي

سؤالي : انا عندي داتا بيس بsql وفيها جدول للموظفين ابغى كل موظف احفظ له صورته يعني تكون من ضمن خصائصه لاني بعرضها مع البروفايل لكل موظف

كيف اخزن الصورة ؟ وكيف اكتب الكود php عشان اعرض الصورة

ولكم جزيييييل الشكر

افيدوووني سريعاااا الله يعلمكم ويبارك ف علمكم

#2

السلام عليكم

أولا : اختار الصورة ثم ارفعها على السيرفر (في مجلد خاص) واعطها نفس رقم الموطف (او اي معرف ID تستعمل في جدول الموظفين)

يجب عليك تعلم استعمال FILE_UPLOAD

استعراض بروفايل الموظف

ثانيا: قم بالاستعلام اذا كانت ملف صورته موجودة عن طريق file-exists

ثالثا: اذا كان ملف الصورة موجود قم بعرضه كاتالي

<?php
	echo '<img src="employee/images/'.$emp_id.'.jpg" />';
?>
#3

حياك الله

تقصد أنه يجب علي أن اكتب كود fileupload و كود file exist مع كل موظف عند اظهار صورته

؟؟

هل هذا صحيح

#4

FILE_UPLOAD تستعمل مرة واحدة فقط، مثلا من خلال واجهة اضافة موظف جديد يكون لديك زر لاضافة الصورة.

الجزء الصعب قليلا هو هذا أي رفع الصورة على السيرفر.

أما عرض الصورة في البروفايل فيبقى سهلا نسبيا

لنفرض أن الصورة تم رفها الى المجلد التالي employee/photos والصورة تنتهي بـ jpg

فكود العرض يكون كالتالي:

<?php
	$photos_path = "employee/photos/";

	if (file_exists($photos_path.$emp_id.'.jpg'))
		echo '<img src="'.$photos_path.$emp_id.'.jpg" />';
	else
		echo "Photo not found";
?>
#5

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

هما طريقيتن التخزين بيفوا بنفس الغرض لكن الاولى افضل عمليا فى حالتك وده الى هنطبقوا فى المثالى الى جاى

اولا هنبتدى باضفة بعض الحقول داخل جدول الموظفين وهما اربع فيلداات اسم الصورة وامتداد الصورة ومساحة الصورة ومحتوى البينرى بتاع الصورة عن طريق سكول كوارى الى جايها ديه مع مراعة استبدال xxxxx بى اسم جدول الموظفين

ALTER TABLE `xxxxx` ADD `esm_soora` VARCHAR( 40 ) NOT NULL ,
ADD `nooa_soora` VARCHAR( 15 ) NOT NULL ,
ADD `msahet_soora` INT NOT NULL ,
ADD `binary_soora` BLOB NOT NULL

بعد مقمنا بتهيئة قاعدة البيانات نعمل كوود فورم بسيط بالاتش ام ال تقوم بزرعه داخل الصحفة المراد انشاء فيها خاصية رفع الصورة للمواظفيين لكى يقوم ارسال البيانات لصفحة raf3.php الى هنقوم بانشائها لاحقا

بعد الملاحظات الانبووت الى اسمه MAX_FILE_SIZE قمنا بستخدامه لتفعيل الحد الاقصى لمسااحة الصورة فقمت بعمل قيمه افترضيا وهيا 300 كيلو بايت ملحوظه القيمه المدخله تكون بالبايتس

<form method="post" enctype="multipart/form-data" action="raf3.php">

<input type="hidden" name="MAX_FILE_SIZE" value="307200" />

<fieldset>
    	<legend>Raf3 sooret elmozaf</legend>

        <dl>        
        <label for="soora">adef el soora : </label><input name="soora" type="file" />       
        </dl>

        <dl>
        <input name="ersaal_soora" type="submit" value="Ersaaal" /> 
        </dl>

</fieldset>        

</form>

بعد ما قمنا بانشاء كود الاتش تي ام ال سوف نقوم بنشاء الملف raf3.php لكى نستقبل البيانات الصادرة من حقل الاتش تي ام ال وهو كتالى

اولا سوف نقوم باستدخدام المصفوفة $_FILES['soora'] لاستخراج بعض المعطيات من الفورم والى هيا

وطبعا المصفوفة اسمها $_FILES['soora']

لاننا سمينها كدها فى الفورم لما دخلنا الانبوت ده

<input name="soora" type="file">

$_FILES['soora']['name'] يحتوى على اسم الصورة

$_FILES['soora']['size']

بتحتوى على مساحة الصورة بالبايتس

$_FILES['soora']['type'] يحتوى على نوع الصورة وهيا بتبقى على نمط الميما الخاص بالخادم فمثل صورة jpg بتبقى نوعها image/jpeg

$_FILES['soora']['tmp_name'] اسم الصورة المرفعوة بداخل مجلد tmp الخاص بالنظام عشان نقوم باستعدائها عن طريق هذا المعطى

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

<?php

/*
اقصى مساحة للصورة
*/ 

$aqsaa_ms7aha = 307200;

/*
التاكد بان الفورم تم ارساله وايضا ان مساحة الملف لن تكون خالية ولن تكون اقصى من القيمه المحددة
*/
if(isset($_POST['ersaal_soora']) && $_FILES['soora']['size'] > 0 && $_FILES['soora']['size'] <= $aqsaa_ms7aha) 
{

/*

نقوم بتغزيين المعطيات الخاصه بالصورة

*/

$esm_soora = $_FILES['soora']['name'];
$esm_soora_fee_tmp = $_FILES['soora']['tmp_name'];
$ms7ahet_soora = $_FILES['soora']['size'];
$noo3_soora = $_FILES['soora']['type'];

/*
نقوم بفتح الصورة من التمب
*/


$fat7_soora      = fopen($esm_soora_fee_tmp, 'r');

/*

نقوم بقرائة محتوى الصورة ونقوم بتخزينه فى متغير

*/


$mo7toaa = fread($fat7_soora, filesize($esm_soora_fee_tmp));

/*

نقوم بغلق ملف الصورة

*/
fclose($fat7_soora);

/*

اضافة الايدى الخاص بالموظف بداخل متغيير

*/
$mozaf_id = 5;

/*

نقوم بالاتصال بقاعدة البيانات مع استبدال ايجيبت باسم المستخدم و 25 جان بى  كلمة المرور

*/
$etsaal = mysql_connect("localhost","egypt","25jan");

/*

تاكد من حالة الاتصال والخروج من الصفحة برسالة خطا فى حالة عدم نجاح الاتصال
*/
if (!$etsaal)
  {
  die('elatsaaal fashal fashal  : ' . mysql_error());
  }
/*

اختيار اسم قاعدة البيانات مع استبدالل سيكوو باسم قاعدة البيانات
*/
mysql_select_db("seikoo", $etsaal);

/*

تخزييين المحتوى الصورة مع استبدال اسم moazfeen باسم تيبوول الموظفين بقاعدة البيانات وايضا استبدال id باسم الايدى الخاص بفيلد ايدى الوظفيين 
مع ارسال خطأ فى حالة عدم نجاح فى الاضافة
*/
mysql_query("INSERT INTO moazfeen (esm_soora, msahet_soora, nooa_soora, binary_soora ) ".
"VALUES ('$esm_soora', '$ms7ahet_soora', '$noo3_soora', '$mo7toaa') WHERE id='$mozaf_id'") or die('5ataaa m3arftsh addeef :(');


/*

غلق الاتصال بقاعدة البيانات
*/

mysql_close($etsaal);

/*
ارسال رسالة نجاح مصحوبة باسم ملف الصورة
*/
echo "<h1>tam edafeet soraaa $esm_soora ya m3alem </h1>";
}
?>

بعد الانتهاء من ارسال الصورة وتخزينها فى قاعدة البيانات سوف نقوم بعمل صفحة اسمها tanzeel.php لاستدعاء صورة عن طريق الايدى الخاص بالموظف من تيبوول الموظفيين

<?php

/*

تاكد من تعيين ايدى للموظف 

*/

if(isset($_GET['id']))
{



/*

تخزيين الايدى فى متغيير مع استعمال دالة intval لتحويل القيمه لرقم وايضا لثغرات سكول انجيكشن

*/

$mozaf_id    = intval($_GET['id']);


/*

نقوم بالاتصال بقاعدة البيانات مع استبدال ايجيبت باسم المستخدم و 25 جان بى  كلمة المرور

*/
$etsaal = mysql_connect("localhost","egypt","25jan");

/*

تاكد من حالة الاتصال والخروج من الصفحة برسالة خطا فى حالة عدم نجاح الاتصال
*/
if (!$etsaal)
  {
  die('elatsaaal fashal fashal  : ' . mysql_error());
  }
/*

اختيار اسم قاعدة البيانات مع استبدالل سيكوو باسم قاعدة البيانات
*/
mysql_select_db("seikoo", $etsaal);

/*

استدعاء المحتوى الكوارى داخل متغيير مع استبدال اسم moazfeen باسم تيبوول الموظفين بقاعدة البيانات وايضا استبدال id باسم الايدى الخاص بفيلد ايدى الوظفيين 
مع ارسال رسالة خطاء فى حالة الفشل 
*/






$mo7toaa = mysql_query("SELECT esm_soora, msahet_soora, nooa_soora, binary_soora FROM moazfeen WHERE id = '$mozaf_id' ")
 or die('mnf3tash ageeb ay 7aga');

 /*

 تعيين المحتوى بداخل متغييرات

 */


list($esm_soora, $msahet_soora, $nooa_soora, $binary_soora) =  mysql_fetch_array($mo7toaa);

/*
ارسال للمتصفح حجم الصورة
*/

header("Content-length: $msahet_soora");

/*

ارسال للمتصفح نوع الصورة

*/

header("Content-type: $nooa_soora");
/*
ارسال للمتفح اسم الصورة ويعملها على انها اتاش

*/
header("Content-Disposition: attachment; filename=$esm_soora");

/*
ارسال محتوى البنيرى للصورة
*/
echo $binary_soora;


/*
غلق الاتصال بقاعدة البيانات
*/

mysql_close($etsaal);

/*
نقوم بقطع الاتصال مع المتصفح من جانب الاحتطياط ليتم وجد خطأ ما فى حجم الصورة وعدم توفقها المساحة التى ارسلت من قبلنا للمتصفح فى الهيدر 
*/

exit;
}

?>

وبكده يبقى كله خلص لتجريب صورة للموظف

نقوم بفتح رابط الموقع مصحووب باسم صفحة تنزيل + متغير الايدى الخاص بالموظف فمثال

http://xxxxxxx.com/tanzeel.php?id=1

عاوز تحطها فى تاج ايمادج

<img src="http://xxxxxxx.com/tanzeel.php?id=1" />

اتمنى كده اكون شرحتلك كل حاجه وعلى الله يتمر ويدوبك اروح اتخمد يلا سلام

ملحوظه انا كتبت الشرح وانا نايم فممكن اكون اتلخبط ولا حاجه لانى مكنتش متصور انه هياخد وقت كتيير وهوصل لدرجة التهييس

تم تعديل هذه المشاركة بواسطة seikoo في 21 مارس 2011 في 09:56

#6
seikoo كتب:

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

هما طريقيتن التخزين بيفوا بنفس الغرض لكن الاولى افضل عمليا فى حالتك وده الى هنطبقوا فى المثالى الى جاى

اولا هنبتدى باضفة بعض الحقول داخل جدول الموظفين وهما اربع فيلداات اسم الصورة وامتداد الصورة ومساحة الصورة ومحتوى البينرى بتاع الصورة عن طريق سكول كوارى الى جايها ديه مع مراعة استبدال xxxxx بى اسم جدول الموظفين

ALTER TABLE `xxxxx` ADD `esm_soora` VARCHAR( 40 ) NOT NULL ,
ADD `nooa_soora` VARCHAR( 15 ) NOT NULL ,
ADD `msahet_soora` INT NOT NULL ,
ADD `binary_soora` BLOB NOT NULL

بعد مقمنا بتهيئة قاعدة البيانات نعمل كوود فورم بسيط بالاتش ام ال تقوم بزرعه داخل الصحفة المراد انشاء فيها خاصية رفع الصورة للمواظفيين لكى يقوم ارسال البيانات لصفحة raf3.php الى هنقوم بانشائها لاحقا

بعد الملاحظات الانبووت الى اسمه MAX_FILE_SIZE قمنا بستخدامه لتفعيل الحد الاقصى لمسااحة الصورة فقمت بعمل قيمه افترضيا وهيا 300 كيلو بايت ملحوظه القيمه المدخله تكون بالبايتس

<form method="post" enctype="multipart/form-data" action="raf3.php">

<input type="hidden" name="MAX_FILE_SIZE" value="307200" />

<fieldset>
    	<legend>Raf3 sooret elmozaf</legend>

        <dl>        
        <label for="soora">adef el soora : </label><input name="soora" type="file" />       
        </dl>

        <dl>
        <input name="ersaal_soora" type="submit" value="Ersaaal" /> 
        </dl>

</fieldset>        

</form>

بعد ما قمنا بانشاء كود الاتش تي ام ال سوف نقوم بنشاء الملف raf3.php لكى نستقبل البيانات الصادرة من حقل الاتش تي ام ال وهو كتالى

اولا سوف نقوم باستدخدام المصفوفة $_FILES['soora'] لاستخراج بعض المعطيات من الفورم والى هيا

وطبعا المصفوفة اسمها $_FILES['soora']

لاننا سمينها كدها فى الفورم لما دخلنا الانبوت ده

<input name="soora" type="file">

$_FILES['soora']['name'] يحتوى على اسم الصورة

$_FILES['soora']['size']

بتحتوى على مساحة الصورة بالبايتس

$_FILES['soora']['type'] يحتوى على نوع الصورة وهيا بتبقى على نمط الميما الخاص بالخادم فمثل صورة jpg بتبقى نوعها image/jpeg

$_FILES['soora']['tmp_name'] اسم الصورة المرفعوة بداخل مجلد tmp الخاص بالنظام عشان نقوم باستعدائها عن طريق هذا المعطى

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

<?php

/*
اقصى مساحة للصورة
*/ 

$aqsaa_ms7aha = 307200;

/*
التاكد بان الفورم تم ارساله وايضا ان مساحة الملف لن تكون خالية ولن تكون اقصى من القيمه المحددة
*/
if(isset($_POST['ersaal_soora']) && $_FILES['soora']['size'] > 0 && $_FILES['soora']['size'] <= $aqsaa_ms7aha) 
{

/*

نقوم بتغزيين المعطيات الخاصه بالصورة

*/

$esm_soora = $_FILES['soora']['name'];
$esm_soora_fee_tmp = $_FILES['soora']['tmp_name'];
$ms7ahet_soora = $_FILES['soora']['size'];
$noo3_soora = $_FILES['soora']['type'];

/*
نقوم بفتح الصورة من التمب
*/


$fat7_soora      = fopen($esm_soora_fee_tmp, 'r');

/*

نقوم بقرائة محتوى الصورة ونقوم بتخزينه فى متغير

*/


$mo7toaa = fread($fat7_soora, filesize($esm_soora_fee_tmp));

/*

نقوم بغلق ملف الصورة

*/
fclose($fat7_soora);

/*

اضافة الايدى الخاص بالموظف بداخل متغيير

*/
$mozaf_id = 5;

/*

نقوم بالاتصال بقاعدة البيانات مع استبدال ايجيبت باسم المستخدم و 25 جان بى  كلمة المرور

*/
$etsaal = mysql_connect("localhost","egypt","25jan");

/*

تاكد من حالة الاتصال والخروج من الصفحة برسالة خطا فى حالة عدم نجاح الاتصال
*/
if (!$etsaal)
  {
  die('elatsaaal fashal fashal  : ' . mysql_error());
  }
/*

اختيار اسم قاعدة البيانات مع استبدالل سيكوو باسم قاعدة البيانات
*/
mysql_select_db("seikoo", $etsaal);

/*

تخزييين المحتوى الصورة مع استبدال اسم moazfeen باسم تيبوول الموظفين بقاعدة البيانات وايضا استبدال id باسم الايدى الخاص بفيلد ايدى الوظفيين 
مع ارسال خطأ فى حالة عدم نجاح فى الاضافة
*/
mysql_query("INSERT INTO moazfeen (esm_soora, msahet_soora, nooa_soora, binary_soora ) ".
"VALUES ('$esm_soora', '$ms7ahet_soora', '$noo3_soora', '$mo7toaa') WHERE id='$mozaf_id'") or die('5ataaa m3arftsh addeef :(');


/*

غلق الاتصال بقاعدة البيانات
*/

mysql_close($etsaal);

/*
ارسال رسالة نجاح مصحوبة باسم ملف الصورة
*/
echo "<h1>tam edafeet soraaa $esm_soora ya m3alem </h1>";
}
?>

بعد الانتهاء من ارسال الصورة وتخزينها فى قاعدة البيانات سوف نقوم بعمل صفحة اسمها tanzeel.php لاستدعاء صورة عن طريق الايدى الخاص بالموظف من تيبوول الموظفيين

<?php

/*

تاكد من تعيين ايدى للموظف 

*/

if(isset($_GET['id']))
{



/*

تخزيين الايدى فى متغيير مع استعمال دالة intval لتحويل القيمه لرقم وايضا لثغرات سكول انجيكشن

*/

$mozaf_id    = intval($_GET['id']);


/*

نقوم بالاتصال بقاعدة البيانات مع استبدال ايجيبت باسم المستخدم و 25 جان بى  كلمة المرور

*/
$etsaal = mysql_connect("localhost","egypt","25jan");

/*

تاكد من حالة الاتصال والخروج من الصفحة برسالة خطا فى حالة عدم نجاح الاتصال
*/
if (!$etsaal)
  {
  die('elatsaaal fashal fashal  : ' . mysql_error());
  }
/*

اختيار اسم قاعدة البيانات مع استبدالل سيكوو باسم قاعدة البيانات
*/
mysql_select_db("seikoo", $etsaal);

/*

استدعاء المحتوى الكوارى داخل متغيير مع استبدال اسم moazfeen باسم تيبوول الموظفين بقاعدة البيانات وايضا استبدال id باسم الايدى الخاص بفيلد ايدى الوظفيين 
مع ارسال رسالة خطاء فى حالة الفشل 
*/






$mo7toaa = mysql_query("SELECT esm_soora, msahet_soora, nooa_soora, binary_soora FROM moazfeen WHERE id = '$mozaf_id' ")
 or die('mnf3tash ageeb ay 7aga');

 /*

 تعيين المحتوى بداخل متغييرات

 */


list($esm_soora, $msahet_soora, $nooa_soora, $binary_soora) =  mysql_fetch_array($mo7toaa);

/*
ارسال للمتصفح حجم الصورة
*/

header("Content-length: $msahet_soora");

/*

ارسال للمتصفح نوع الصورة

*/

header("Content-type: $nooa_soora");
/*
ارسال للمتفح اسم الصورة ويعملها على انها اتاش

*/
header("Content-Disposition: attachment; filename=$esm_soora");

/*
ارسال محتوى البنيرى للصورة
*/
echo $binary_soora;


/*
غلق الاتصال بقاعدة البيانات
*/

mysql_close($etsaal);

/*
نقوم بقطع الاتصال مع المتصفح من جانب الاحتطياط ليتم وجد خطأ ما فى حجم الصورة وعدم توفقها المساحة التى ارسلت من قبلنا للمتصفح فى الهيدر 
*/

exit;
}

?>

===========================

اخى الكريم حب فى الله هل ممكن تساعدنى

لو كانت عاوز احفظ ملف فيديو بدل ما احفظ صورة كيف ستكوان طريقة حفظة للفيديو فى قاعدة البيانات و طريقة عرضة اى موقع تقريب مشابة لى اليوتيوب بالغة php والله يحفظكم ردو على منتظركم على نار

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