Witam.
Mam pobrane z bazy [mysql] stringa mającego postać
nazwisko imie adres pesel: numer_pesel
W zależności od liczby zaznaczonych na podstronie checkboxów string może mieć nawet 20 takich ciągów.
Plik ma za zadanie wygenerowanie na podstawie biblioteki fpdf wizytówek zaznaczonych osób (chodzi o naklejki).
Wygląda to następująco

  1. //połączenie z bazą
  2. define('FPDF_FONTPATH','font/');
  3. include('fpdf.php');
  4. $pdf=new FPDF();
  5. $pdf->Open();
  6. $pdf->AddPage();
  7. $pdf->AddFont('arialpl','','arialpl.php');
  8. $pdf->SetTextColor(21,0,0);
  9. $pdf->SetFont('arialpl','',8.5);

I dotąd jest wszytko jasne - łącze się z baza otwieram plik pdf.
Następnie pobieram dane z bazy:
  1. for($i=0; $i<100; $i++)
  2. {
  3. $a=array($_POST['wiz'][$i]);
  4. if(isset($_POST['wiz'][$i])){
  5. foreach($a as $b => $value){
  6. $sql='insert into wizytowki_kopia (id_usr,id_pac) values
  7. ('.$_SESSION['id'].',
  8. '.$value.')';
  9. //echo $sql."<br/>";
  10. $res=mysqli_query($mysqli,$sql) or die("Błąd zapytania");

I tutaj też jest na razie OK. Następnie pobieram dane osób którym chce zrobić taką wizytówkę:
  1. $sql2='select concat(nazwisko,\' \',imie) as osoba, concat(miasto,\', \',adres) as adres, pesel from osoby where id_pac='
  2. .$value.'';
  3. $rez=mysqli_query($mysqli,$sql2) or die("Błąd zapytania");
  4.  
  5. while($rekord=mysqli_fetch_array($rez, MYSQLI_ASSOC)){
  6. $osoba1=$rekord['osoba'];
  7. $adres1=$rekord['adres'];
  8. $pesel=$rekord['pesel'];
  9. }
  10. //następuje kilka linijek dotyczących łamania tekstu i finalnie otrzymuje następującą opcję
  11. $dane_os_con="$osoba1\n$adres1\nPESEL: $pesel";
  12. $dane_os=iconv("utf-8", "iso-8859-2", $dane_os_con);
  13. }
  14. }
  15. }

Na jedną stronę przewidziałem wizytówki dwóch osób. Mam ustawione wszystko w następującej formie - każda linijka składająca się z 5 naklejek:
  1. globalne ustawienia na każdą stronę
  2. $x=38;
  3. //ustawia wysokosc naklejki
  4. $nak_y=21.2;
  5. //ustawia górny margines w mm
  6. $mar=11.5;
  7. //ustawienia poszczegónych linijek - dostosowane do wielkości posiadanego druku.
  8. //1ST ROW
  9. $y=$mar;$pdf->SetXY(11,$y);
  10. $pdf->multicell(52,4,$dane_os,0, 'L',0);
  11. $pdf->SetXY($x+11,$y);
  12. $pdf->multicell(52,4,$dane_os,0, 'L',0);
  13. $pdf->SetXY(($x*2)+11,$y);
  14. $pdf->multicell(52,4,$dane_os,0, 'L',0);
  15. $pdf->SetXY(($x*3)+11,$y);
  16. $pdf->multicell(52,4,$dane_os,0, 'L',0);
  17. $pdf->SetXY(($x*4)+11,$y);
  18. $pdf->multicell(52,4,$dane_os,0, 'L',0);

Moje problemy rozbijają się o to:
Jak rozbić string aby był podział na poszczególne dane osobowe, jak później ten "rozbity" string przekazać do zmiennych i wreszcie jak zrobić żeby pdf nie kończył się na jednej stronie.
Na koniec plik wygląda w następujący sposób:
  1. $pdf->SetCompression(true);
  2. $pdf->SetDisplayMode(100);
  3. $pdf->SetMargins(0,0,0);
  4. $pdf->Output();