مشكله عند استدعى الصوره من قاعده البيانات php تضهر ايقونه الصوره ولا تضهر الصور

  • Bing

ياخواني واجهت مشكله عندم استدعي صوره من قاعده البيانات بلغه php تضهر لي ايقونه الصوره ولكن لا تظهر الصوره ارجوكم ما الحل

هذاهو الكود الخاص بي

<!DOCTYPE html>
<html lang="en">
<head>    <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title> الوجبات </title>
    <link rel="stylesheet" href="cssfood.css">
    
</head>
<body>
<center>
<h2>جميع الوجبات المتوفره</h2>
</center>
<?php
include('configg.php');
$result =  mysqli_query($con ,"SELECT * FROM food");

while ($rae = mysqli_fetch_array($result)){
    echo "

    <center>
    <main>
    <div class='borderim'>
    <center>
    <img src='$rae[image]'class='im' width= '100%'  height='140px'>
    
    <div class='imgbody'>
    <h5 class='titl'>$rae[name]</h5>
    <p class='text'>$rae[price]</p>
    <a href='#'> go</a><a href='#'> no</a>
    </div>
    </center>
    </div>
    </main>
    </center>
    </body>
</html>
    ";
}

?>


    
</body>
</html>


Mohammed_Fahmy3 أضف ردا

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

أولاً، تأكد من أنك تخزن اسم أو مسار الصورة فقط في قاعدة البيانات، وليس الصورة نفسها. هذا يعني أنك تحتاج إلى استخدام نوع البيانات VARCHAR أو TEXT لحقل image_name في جدول food.

ثانياً، تأكد من أنك تستخدم المسار الصحيح للصورة في عنصر img. هذا يعني أنك تحتاج إلى إضافة اسم المجلد الذي يحتوي على الصور قبل اسم الصورة. على سبيل المثال، إذا كانت الصور مخزنة في مجلد يسمى uploads، فإن المسار الصحيح سيكون:

<img src="uploads/$rae[image]" class='im' width= '100%' height='140px'>

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

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

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

- الأقتباسات المفردة: تستخدم لتحديد نصوص بسيطة، ولا تدعم الاحتواء على متغيرات أو أبجدية الهروب.

هذا مثال على الاقتباسات المفردة:

$name = 'moo';
echo 'Hello,  $name'; // Hello,  $name

- الأقتباسات المزدوجة: تستخدم لتحديد النصوص التي تحتوي على متغيرات، وابجدية الهروب، وصياغة معادلات.

هذا مثال على الاقتباسات المزدوجة:

$name = 'moo';
echo "Hello,  $name"; // Hello, moo

تلاحظ أنه في الاقتباسات المزدوجة، يمكن استخدام قيم المتغيرات داخل النص مباشرةً، ولا يتطلب إضافة رمز النص في العملية.

يمكن استخدام الاقتباسات أيضًا بشكل مختلط، حيث يمكن استخدام الأقتباسات المزدوجة داخ من الأقتباسات المفردة والعكس، كما يلي:

$name = 'moo';
echo 'Hello, ' . "$name"; // Hello, moo

في هذا المثال، يتم استخدام الأقتباسات المزدوجة داخل الاقتباسات المفردة. يتم تعريف متغير $name داخل الاقتباسات المزدوجة، ويتم دمجه مع نص ثابت داخل الاقتباسات المفردة.

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

و هذه بعض الطرق الأخري لاستدعاء الصورة من قاعدة البيانات في لغة PHP:

1. استخدام mysqli_fetch_assoc:

هذا الأسلوب يستخدم لاسترداد بيانات الصورة كنص عادي، ومن ثم تأمين مسار الصورة باستخدام دالة file_put_contents. يتم استخدام المصفوفة التي تم إرجاعها من الاستعلام الخاص بالصورة لتوليد الملف.

مثال: 

<?php
//توصيل الى الداتابيز
$conn = mysqli_connect("localhost", "username", "password", "dbname");

//استعلام لاسترداد الصورة
$sql = "SELECT img_data FROM images WHERE img_id = 1";
$result = mysqli_query($conn, $sql);

//استخدام mysqli_fetch_assoc لتخزين مصفوفة بيانات الصورة المردودة
$row = mysqli_fetch_assoc($result);

// تأمين مسار الصورة وحفظها باستخدام file_put_contents
file_put_contents("image.jpg", $row['img_data']);

//اغلاق الاتصال
mysqli_close($conn);
?>

2. استخدام دالة readfile:

يتم استخدام دالة readfile في PHP لعرض الملف الخارجي (مثل: الصور، الفيديوهات)، ويمكن استخدامها لاسترداد المسار المستند إلى الصورة من قاعدة البيانات.

مثال: 

<?php
//توصيل الى الداتابيز
$conn = mysqli_connect("localhost", "username", "password", "dbname");

// استعلام لاسترداد الصورة
$sql = "SELECT img_data FROM images WHERE img_id = 1";
$result = mysqli_query($conn, $sql);

// استخدام readfile لإرجاع ملف الصورة
header("Content-Type: image/jpeg");
readfile($result['img_data']);

//اغلاق الاتصال
mysqli_close($conn);
?>

3. استخدام البيانات في نمط base64:

يمكن تخزين الصورة المردودة من قاعدة البيانات بناءً على نمط base64 واستخدامها لإرجاع مسار الصورة.

مثال: 

<?php
//توصيل الى الداتابيز
$conn = mysqli_connect("localhost", "username", "password", "dbname");

// استعلام لاسترداد الصورة
$sql = "SELECT img_data FROM images WHERE img_id = 1";
$result = mysqli_query($conn, $sql);

// استخدام base64_encode لتشفير الصورة وتخزينها كنص
$img_data = base64_encode($result['img_data']);

// إرجاع مسار الصورة
echo "<img src='data:image/jpeg;base64," . $img_data . "' />";

//إغلاق الاتصال
mysqli_close($conn);
?>

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

زاد الله من أمثالك

لقد نجح معي اشكرك اخي شكرا جزيل

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

اشكرركم حق شكر جزيل