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

السؤال

نشر (معدل)

كيفكم يا اصدقاء فيه عندي هذا الكود لتحميل بيانات من جدول PHP الى اكسل ....... عملية التحميل ناجحه لكن مشكلة البيانات  في الاكسل تظهر حروف غير معرفة وغير عربية كيف يتم معالجة هذه المشكلة بدي تكون البيانات باللغة العربية كما هي في جدول PHP

 
 

 

Screenshot_20240808_121324.jpg

Screenshot_20240808_121431.jpg

تم التعديل في بواسطة Omer Amad

Recommended Posts

  • 0
نشر

يجب التأكد من أن الملف الناتج يحفظ بالترميز الصحيح UTF-8، يمكنك القيام بذلك عن طريق التأكد من استخدام الترميز الصحيح عند كتابة البيانات إلى ملف CSV بهذا الشكل:

<?php
include('conn.php');

if (isset($_POST['disease_type'])) {
    $disease_type = $_POST['disease_type'];

    $sql = "SELECT * FROM UN WHERE disease_type = '$disease_type'";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        $filename = "data_from_UN_$disease_type.csv";
        header('Content-Type: text/csv; charset=utf-8');
        header('Content-Disposition: attachment; filename=' . $filename);
        
        $output = fopen('php://output', 'w');
        fprintf($output, "\xEF\xBB\xBF");

        $header = ['الاسم', 'عنوان', 'نوع'];
        fputcsv($output, $header);

        while ($row = $result->fetch_assoc()) {
            fputcsv($output, $row);
        }

        fclose($output);
        exit();
    } else {
        echo "No data found for this disease type.";
    }
}

$conn->close();
?>

حيث نقوم بإضافة الـ BOM (\xEF\xBB\xBF) في بداية ملف CSV. هذا يساعد في تأكيد أن Excel سيتعرف على الترميز UTF-8 ويعرض النصوص العربية بشكل صحيح.

  • 0
نشر
بتاريخ 26 دقائق مضت قال Chihab Hedidi:

يجب التأكد من أن الملف الناتج يحفظ بالترميز الصحيح UTF-8، يمكنك القيام بذلك عن طريق التأكد من استخدام الترميز الصحيح عند كتابة البيانات إلى ملف CSV بهذا الشكل:

<?php
include('conn.php');

if (isset($_POST['disease_type'])) {
    $disease_type = $_POST['disease_type'];

    $sql = "SELECT * FROM UN WHERE disease_type = '$disease_type'";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        $filename = "data_from_UN_$disease_type.csv";
        header('Content-Type: text/csv; charset=utf-8');
        header('Content-Disposition: attachment; filename=' . $filename);
        
        $output = fopen('php://output', 'w');
        fprintf($output, "\xEF\xBB\xBF");

        $header = ['الاسم', 'عنوان', 'نوع'];
        fputcsv($output, $header);

        while ($row = $result->fetch_assoc()) {
            fputcsv($output, $row);
        }

        fclose($output);
        exit();
    } else {
        echo "No data found for this disease type.";
    }
}

$conn->close();
?>

حيث نقوم بإضافة الـ BOM (\xEF\xBB\xBF) في بداية ملف CSV. هذا يساعد في تأكيد أن Excel سيتعرف على الترميز UTF-8 ويعرض النصوص العربية بشكل صحيح.

لم أفهم.... كيف يتم معالجة هذه المشكلة لطفاً 

  • 0
نشر
بتاريخ 25 دقائق مضت قال Omer Amad:

لم أفهم.... كيف يتم معالجة هذه المشكلة لطفاً 

المشكلة بسبب الترميز و يجب التأكد من أن ملف Excel الناتج يتم ترميزه بشكل صحيح بتنسيق UTF-8، و هذا يتطلب القيام ببعض الخطوات البسيطة في الكود لضمان ترميز النصوص بشكل صحيح عند كتابتها إلى ملف CSV، عند إنشاء ملف CSV يجب إضافة

BOM (Byte Order Mark) في بداية الملف، هذه العلامة تساعد Excel على التعرف على أن النصوص في الملف مرمزة بـ UTF-8 وبالتالي تعرض الحروف العربية بشكل صحيح.

  • 0
نشر
بتاريخ 6 دقائق مضت قال Chihab Hedidi:

المشكلة بسبب الترميز و يجب التأكد من أن ملف Excel الناتج يتم ترميزه بشكل صحيح بتنسيق UTF-8، و هذا يتطلب القيام ببعض الخطوات البسيطة في الكود لضمان ترميز النصوص بشكل صحيح عند كتابتها إلى ملف CSV، عند إنشاء ملف CSV يجب إضافة

BOM (Byte Order Mark) في بداية الملف، هذه العلامة تساعد Excel على التعرف على أن النصوص في الملف مرمزة بـ UTF-8 وبالتالي تعرض الحروف العربية بشكل صحيح.

 هل تقصد اضافة BOM (Byte Order Mark)  داخل ملفات ال php  عذرا لم افهمك

  • 0
نشر
بتاريخ 4 دقائق مضت قال Chihab Hedidi:

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

fprintf($output, "\xEF\xBB\xBF");

 

شكرا اخي سؤال هل هذا الكود او عملية تحميل البيانات ستكون شغاله في الاستضافة ام ستحدث مشاكل

  • 0
نشر (معدل)
بتاريخ 5 ساعة قال Omer Amad:

فيه  عامود يحتوي على صوره كيف اضع ال td في الجدول

 echo "<td>" . $row['file'] . "</td>"

 

بتاريخ 5 ساعة قال Chihab Hedidi:

نعم ستكون شغالة.

وضعت هذا الكود    عملية ظهور الصور في جدول تمت بنجاح لكن لما يتم تحميل البيانات لم تظهر الصور في اكسل تظهر فقط البيانات النصية اما الصور تظهر فقط امتداد بدون صورة   عملت في صفحة جدول وضعت متغير  base_url لغرض جلب الصور من فولدر اسم الفولدر um ولم اعرف اين يضع هذا المتغير في الكود ادناه ارجوا التوضيح

   echo '<td>  <img src="um/'.$row['file'].'" width="50px" height="50px"> </td>';

 

تم التعديل في بواسطة Omer Amad
  • 0
نشر
بتاريخ 5 ساعة قال Omer Amad:

فيه  عامود يحتوي على صوره كيف اضع ال td في الجدول

 echo "<td>" . $row['file'] . "</td>"

  إن كان المقصود جدول في صفحة ويب، فمن خلال عنصر img كالتالي:

echo '<td><img src="' . $row['file'] . '" width="100" height="100"></td>';

أيضًا بالإمكان وضع الصورة داخل عنصر a لكي تصبح قابلة للنقر:

echo '<td><a href="' . $row['file'] . '"><img src="' . $row['file'] . '" width="100" height="100"></a></td>';

وبإمكانك توفير رابط لتحميلها من خلال سمة download:

echo "<td><a href='" . $row['file'] . "' download>تحميل الصورة</a></td>";

 

  • 0
نشر
بتاريخ 18 دقائق مضت قال Mustafa Suleiman:

  إن كان المقصود جدول في صفحة ويب، فمن خلال عنصر img كالتالي:

echo '<td><img src="' . $row['file'] . '" width="100" height="100"></td>';

أيضًا بالإمكان وضع الصورة داخل عنصر a لكي تصبح قابلة للنقر:

echo '<td><a href="' . $row['file'] . '"><img src="' . $row['file'] . '" width="100" height="100"></a></td>';

وبإمكانك توفير رابط لتحميلها من خلال سمة download:

echo "<td><a href='" . $row['file'] . "' download>تحميل الصورة</a></td>";

 

وضعت هذا الكود    عملية ظهور الصور في جدول تمت بنجاح لكن لما يتم تحميل البيانات لم تظهر الصور في اكسل تظهر فقط البيانات النصية اما الصور تظهر فقط امتداد بدون صورة   عملت في صفحة جدول وضعت متغير  base_url لغرض جلب الصور من فولدر اسم الفولدر um ولم اعرف اين يضع هذا المتغير في الكود ادناه ارجوا التوضيح

echo '<td>  <img src="um/'.$row['file'].'" width="50px" height="50px"> </td>';

 

  • 0
نشر
بتاريخ الآن قال Omer Amad:

وضعت هذا الكود    عملية ظهور الصور في جدول تمت بنجاح لكن لما يتم تحميل البيانات لم تظهر الصور في اكسل تظهر فقط البيانات النصية اما الصور تظهر فقط امتداد بدون صورة   عملت في صفحة جدول وضعت متغير  base_url لغرض جلب الصور من فولدر اسم الفولدر um ولم اعرف اين يضع هذا المتغير في الكود ادناه ارجوا التوضيح

echo '<td>  <img src="um/'.$row['file'].'" width="50px" height="50px"> </td>';

 

عليك توضيح كامل الكود الذي تستخدمه حاليًا لتفقد موضع المشكلة.

  • 0
نشر (معدل)
بتاريخ 33 دقائق مضت قال Mustafa Suleiman:

عليك توضيح كامل الكود الذي تستخدمه حاليًا لتفقد موضع المشكلة.

 

 

 

هذا 

<html>
    <head>
    <meta name="viewport" content="width=device-width; initial-scale=0.43; maximum-scale=1.5;">
    <link rel="apple-touch-icon" href="images/template/picture.png"/>
    <link rel="stylesheet" href="style.css">
        <title></title>
       
    </head>
 
    <body >
  

  

    

    <?php 
include "conn.php";
$base_url = "http://localhost/HOS/";


include('conn.php');

if(!isset($_GET['Re'])){

    $Re="UN";
}else{
  $Re =@$_GET['Re'];

} // نوع المرض لهذا الملف

$sql = "SELECT * FROM ip WHERE Re = '$Re'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    echo "<table border='1'>
    <tr>
    <th>id</th><br>
        <th>الاسم </th>
        <th>اسم الام </th>

    </tr>";

    while($row = $result->fetch_assoc()) {
        echo "<tr>";
        echo "<td>" . $row['name1'] . "</td>";
        echo "<td>" . $row['name2'] . "</td>";
        echo '<td>  <img src="img/'.$row['file'].'" width="50px" height="50px"> </td>';

  
        echo "</tr>";
    }
    echo "</table>";
} else {
    echo "No data found for this disease type.";
}

$conn->close();
?>

<!-- زر تحميل البيانات إلى Excel -->
<form method="post" action="exp.php">
    <input type="hidden" name="Re" value="<?php echo $Re; ?>">
    <button type="submit">تصدير البيانات إلى Excel</button>
</form>
    </body>
</html>

 

تم التعديل في بواسطة Omer Amad
  • 0
نشر (معدل)

كيف يعني لا استطيع هل من المعقول هذا

<?php
include('con.php');
if (isset($_POST['Re'])) {
    $Re = $_POST['Re'];

    $sql = "SELECT * FROM iP WHERE Re = '$Re'";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        $filename = "data_from_iP_$Re.csv";
        header('Content-Type:text/csv; charset=utf-8');
        header('Content-Disposition: attachment; filename=' . $filename);
        $output = fopen('php://output', 'w');
           fprintf($output, "\xEF\xBB\xBF");
        $header = ['الاسم','الاسم الاول'];
        fputcsv($output, $header);
        while ($row = $result->fetch_assoc()) {
            fputcsv($output, $row);
        }

        fclose($output);
        exit();
    } else {
        echo "No data found for this disease type.";
    }
}

$conn->close();
?>

 

تم التعديل في بواسطة Omer Amad
  • 0
نشر
بتاريخ 5 دقائق مضت قال Omer Amad:

كيف يعني لا استطيع هل من المعقول هذا

<?php
include('con.php');
if (isset($_POST['Re'])) {
    $Re = $_POST['Re'];

    $sql = "SELECT * FROM iP WHERE Re = '$Re'";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        $filename = "data_from_iP_$Re.csv";
        header('Content-Type:text/csv; charset=utf-8');
        header('Content-Disposition: attachment; filename=' . $filename);
        $output = fopen('php://output', 'w');
           fprintf($output, "\xEF\xBB\xBF");
        $header = ['الاسم','الاسم الرباعي'];
        fputcsv($output, $header);
        while ($row = $result->fetch_assoc()) {
            fputcsv($output, $row);
        }

        fclose($output);
        exit();
    } else {
        echo "No data found for this disease type.";
    }
}

$conn->close();
?>

 

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

ولفعل ذلك في ملف Excel، فعليك استخدام ملف Excel_BINARY ( بصيغة xls أو xlsx ) بدلاً من ملف CSV، وستحتاج إلى استخدام مكتبة مثل PHPExcel أو Spreadsheet_Excel_Writer لكتابة الصور إلى ملف Excel أو المكتبات السابق ذكرها.

  • 0
نشر
بتاريخ 4 دقائق مضت قال Mustafa Suleiman:

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

ولفعل ذلك في ملف Excel، فعليك استخدام ملف Excel_BINARY ( بصيغة xls أو xlsx ) بدلاً من ملف CSV، وستحتاج إلى استخدام مكتبة مثل PHPExcel أو Spreadsheet_Excel_Writer لكتابة الصور إلى ملف Excel أو المكتبات السابق ذكرها.

طيب... استاذ فيه طريقة جعل الصوره عندما يتم إرسالها عبر الفورم ترسل بأسم الشخص الذي ارسلها؟ اي بمعنى مثال... اسم الصوره img. Jpg..... لما يتم إرسالها ستظهر في ملف فولدر img... باسم عمر عماد؟ 

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...