разделение значений таблиц на разные ячейки - PullRequest
3 голосов
/ 27 июня 2019

Итак, я начал разбираться с использованием fpdf, но одна вещь, в которой я не уверен, это разделение значений массива на разностные ячейки в форме pdf.

Это часть формы, с которой у меня возникают проблемы.Сама форма в порядке и проходит через мой php-файл.

<table class="qualifications" id="qualifications" >
  <tr>
  <td><b>Date From</b></td>
  <td><b>Date To</b></td>
  <td><b>Name of School/College/Institute or Professional Body</b></td>
  <td><b>Examinations Taken and Results</b></td>
  </tr>
  <tr>
  <td><input type="text" name="date_from[]" id="date_from" /></td>
  <td><input type="text" name="date_to[]" id="date_to"/></td>
  <td><input type="text" name="school_name[]" id="school_name" /></td>
  <td><input type="text" name="results[]" id="results"/></td>
  </tr>
</table>
<a href="#" title="" class="add-row">Add Row</a>

Пользователь может добавить столько строк, сколько ему нужно, используя ссылку добавления строки

Вот так я получаюзначения из таблицы:

if( isset($_POST['date_from']) && is_array($_POST['date_from']) ) {
    $from = implode(', ', $_POST['date_from']);

}

if( isset($_POST['date_to']) && is_array($_POST['date_to']) ) {
    $to = implode(', ', $_POST['date_to']);

}

if( isset($_POST['school_name']) && is_array($_POST['school_name']) ) {
    $schoolName = implode(', ', $_POST['school_name']);

}

if( isset($_POST['results']) && is_array($_POST['results']) ) {
    $examResults = implode(', ', $_POST['results']);

}

Когда дело доходит до заполнения ячейки в PDF-форме, я делаю что-то вроде:

 $pdf->Cell($width_cell[0],10,$from,1,0,'C'); 

Но это просто сохраняет каждое значение, введенное втаблица в одной ячейке

Скажем, например, если кто-то ввел 2 таблицы в таблицу квалификаций и даты из значений были:

22/09/2002 и 10/10/18

Они будут отображаться в той же ячейке, что и 22/09/12, 10/10/18

Так как бы я изменил ее так, чтобы второе значение и т. Д. Проходили ниже первоговместо ячейки?

Надеюсь, это имело смысл

Редактировать: Вот как я сейчас заполняю ячейки:

  $width_cell=array(30,25,50,90);

$pdf->Cell($width_cell[0],10,'Date From',1,0); // First header column 
$pdf->Cell($width_cell[1],10,'Date To',1,0); // Second header column
$pdf->Cell($width_cell[2],10,'Name of School',1,0); // Third header column 
$pdf->Cell($width_cell[3],10,'Examinations Taken & Results',1,1); // Fourth header column

  $pdf->SetFont('Arial','',10);
 foreach ($from as $point => $data) {
 $pdf->Cell($width_cell[0],10,$data,1,1,'C');

}

 foreach ($to as $point => $data) {
    $pdf->Cell($width_cell[1],10,$data,1,1,'C');

 }

 foreach ($schoolName as $point => $data) {
    $pdf->Cell($width_cell[2],10,$data,1,1,'C');

 }   


 foreach ($examResults as $point => $data) {
    $pdf->Cell($width_cell[3],10,$data,1,1,'C');    

 }

Редактировать 2: Теперь у меня все работает,Я изменил способ заполнения ячеек:

$pdf->Cell($width_cell[0],10,'Date From',1,0); // First header column 
$pdf->Cell($width_cell[1],10,'Date To',1,0); // Second header column
$pdf->Cell($width_cell[2],10,'Name of School',1,0); // Third header column 
$pdf->Cell($width_cell[3],10,'Examinations Taken & Results',1,1); // Fourth header column

  $pdf->SetFont('Arial','',10);
 foreach ($from as $point => $data) {
  $pdf->Cell($width_cell[0],10,$data,1,0,'C'); 
  $pdf->Cell($width_cell[1],10,$to[$point],1,0,'C');
  $pdf->Cell($width_cell[2],10,$schoolName[$point],1,0,'C');
  $pdf->Cell($width_cell[3],10,$examResults[$point],1,1,'C');


}

1 Ответ

2 голосов
/ 27 июня 2019

Если ваша проверка формы гарантирует, что все 4 поля заполнены в каждой строке, вы можете просто использовать foreach, чтобы просмотреть все и добавить его в PDF.

Во-первых, не взрывайте свои _POST массивы. Оставьте их нетронутыми, и вы сможете использовать foreach для их просмотра.

$from        = (isset($_POST['date_from'])   ? $_POST['date_from']   : array());
$to          = (isset($_POST['date_to'])     ? $_POST['date_to']     : array());
$schoolName  = (isset($_POST['school_name']) ? $_POST['school_name'] : array());
$examResults = (isset($_POST['results'])     ? $_POST['results']     : array());

foreach ($from as $point => $data) {

    $pdf->Cell($width_cell[0],10,$data,1,1,'C');
    // if you want to put the "to" in another cell it would be referenced
    // as $to[$point] or $schoolName[$point] etc
}

Если вы хотите поместить данные from, to и schoolName в одну строку, вы можете использовать что-то вроде:

$pdf->Cell($width_cell[0],10,'From: '        . $data       . 
                             ' To: '         . $to[$point] . 
                             ' School Name ' . $schoolName[$point],1,1,'C');
...