صفحه بندی در گزارش!

nimadb54

Member
با استفاده از php از یک جدول گزارش گرفتم که برای چاپ بیشتر از یک صفحه میشه و در صفحه دوم بقیه جدول چاپ میشه میخواهم که تیتر جدول در صفحه دوم دوباره تکرار بشه از کجا بفهمم که کدام ردیف در صفحه دوم است چه کاری میتوان انجام داد؟

با تشکر
 

Zanguei

Member
سلام دوست عزیز
این کار زخمت زیادی داره. اما راحت ترین کار اینه که اگر رکوردهای شما به صورت تک خطی هست یعنی شما ارتفاع هر رکورد خودتون رو میدونید بررسی کنید ببینید که هر چند رکورد در یک صفحه جا میشه. مثلا هر 25 رکورد در یک صفحه جا میشه و رکورد بعدی به صفحه بعد میره بنابراین حلقه while در کد php رو طوری بنویسید که پس از چاپ هر 25 رکورد دوباره هیدر جدول رو چاپ کنه و در تگ مربوط به سر هیدر جدول از دستور page-break-before به شکل زیر استفاده کنید:
کد:
<?php $page=1;$records=0;while($records<$totalRows_results){ // every 25 records in one page ?>
    <table style="page-break-before:always;" align="center" cellpadding="2" width="725" cellspacing="0">
   <tr bgcolor="#CCCCCC">
        <td colspan="2" align="left" style="border-right:none;"><?='صفحه '.$page?></td>
  <td dir="rtl" colspan="11" align="center" style="font-weight:bold;border-left:none;">اداره کل آموزش فنی و حرفه ای خراسان رضوی - نتایج آزمون کتبی <?=$markaz_name?> </td>
   </tr>
      <tr bgcolor="#cccccc">
        <th align="center">نتیجه کتبی</th>
        <th align="center">نمره کل</th>
        <th align="center">نمره مشاهده ای</th>
        <th align="center">نمره عملی</th>
        <th align="center">نمره کتبی</th>
        <th align="center">سال تولد</th>
        <th align="center">محل صدور</th>
        <th align="center">شماره شناسنامه</th>
        <th align="center">نام پدر</th>
        <th align="center">نام و نام خانوادگی</th>
        <th align="center">مدت آموزش</th>
        <th align="center">رشته آموزشی</th>
        <th align="center">ردیف</th>
      </tr>
   <?php $row=1;do { ?>
      <tr bgcolor="<?=($row%2==0)?'#EEEEEE':'#FFFFFF'?>" dir="rtl">
        <td align="center">&nbsp;
          <?php 
      if($row_results['no_katbi']!="")
      {
     if((int)$Exam_Date<138501)
      echo(((int)$row_results['no_katbi']>=70)?"قبول":"مردود");
     else echo(((int)$row_results['no_katbi']>=50)?"قبول":"مردود");
      }
      else echo('**'); 
     ?>
        </td>
     <td align="center"><?=($row_results['no_kol']=='')?'**':$row_results['no_kol']?></td>
     <td align="center"><?=($row_results['Arz_mosh']=='')?'**':$row_results['Arz_mosh']?></td>
     <td align="center"><?=($row_results['arz_aml']=='')?'**':$row_results['arz_aml']?></td>
        <td align="center"><?=($row_results['no_katbi']=='')?'**':$row_results['no_katbi']?></td>
        <td align="center"><?php echo $row_results['birth_dateY']; ?></td>
        <td align="center"><?php echo $row_results['sodur_place']; ?></td>
        <td align="center"><?php echo $row_results['id_no']; ?></td>
        <td align="center"><?php echo $row_results['father']; ?></td>
        <td align="right"><?php echo $row_results['name']; ?> <?php echo $row_results['family']; ?></td>
        <td align="center"><?php echo (int)$row_results['modat_t']+(int)$row_results['modat_A']; ?></td>
        <td align="center" dir="ltr"><?php echo $row_results['name_std']; ?></td>
        <td align="center"><?=($records+1)?></td>
      </tr>
      <?php $records++; if($records%25==0){ $row_results = mysql_fetch_assoc($results);break;}$row++;} while ($row_results = mysql_fetch_assoc($results));$page++; ?>
   <tr bgcolor="#CCCCCC">
        <td colspan="10" dir="rtl" align="center" style="font-weight:bold;border-right:none;">مهلت اعتراض به نمرات حد اکثر تا تاریخ <?=$Exams_Protest_Date[$Exam_Date]?> خواهد بود.</td>
  <td dir="rtl" colspan="3" style="font-weight:bold;border-left:none;">&nbsp;تاریخ اعلام نتایج: <?=$Exams_Results_Date[$Exam_Date]?></td>
   </tr>
  </table>
 <?php } // every 25 records in one page ?>
 
آخرین ویرایش:

nimadb54

Member
با تشکر از شما
مشکل من اینه که یک فیلد شرح دارم که ممکنه چند خط بشه :(
 

Zanguei

Member
سلام دوست عزیز
اون سایتی که در امضاتون هست مربوط به شماست. اگه اینطور باشه که شما باید خودتون بتونید مشکلتون رو حل کنید. جوابش با خودتون. فقط یک راهنمایی. در زمینه page-break-before و page-break-after تحقیق کنید. احتمال 95% به هدفتون میرسید. یکی از اونها رو باید در جای مناسبی قرار بدید.
موفق باشید.
 

nimadb54

Member
قابل توجه کاربرانی که بعدا این مطالب رو میخونن با استفاده از CSS میتوانید در هر زمان و هر قسمت که خواستید بتوانید به صفحه بعد بروید برای اطلاعات بیشتر به لینک http://www.w3schools.com/css/pr_print_pagebb.asp مراجعه کنید.

اما مشکل من اینه که نمیدونم کی باید از این دستور استفاده کنم! ممکنه توی یک صفحه 10 ردیف و توی یک صفحه 20 ردیف از یک جدول جا بشه!
 

جدیدترین ارسال ها

بالا