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

السؤال

نشر

السلام عليكم 

لدي جدول اعرض فيه بيانات سوف اعمل زر طباعة بجوار زر تعديل وحدف 

اريد مكتبة تنفد لي طباعة سطر معين او كل الجدول مثال برنامج كريستال ريبورت في تطبيقات سطح مكتب بحيث اضيف عنوان تقرير وfooter  تقرير وانسق تقرير كيف ماريد استخدم php mysqli

ياريت افادتي اخواني كرام اخوكم جديد علي لغة php

 

لقطة شاشة 2023-12-16 194613.png

Recommended Posts

  • 0
نشر

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

مثال: 
ننشئ صفحة PHP جديدة، نقوم فيها بالاستعلام عن البيانات المرادة، ونقوم بعرضها فيها منسقة: 

// print-page.php
<?php

// الاتصال بقاعدة البيانات
$conn = new mysqli("localhost", "اسم المستخدم", "كلمة المرور", "اسم قاعدة البيانات");

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// استعلام لاسترجاع البيانات
$id = $_GET['id'];
$sql = "SELECT * FROM اسم_الجدول WHERE id=".$id;
$result = $conn->query($sql);

// إضافة البيانات إلى التقرير
$html = '<h1>عنوان التقرير</h1>';
$html .= '<table border="1" cellpadding="5">';
$html .= '<tr><th>عنوان العمود1</th><th>عنوان العمود2</th><th>عنوان العمود3</th></tr>';

while ($row = $result->fetch_assoc()) {
    $html .= '<tr>';
    $html .= '<td>' . $row['اسم_العمود1'] . '</td>';
    $html .= '<td>' . $row['اسم_العمود2'] . '</td>';
    $html .= '<td>' . $row['اسم_العمود3'] . '</td>';
    $html .= '</tr>';
}

$html .= '</table>';
$html .= '<div style="text-align:center;">تاريخ الطباعة: ' . date('Y-m-d H:i:s') . '</div>';

الآن قم باضافة الزر الى الجدول الخاص بك: 

<button id="download" onclick="printPage(10)">
  تحميل
</button>

وضف حدث الطباعة على النحو التالي: 

function printPage(id) {
            // استخدام XMLHttpRequest لجلب محتوى الصفحة الخارجية
            var xhr = new XMLHttpRequest();
         
            xhr.onreadystatechange = function() {
                if (xhr.readyState === 4 && xhr.status === 200) {
                    // إنشاء نافذة جديدة تحتوي على محتوى الصفحة
                    var printWindow = window.open('', '_blank');
                    printWindow.document.write(xhr.responseText);

                    // انتظر حتى يتم تحميل الصفحة بشكل كامل ثم قم بطباعتها
                    printWindow.onload = function() {
                        printWindow.print();
                    };
                }
            };
            xhr.open('GET', '/print-page.php?id=' + id, true);
            xhr.send();
        }
  • 0
نشر
بتاريخ 11 ساعة قال ايمن ميلاد:

اريد مكتبة تنفد لي طباعة سطر معين او كل الجدول مثال برنامج كريستال ريبورت في تطبيقات سطح مكتب بحيث اضيف عنوان تقرير وfooter  تقرير وانسق تقرير كيف ماريد استخدم php mysqli

 

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

import jsPDF from "jspdf";
 const downloadPDF = () => {
    setNumberOfRows(wishList?.length);
    setTimeout(() => {
      const capture = document.querySelector(".table-to-print");
      setLoader(true);
      html2canvas(capture).then((canvas) => {
        const imgData = canvas.toDataURL("img/png");
        const doc = new jsPDF("p", "mm", "a4");
        const componentWidth = doc.internal.pageSize.getWidth();
        const componentHeight = doc.internal.pageSize.getHeight();
        doc.addImage(imgData, "PNG", 0, 0, componentWidth, componentHeight);
        setLoader(false);
        doc.save("table.pdf");
        setNumberOfRows(10);
      });
    }, 100);
  };

و يمكنك استخدام مكتبة xlsx لاستخراج البيانات في excel sheet 
و هذا مثال أخر :
 

import * as XLSX from "xlsx";

const exportExel = (data) => {
    const workSheet = XLSX.utils.json_to_sheet(data);
    const workBook = XLSX.utils.book_new(data);
    XLSX.utils.book_append_sheet(workBook, workSheet, `test`);
    //Buffer
    XLSX.write(workBook, { bookType: "xlsx", type: "buffer" });
    //Binary string
    XLSX.write(workBook, { bookType: "xlsx", type: "binary" });
    //Download
    XLSX.writeFile(workBook, "report.xlsx");
  };
 

 

  • 0
نشر
بتاريخ 15 ساعة قال Adnane Kadri:

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

مثال: 
ننشئ صفحة PHP جديدة، نقوم فيها بالاستعلام عن البيانات المرادة، ونقوم بعرضها فيها منسقة: 

// print-page.php
<?php

// الاتصال بقاعدة البيانات
$conn = new mysqli("localhost", "اسم المستخدم", "كلمة المرور", "اسم قاعدة البيانات");

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// استعلام لاسترجاع البيانات
$id = $_GET['id'];
$sql = "SELECT * FROM اسم_الجدول WHERE id=".$id;
$result = $conn->query($sql);

// إضافة البيانات إلى التقرير
$html = '<h1>عنوان التقرير</h1>';
$html .= '<table border="1" cellpadding="5">';
$html .= '<tr><th>عنوان العمود1</th><th>عنوان العمود2</th><th>عنوان العمود3</th></tr>';

while ($row = $result->fetch_assoc()) {
    $html .= '<tr>';
    $html .= '<td>' . $row['اسم_العمود1'] . '</td>';
    $html .= '<td>' . $row['اسم_العمود2'] . '</td>';
    $html .= '<td>' . $row['اسم_العمود3'] . '</td>';
    $html .= '</tr>';
}

$html .= '</table>';
$html .= '<div style="text-align:center;">تاريخ الطباعة: ' . date('Y-m-d H:i:s') . '</div>';

الآن قم باضافة الزر الى الجدول الخاص بك: 

<button id="download" onclick="printPage(10)">
  تحميل
</button>

وضف حدث الطباعة على النحو التالي: 

function printPage(id) {
            // استخدام XMLHttpRequest لجلب محتوى الصفحة الخارجية
            var xhr = new XMLHttpRequest();
         
            xhr.onreadystatechange = function() {
                if (xhr.readyState === 4 && xhr.status === 200) {
                    // إنشاء نافذة جديدة تحتوي على محتوى الصفحة
                    var printWindow = window.open('', '_blank');
                    printWindow.document.write(xhr.responseText);

                    // انتظر حتى يتم تحميل الصفحة بشكل كامل ثم قم بطباعتها
                    printWindow.onload = function() {
                        printWindow.print();
                    };
                }
            };
            xhr.open('GET', '/print-page.php?id=' + id, true);
            xhr.send();
        }

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

22.png

<?php

// الاتصال بقاعدة البيانات
include 'database.php';
 include 'navbar.php';

// استعلام لاسترجاع البيانات
$id = $_GET['id'];
$sql = "SELECT * FROM `student` WHERE id=".$id;
$result = $conn->query($sql);

// إضافة البيانات إلى التقرير
$html = '<h1>  درجات الطالب</h1>';
$html .= '<table border="1" cellpadding="5">';
$html .= '<tr><th>عنوان العمود1</th><th>عنوان العمود2</th><th>عنوان العمود3</th></tr>';

while ($row = $result->fetch_assoc()) {
    $html .= '<tr>';
    $html .= '<td>' . $row['fname'] . '</td>';
    $html .= '<td>' . $row['course_name'] . '</td>';
    $html .= '<td>' . $row['course_code'] . '</td>';
    $html .= '</tr>';
}

$html .= '</table>';
$html .= '<div style="text-align:center;">تاريخ الطباعة: ' . date('Y-m-d H:i:s') . '</div>';

وعملت دالة لكن لايعمل 

<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>الرئيسية</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
    integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">

</head>
<body>
    <div class="container">
<table class="table my-5  table-bordered table-striped">
  <thead>
    <tr>
      <th class="text-center  table-primary" scope="col">#</th>
      <th class="text-center table-primary" scope="col"> رقم القيد</th>
      <th class="text-center table-primary"  scope="col">اسم الطالب</th>
      <th class="text-center table-primary" scope="col"> اسم المقرر</th>
      <th class="text-center table-primary" scope="col">رمز المقرر </th>
      <th class="text-center table-primary" scope="col"> النصفي الاول</th>
      <th class="text-center table-primary" scope="col"> نصفي الثاني</th>
      <th class="text-center table-primary" scope="col">النهائي </th>
      <th class="text-center table-primary" scope="col">المجموع </th>
      <th class="text-center table-primary" scope="col">التقدير </th>
      <th class="text-center table-primary" scope="col">عمليات </th>

       
    </tr>
  </thead>
  <tbody>
    <?php 
   include 'database.php';
   include 'navbar.php';

   
  $sql="select *from student";
  $resault=mysqli_query($conn,$sql);
   
    $resault=mysqli_query($conn,$sql);
    while($row=mysqli_fetch_array($resault))
    {
      $id=$row['id'];
      $s= ($row['mid_exam']+$row['fir_exam']);
      $total=($s+$row['final']);
      $grade="";
      if($total<50)
      {
        $grade= "راسب";
      }
      elseif($total>=50 && $total<=64)
      {
        $grade= "مقبول";
      }
      elseif($total>=65 && $total <=74)
      {
        $grade= "جيد";
      }
      elseif($total>=75 && $total <=84)
      {
        $grade= "جيد جدا";
      }
      elseif($total>=85 && $total <=100)
      {
        $grade= "ممتاز";
      }

      
        echo '<tr > 
              <td class="text-center  "> '.$row['id'].' </td>
              <td class="text-center "> '.$row['id_code'].' </td>
             <td class="text-center ">  '.$row['fname'].' </td> 
             <td class="text-center ">  '.$row['course_name'].' </td>
             <td class="text-center">  '.$row['course_code'].' </td>
             <td class="text-center">  '.$row['mid_exam'].' </td>
             <td class="text-center">  '.$row['fir_exam'].' </td>
             <td class="text-center">  '.$row['final'].' </td>
             <td class="text-center"> '. $total .'  </td>
             <td class="text-center"> '. $grade .'  </td>

            <td  class="text-center"> <button class="btn btn-primary  my-3"> <a href="update.php?updateid='.$id.'" class="text-light text-decoration-none"> تعديل</a> </button> 
            <button class="btn btn-danger "> <a href="delete.php?deleteid='.$id.'" class="text-light text-decoration-none">حدف </a> </button> 
            <button class="btn btn-success " id="download" onclick="printPage(10)> تحميل</button>
            
            </td>
          

             </tr>';

    }
    ?>
  </tbody>
  
</table>
    </div>
    <script>
      function printPage(id) {
            // استخدام XMLHttpRequest لجلب محتوى الصفحة الخارجية
            var xhr = new XMLHttpRequest();
         
            xhr.onreadystatechange = function() {
                if (xhr.readyState === 4 && xhr.status === 200) {
                    // إنشاء نافذة جديدة تحتوي على محتوى الصفحة
                    var printWindow = window.open('', '_blank');
                    printWindow.document.write(xhr.responseText);

                    // انتظر حتى يتم تحميل الصفحة بشكل كامل ثم قم بطباعتها
                    printWindow.onload = function() {
                        printWindow.print();
                    };
                }
            };
            xhr.open('GET', 'localhost/IT/print-page.php?id=' + id, true);
            xhr.send();
        }
    </script>
   
</body>
</html>

 

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

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

22.png

<?php

// الاتصال بقاعدة البيانات
include 'database.php';
 include 'navbar.php';

// استعلام لاسترجاع البيانات
$id = $_GET['id'];
$sql = "SELECT * FROM `student` WHERE id=".$id;
$result = $conn->query($sql);

// إضافة البيانات إلى التقرير
$html = '<h1>  درجات الطالب</h1>';
$html .= '<table border="1" cellpadding="5">';
$html .= '<tr><th>عنوان العمود1</th><th>عنوان العمود2</th><th>عنوان العمود3</th></tr>';

while ($row = $result->fetch_assoc()) {
    $html .= '<tr>';
    $html .= '<td>' . $row['fname'] . '</td>';
    $html .= '<td>' . $row['course_name'] . '</td>';
    $html .= '<td>' . $row['course_code'] . '</td>';
    $html .= '</tr>';
}

$html .= '</table>';
$html .= '<div style="text-align:center;">تاريخ الطباعة: ' . date('Y-m-d H:i:s') . '</div>';

وعملت دالة لكن لايعمل 

<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>الرئيسية</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
    integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">

</head>
<body>
    <div class="container">
<table class="table my-5  table-bordered table-striped">
  <thead>
    <tr>
      <th class="text-center  table-primary" scope="col">#</th>
      <th class="text-center table-primary" scope="col"> رقم القيد</th>
      <th class="text-center table-primary"  scope="col">اسم الطالب</th>
      <th class="text-center table-primary" scope="col"> اسم المقرر</th>
      <th class="text-center table-primary" scope="col">رمز المقرر </th>
      <th class="text-center table-primary" scope="col"> النصفي الاول</th>
      <th class="text-center table-primary" scope="col"> نصفي الثاني</th>
      <th class="text-center table-primary" scope="col">النهائي </th>
      <th class="text-center table-primary" scope="col">المجموع </th>
      <th class="text-center table-primary" scope="col">التقدير </th>
      <th class="text-center table-primary" scope="col">عمليات </th>

       
    </tr>
  </thead>
  <tbody>
    <?php 
   include 'database.php';
   include 'navbar.php';

   
  $sql="select *from student";
  $resault=mysqli_query($conn,$sql);
   
    $resault=mysqli_query($conn,$sql);
    while($row=mysqli_fetch_array($resault))
    {
      $id=$row['id'];
      $s= ($row['mid_exam']+$row['fir_exam']);
      $total=($s+$row['final']);
      $grade="";
      if($total<50)
      {
        $grade= "راسب";
      }
      elseif($total>=50 && $total<=64)
      {
        $grade= "مقبول";
      }
      elseif($total>=65 && $total <=74)
      {
        $grade= "جيد";
      }
      elseif($total>=75 && $total <=84)
      {
        $grade= "جيد جدا";
      }
      elseif($total>=85 && $total <=100)
      {
        $grade= "ممتاز";
      }

      
        echo '<tr > 
              <td class="text-center  "> '.$row['id'].' </td>
              <td class="text-center "> '.$row['id_code'].' </td>
             <td class="text-center ">  '.$row['fname'].' </td> 
             <td class="text-center ">  '.$row['course_name'].' </td>
             <td class="text-center">  '.$row['course_code'].' </td>
             <td class="text-center">  '.$row['mid_exam'].' </td>
             <td class="text-center">  '.$row['fir_exam'].' </td>
             <td class="text-center">  '.$row['final'].' </td>
             <td class="text-center"> '. $total .'  </td>
             <td class="text-center"> '. $grade .'  </td>

            <td  class="text-center"> <button class="btn btn-primary  my-3"> <a href="update.php?updateid='.$id.'" class="text-light text-decoration-none"> تعديل</a> </button> 
            <button class="btn btn-danger "> <a href="delete.php?deleteid='.$id.'" class="text-light text-decoration-none">حدف </a> </button> 
            <button class="btn btn-success " id="download" onclick="printPage(10)> تحميل</button>
            
            </td>
          

             </tr>';

    }
    ?>
  </tbody>
  
</table>
    </div>
    <script>
      function printPage(id) {
            // استخدام XMLHttpRequest لجلب محتوى الصفحة الخارجية
            var xhr = new XMLHttpRequest();
         
            xhr.onreadystatechange = function() {
                if (xhr.readyState === 4 && xhr.status === 200) {
                    // إنشاء نافذة جديدة تحتوي على محتوى الصفحة
                    var printWindow = window.open('', '_blank');
                    printWindow.document.write(xhr.responseText);

                    // انتظر حتى يتم تحميل الصفحة بشكل كامل ثم قم بطباعتها
                    printWindow.onload = function() {
                        printWindow.print();
                    };
                }
            };
            xhr.open('GET', 'localhost/IT/print-page.php?id=' + id, true);
            xhr.send();
        }
    </script>
   
</body>
</html>

 

هل تظهر أي رسالة خطأ؟ 

  • 0
نشر
بتاريخ الآن قال ايمن ميلاد:

لايظهر شي 

افتح console التطبيق على المتصفح وانظر ما المشكلة عند الضغط على زر الطباعة. 
أيضا، انتبه الى ان 10 هاهنا مثال لا أكثر، ضع مكانها معرف السطر الذي تستهدفه: 

<button class="btn btn-success " id="download" onclick="printPage(10)>
  • 0
نشر

اخي ارفقت ملفات لك صفحة عرض بيانات ممكن تعمل لي كود طباعه ودالة انت قمت باستدعائه وممرات لها باراميتر رقم 10 انا اريد طباعة سطر 

الذي اضغط علي زر طباعه 

display.php

بتاريخ 7 دقائق مضت قال ايمن ميلاد:

اخي ارفقت ملفات لك صفحة عرض بيانات ممكن تعمل لي كود طباعه ودالة انت قمت باستدعائه وممرات لها باراميتر رقم 10 انا اريد طباعة سطر 

الذي اضغط علي زر طباعه 

display.php 3.79 kB · 0 تنزيلات

في xhr.open  هل اكتب localhost/it/print-page

يظهر not found 404

 

بتاريخ 12 دقائق مضت قال ايمن ميلاد:

اخي ارفقت ملفات لك صفحة عرض بيانات ممكن تعمل لي كود طباعه ودالة انت قمت باستدعائه وممرات لها باراميتر رقم 10 انا اريد طباعة سطر 

الذي اضغط علي زر طباعه 

display.php 3.79 kB · 0 تنزيلات

في xhr.open  هل اكتب localhost/it/print-page

يظهر not found 404

 

الان يظهر فارغ console

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...