اذهب إلى المحتوى
  • 0

كيفية رفع الصور لقاعدة البيانات وعرضها بعد اعادة تسميتها

Hamada Ahmed

السؤال

السلام عليكم عذرا انا مبتدىء

قمت بتحميل كود يقوم برفع الصور لقاعدة البيانات ويعيد تسميتها ويعرضها على الويب ( يقوم بتخزين الصور فى مجلد ايضا upload )

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

أيضا لا اعرف ماذا اضع فى الملف     bas.php   الموجود فى الفورم وهل هو زائد ام له اهمية

الكود الذى قمت بتحميلة هو

<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", "root", "123456") 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...

//  table name
$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>  
";
}
}
?>

ارجو الافادة

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0
اقتباس

هذا مجلد المشروع مضغوط

شكرا أخي لرفعك الكود كاملاً, لقد وجدت خطأ في دالة التحقق من size الملف وقد تم استبدالها 

$size = $_FILES["image"]["size"];

و قد رفع الملف بنجاح وبدون أي مشكلة, الكود كاملاً.



<form name="newad" method="post" enctype="multipart/form-data" action="index.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 = mysqli_connect("localhost", "root", "") or die ("فشل في الإتصال بقاعدة لبينات ");
$db=mysqli_select_db($con, 'tc');


define ("MAX_SIZE","1000"); 
// 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']);
$size = $_FILES["image"]["size"];
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);
$copied = move_uploaded_file($_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 = @mysqli_query($con, "INSERT INTO `news` VALUES ('', '$newname')");
if($result)
{
	echo "file added";
}
else
{
	echo "error";
}
$gotten = @mysqli_query($con, "Select * From news"); 
        while($row = @mysqli_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>  
";
}
}
?>

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 1

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

أولا وجدت عدة أخطاء منها أنك تستخدم mysql وهذا الأن أصبح أصدار قديم, أصدارات PHP الجديدة لا تدعم mysql, قمت بإصلاح جميع الأكواد mysql وتحويلها إلى mysqli لتشتغل على أصدارات PHP الجديدة. 

ثانيا وجدت مشكلة في دالة رفع الملف, هنا تقوم باستخدام دالة copy هنا عند استخدام دالة copy تقوم بنسخ الملف ووضعه على المسار الجديد ولكن يجب قبل ذلك هو وجود الملف على المسار الذي تريد نقل الملف منه, أي قبل ذلك يجب رفع الملف و من ثم القيام بنسخه, يعني تقوم باستخدام دالة 

move_uploaded_file($_FILES["image"]["tmp_name"], $newname);

لتقوم برفع الملف و بعدها القيام بنسخ الملف إلى مساره الجديد. 

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

<img border='0' src=$pic alt=$pic>

تصبح 

<img border='0' src=uploads/$pic alt=$pic>

حتى لو أردت مستقبلاً تغيير اسم مجلد الرفع يكون الأمر سهلا و لا تقع بمشاكل بسبب حفظ اسم المجلد مع اسم الملف.

الكود كاملا 

<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 = mysqli_connect("localhost", "root", "") or die ("فشل في الإتصال بقاعدة لبينات ");
$db=mysqli_select_db($con, 'tc');


define ("MAX_SIZE","10"); 
// 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);
$copied = move_uploaded_file($_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...

//  table name
$result = @mysqli_query($con, "INSERT INTO `news` VALUES ('', '$newname')");
if($result)
{
	echo "file added";
}
else
{
	echo "error";
}
$gotten = @mysqli_query($con, "Select * From news"); 
        while($row = @mysqli_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>  
";
}
}
?>

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

شكرا لك اخي بلال وبارك الله فيك

لكن اعذرني لاني ساطرح اسئلة واتمنى ان تجيبنى

1 - هل قاعدة البيانات اسمها ( tc )

2 - هل الكود الذي سيتم زرعة فى القاعده سيكون هكذا

CREATE TABLE IF NOT EXISTS `news` (
  `id` int(11) NOT NULL,
  `image` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

3 - ما هي الاكواد التى سنكتبها فى الملف bas.php 

كما جاء فى الفورم <form ...... action="bas.php">

واعتذر لكم مرة اخري على الازعاج واتمنى ان اجد حلا للمشكلة

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 16 ساعات قال Hamada Ahmed:

شكرا لك اخي بلال وبارك الله فيك

لكن اعذرني لاني ساطرح اسئلة واتمنى ان تجيبنى

1 - هل قاعدة البيانات اسمها ( tc )

2 - هل الكود الذي سيتم زرعة فى القاعده سيكون هكذا


CREATE TABLE IF NOT EXISTS `news` (
  `id` int(11) NOT NULL,
  `image` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

3 - ما هي الاكواد التى سنكتبها فى الملف bas.php 

كما جاء فى الفورم <form ...... action="bas.php">

واعتذر لكم مرة اخري على الازعاج واتمنى ان اجد حلا للمشكلة

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

تم التعديل في بواسطة Hamada Ahmed
رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 49 دقائق مضت قال Hamada Ahmed:

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

اسم قاعدة البيانات هو tc صحيح.

واسم الجدول المخزن فيه الاستعلامات هو news كما ذكرت ولكن مع تغيير حقل image إلى حقل path لانك تخزن اسم الصورة في حقل path.

ممكن تغيير اسم الملف bas.php إلى الملف نفسه الذي حفظت به هذا الكود, لأنه هذا الملف سوف يعيد الرفع من خلاله مرة أخرى, لأنه يحتوي على كود التخزين داخل قاعدة البيانات و أيضا يحتوي على كود الرفع إلى مجلد تخزين الصور.

يعني إذا حفظ الملف باسم index.php يجب تغيير الملف في خاصية action إلى نفس اسم الملف.

CREATE TABLE `news` (
  `id` int(11) NOT NULL,
  `path` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 1 ساعة قال بلال زيادة:

اسم قاعدة البيانات هو tc صحيح.

واسم الجدول المخزن فيه الاستعلامات هو news كما ذكرت ولكن مع تغيير حقل image إلى حقل path لانك تخزن اسم الصورة في حقل path.

ممكن تغيير اسم الملف bas.php إلى الملف نفسه الذي حفظت به هذا الكود, لأنه هذا الملف سوف يعيد الرفع من خلاله مرة أخرى, لأنه يحتوي على كود التخزين داخل قاعدة البيانات و أيضا يحتوي على كود الرفع إلى مجلد تخزين الصور.

يعني إذا حفظ الملف باسم index.php يجب تغيير الملف في خاصية action إلى نفس اسم الملف.


CREATE TABLE `news` (
  `id` int(11) NOT NULL,
  `path` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

 

بارك الله  فيك اخي الحبيب

الصور بالفعل يتم تخزينها باسم جديد فى مجلد upload

لكن المسار الجديد لا يخزن فى قاعدة البيانات  وتظهر رسالة الخطأ

    echo "error";

p_1855s4njl1.png

انا لا اعرف لماذا لا يتم الارسال للقاعدة

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0
بتاريخ 39 دقائق مضت قال Hamada Ahmed:

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

 

أخي لاحظ أن الكود المرفق هو شغال و يتم تخزين البيانات داخل قاعدة البيانات, هل من الممكن تعمل لقطة شاشة لقاعدة البيانات عندك ؟

التقاط.PNG

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...