Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]kwota słownie w pętli
Forum PHP.pl > Forum > Przedszkole
krzesik
Witam,

generuję potwierdzenia zapłaty do pliku PDF, jeśli jest jeden dokument to wszystko ładnie działa, ale jeśli potrzebuję wygenerować więcej niż jeden to już mam problem.
Interpreter niestety nie pokazuje mi gdzie jest błąd, postaram się go opisać:

jest dobrze jeśli:
  1. $slownie = "SELECT ABS(kwota) as kwotabrutto from kasa WHERE id_kasa='$id_kasa'";
  2. $wynikslownie = mysql_query($slownie) or die('Queryproblem: '.mysql_error());
  3.  
  4.  
  5. while($vv = mysql_fetch_array($wynikslownie))
  6. {
  7. function slownie ($kw) {
  8.  
  9. $t_a = array('','sto','dwieście','trzysta','czterysta','pięćset','sześćset','siedemset','osiemset','dziewięćset');
  10. $t_b = array('','dziesięć','dwadzieścia','trzydzieści','czterdzieści','pięćdziesiąt','sześćdziesiąt','siedemdziesiąt','osiemdziesiąt','dziewięćdziesiąt');
  11. $t_c = array('','jeden','dwa','trzy','cztery','pięć','sześć','siedem','osiem','dziewięć');
  12. $t_d = array('dziesięć','jedenaście','dwanaście','trzynaście','czternaście','piętnaście','szesnaście','siednaście','osiemnaście','dziewiętnaście');
  13.  
  14. $t_kw_15 = array('septyliard','septyliardów','septyliardy');
  15. $t_kw_14 = array('septylion','septylionów','septyliony');
  16. $t_kw_13 = array('sekstyliard','sekstyliardów','sekstyliardy');
  17. $t_kw_12 = array('sekstylion','sekstylionów','sepstyliony');
  18. $t_kw_11 = array('kwintyliard','kwintyliardów','kwintyliardy');
  19. $t_kw_10 = array('kwintylion','kwintylionów','kwintyliony');
  20. $t_kw_9 = array('kwadryliard','kwadryliardów','kwaryliardy');
  21. $t_kw_8 = array('kwadrylion','kwadrylionów','kwadryliony');
  22. $t_kw_7 = array('tryliard','tryliardów','tryliardy');
  23. $t_kw_6 = array('trylion','trylionów','tryliony');
  24. $t_kw_5 = array('biliard','biliardów','biliardy');
  25. $t_kw_4 = array('bilion','bilionów','bilony');
  26. $t_kw_3 = array('miliard','miliardów','miliardy');
  27. $t_kw_2 = array('milion','milionów','miliony');
  28. $t_kw_1 = array('tysiąc','tysięcy','tysiące');
  29. $t_kw_0 = array('złoty','złotych','złote');
  30.  
  31. if ($kw!='') {
  32. $kw=(substr_count($kw,'.')==0) ? $kw.'.00':$kw;
  33. $tmp=explode(".",$kw);
  34. $ln=strlen($tmp[0]);
  35. $tmp_a=($ln%3==0) ? (floor($ln/3)*3):((floor($ln/3)+1)*3);
  36. for($i = $ln; $i < $tmp_a; $i++) {
  37. $l_pad .= '0';
  38. $kw_w = $l_pad . $tmp[0];
  39. }
  40. $kw_w=($kw_w=='') ? $tmp[0]:$kw_w;
  41. $paczki=(strlen($kw_w)/3)-1;
  42. $p_tmp=$paczki;
  43. for($i=0;$i<=$paczki;$i++) {
  44. $t_tmp='t_kw_'.$p_tmp;
  45. $p_tmp--;
  46. $p_kw=substr($kw_w,($i*3),3);
  47. $kw_w_s=($p_kw{1}!=1) ? $t_a[$p_kw{0}].' '.$t_b[$p_kw{1}].' '.$t_c[$p_kw{2}]:$t_a[$p_kw{0}].' '.$t_d[$p_kw{2}];
  48. if(($p_kw{0}==0)&&($p_kw{2}==1)&&($p_kw{1}<1)) $ka=${$t_tmp}[0]; //możliwe że $p_kw{1}!=1
  49. else if (($p_kw{2}>1 && $p_kw{2}<5)&&$p_kw{1}!=1) $ka=${$t_tmp}[2];
  50. else $ka=${$t_tmp}[1];
  51. $kw_slow.=$kw_w_s.' '.$ka.' ';
  52. }
  53. }
  54. $text = $kw_slow.' '.$tmp[1].'/100 gr.';
  55. return $text;
  56. }
  57. $slowniekwota = slownie(($vv[kwotabrutto]));
  58.  
  59. }
  60. require ('../../../global/mpdf/mpdf.php');
  61. $mpdf=new mPDF('utf-8', 'A4', 0, '', 10, 10, 10, 0, 0, 0);
  62. $mpdf->defaultfooterfontsize=1;
  63. $mpdf->defaultfooterfontstyle='I';
  64. $mpdf->defaultfooterline=0;
  65. $mpdf->allow_charset_conversion=true;
  66. $mpdf->charset_in='UTF-8';
  67. $naglowek = '
  68. <head>
  69. <style type="text/css">
  70. table {border-collapse: collapse}
  71. </style>
  72. </head>
  73. <html>
  74. <body>
  75. <table width="100%" border="1" style="background-color: #fbfbf7">
  76. <tr>';
  77. if($r[rodzaj]=='KP') {
  78. $naglowek .= '
  79. <td colspan="5" align ="center" style="background-color: #a5a2a2">
  80. <font size="5"><b>Dowód WPŁATY - pokwitowanie</b></font>'; }
  81. ........


ale jeśli zrobię to samo w pętli to już mam 500:

  1. $drukuj = $_POST[drukuj];
  2. foreach ($drukuj as $id_kasa)
  3. {
  4. $slownie = "SELECT ABS(kwota) as kwotabrutto from kasa WHERE id_kasa='$id_kasa'";
  5. $wynikslownie = mysql_query($slownie) or die('Queryproblem: '.mysql_error());
  6.  
  7.  
  8. while($vv = mysql_fetch_array($wynikslownie))
  9. {
  10. function slownie ($kw) {
  11.  
  12. $t_a = array('','sto','dwieście','trzysta','czterysta','pięćset','sześćset','siedemset','osiemset','dziewięćset');
  13. $t_b = array('','dziesięć','dwadzieścia','trzydzieści','czterdzieści','pięćdziesiąt','sześćdziesiąt','siedemdziesiąt','osiemdziesiąt','dziewięćdziesiąt');
  14. $t_c = array('','jeden','dwa','trzy','cztery','pięć','sześć','siedem','osiem','dziewięć');
  15. $t_d = array('dziesięć','jedenaście','dwanaście','trzynaście','czternaście','piętnaście','szesnaście','siednaście','osiemnaście','dziewiętnaście');
  16.  
  17. $t_kw_15 = array('septyliard','septyliardów','septyliardy');
  18. $t_kw_14 = array('septylion','septylionów','septyliony');
  19. $t_kw_13 = array('sekstyliard','sekstyliardów','sekstyliardy');
  20. $t_kw_12 = array('sekstylion','sekstylionów','sepstyliony');
  21. $t_kw_11 = array('kwintyliard','kwintyliardów','kwintyliardy');
  22. $t_kw_10 = array('kwintylion','kwintylionów','kwintyliony');
  23. $t_kw_9 = array('kwadryliard','kwadryliardów','kwaryliardy');
  24. $t_kw_8 = array('kwadrylion','kwadrylionów','kwadryliony');
  25. $t_kw_7 = array('tryliard','tryliardów','tryliardy');
  26. $t_kw_6 = array('trylion','trylionów','tryliony');
  27. $t_kw_5 = array('biliard','biliardów','biliardy');
  28. $t_kw_4 = array('bilion','bilionów','bilony');
  29. $t_kw_3 = array('miliard','miliardów','miliardy');
  30. $t_kw_2 = array('milion','milionów','miliony');
  31. $t_kw_1 = array('tysiąc','tysięcy','tysiące');
  32. $t_kw_0 = array('złoty','złotych','złote');
  33.  
  34. if ($kw!='') {
  35. $kw=(substr_count($kw,'.')==0) ? $kw.'.00':$kw;
  36. $tmp=explode(".",$kw);
  37. $ln=strlen($tmp[0]);
  38. $tmp_a=($ln%3==0) ? (floor($ln/3)*3):((floor($ln/3)+1)*3);
  39. for($i = $ln; $i < $tmp_a; $i++) {
  40. $l_pad .= '0';
  41. $kw_w = $l_pad . $tmp[0];
  42. }
  43. $kw_w=($kw_w=='') ? $tmp[0]:$kw_w;
  44. $paczki=(strlen($kw_w)/3)-1;
  45. $p_tmp=$paczki;
  46. for($i=0;$i<=$paczki;$i++) {
  47. $t_tmp='t_kw_'.$p_tmp;
  48. $p_tmp--;
  49. $p_kw=substr($kw_w,($i*3),3);
  50. $kw_w_s=($p_kw{1}!=1) ? $t_a[$p_kw{0}].' '.$t_b[$p_kw{1}].' '.$t_c[$p_kw{2}]:$t_a[$p_kw{0}].' '.$t_d[$p_kw{2}];
  51. if(($p_kw{0}==0)&&($p_kw{2}==1)&&($p_kw{1}<1)) $ka=${$t_tmp}[0]; //możliwe że $p_kw{1}!=1
  52. else if (($p_kw{2}>1 && $p_kw{2}<5)&&$p_kw{1}!=1) $ka=${$t_tmp}[2];
  53. else $ka=${$t_tmp}[1];
  54. $kw_slow.=$kw_w_s.' '.$ka.' ';
  55. }
  56. }
  57. $text = $kw_slow.' '.$tmp[1].'/100 gr.';
  58. return $text;
  59. }
  60. $slowniekwota = slownie(($vv[kwotabrutto]));
  61.  
  62. }
  63.  
  64. require ('../../../global/mpdf/mpdf.php');
  65. $mpdf=new mPDF('utf-8', 'A4', 0, '', 10, 10, 10, 0, 0, 0);
  66. $mpdf->defaultfooterfontsize=1;
  67. $mpdf->defaultfooterfontstyle='I';
  68. $mpdf->defaultfooterline=0;
  69. $mpdf->allow_charset_conversion=true;
  70. $mpdf->charset_in='UTF-8';
  71. $naglowek = '
  72. <head>
  73. <style type="text/css">
  74. table {border-collapse: collapse}
  75. </style>
  76. </head>
  77. <html>
  78. <body>
  79. <table width="100%" border="1" style="background-color: #fbfbf7">
  80. <tr>';
  81. if($r[rodzaj]=='KP') {
  82. $naglowek .= '
  83. <td colspan="5" align ="center" style="background-color: #a5a2a2">
  84. <font size="5"><b>Dowód WPŁATY - pokwitowanie</b></font>'; }
  85. ........
  86. }




trueblue
Przenieś funkcję "slownie" poza pętlę while.
I włącz raportowanie błędów.
krzesik
Tak, to było to, dziękuję
Tomplus
Po za pętlę foreach() także należy przenieść.


W ogóle przygotowujesz się na tak dużą inflację, że będzie potrzeba używać tak ekstremalnych nazw liczb?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.