Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [MySQL][PHP]kwota słownie w pętli

Napisany przez: krzesik 3.03.2024, 21:21:45

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 = http://www.php.net/mysql_query($slownie) or http://www.php.net/die('Queryproblem: '.http://www.php.net/mysql_error());
  3.  
  4.  
  5. while($vv = http://www.php.net/mysql_fetch_array($wynikslownie))
  6. {
  7. function slownie ($kw) {
  8.  
  9. $t_a = http://www.php.net/array('','sto','dwieście','trzysta','czterysta','pięćset','sześćset','siedemset','osiemset','dziewięćset');
  10. $t_b = http://www.php.net/array('','dziesięć','dwadzieścia','trzydzieści','czterdzieści','pięćdziesiąt','sześćdziesiąt','siedemdziesiąt','osiemdziesiąt','dziewięćdziesiąt');
  11. $t_c = http://www.php.net/array('','jeden','dwa','trzy','cztery','pięć','sześć','siedem','osiem','dziewięć');
  12. $t_d = http://www.php.net/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 = http://www.php.net/array('septyliard','septyliardów','septyliardy');
  15. $t_kw_14 = http://www.php.net/array('septylion','septylionów','septyliony');
  16. $t_kw_13 = http://www.php.net/array('sekstyliard','sekstyliardów','sekstyliardy');
  17. $t_kw_12 = http://www.php.net/array('sekstylion','sekstylionów','sepstyliony');
  18. $t_kw_11 = http://www.php.net/array('kwintyliard','kwintyliardów','kwintyliardy');
  19. $t_kw_10 = http://www.php.net/array('kwintylion','kwintylionów','kwintyliony');
  20. $t_kw_9 = http://www.php.net/array('kwadryliard','kwadryliardów','kwaryliardy');
  21. $t_kw_8 = http://www.php.net/array('kwadrylion','kwadrylionów','kwadryliony');
  22. $t_kw_7 = http://www.php.net/array('tryliard','tryliardów','tryliardy');
  23. $t_kw_6 = http://www.php.net/array('trylion','trylionów','tryliony');
  24. $t_kw_5 = http://www.php.net/array('biliard','biliardów','biliardy');
  25. $t_kw_4 = http://www.php.net/array('bilion','bilionów','bilony');
  26. $t_kw_3 = http://www.php.net/array('miliard','miliardów','miliardy');
  27. $t_kw_2 = http://www.php.net/array('milion','milionów','miliony');
  28. $t_kw_1 = http://www.php.net/array('tysiąc','tysięcy','tysiące');
  29. $t_kw_0 = http://www.php.net/array('złoty','złotych','złote');
  30.  
  31. if ($kw!='') {
  32. $kw=(http://www.php.net/substr_count($kw,'.')==0) ? $kw.'.00':$kw;
  33. $tmp=http://www.php.net/explode(".",$kw);
  34. $ln=http://www.php.net/strlen($tmp[0]);
  35. $tmp_a=($ln%3==0) ? (http://www.php.net/floor($ln/3)*3):((http://www.php.net/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=(http://www.php.net/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=http://www.php.net/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 = http://www.php.net/mysql_query($slownie) or http://www.php.net/die('Queryproblem: '.http://www.php.net/mysql_error());
  6.  
  7.  
  8. while($vv = http://www.php.net/mysql_fetch_array($wynikslownie))
  9. {
  10. function slownie ($kw) {
  11.  
  12. $t_a = http://www.php.net/array('','sto','dwieście','trzysta','czterysta','pięćset','sześćset','siedemset','osiemset','dziewięćset');
  13. $t_b = http://www.php.net/array('','dziesięć','dwadzieścia','trzydzieści','czterdzieści','pięćdziesiąt','sześćdziesiąt','siedemdziesiąt','osiemdziesiąt','dziewięćdziesiąt');
  14. $t_c = http://www.php.net/array('','jeden','dwa','trzy','cztery','pięć','sześć','siedem','osiem','dziewięć');
  15. $t_d = http://www.php.net/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 = http://www.php.net/array('septyliard','septyliardów','septyliardy');
  18. $t_kw_14 = http://www.php.net/array('septylion','septylionów','septyliony');
  19. $t_kw_13 = http://www.php.net/array('sekstyliard','sekstyliardów','sekstyliardy');
  20. $t_kw_12 = http://www.php.net/array('sekstylion','sekstylionów','sepstyliony');
  21. $t_kw_11 = http://www.php.net/array('kwintyliard','kwintyliardów','kwintyliardy');
  22. $t_kw_10 = http://www.php.net/array('kwintylion','kwintylionów','kwintyliony');
  23. $t_kw_9 = http://www.php.net/array('kwadryliard','kwadryliardów','kwaryliardy');
  24. $t_kw_8 = http://www.php.net/array('kwadrylion','kwadrylionów','kwadryliony');
  25. $t_kw_7 = http://www.php.net/array('tryliard','tryliardów','tryliardy');
  26. $t_kw_6 = http://www.php.net/array('trylion','trylionów','tryliony');
  27. $t_kw_5 = http://www.php.net/array('biliard','biliardów','biliardy');
  28. $t_kw_4 = http://www.php.net/array('bilion','bilionów','bilony');
  29. $t_kw_3 = http://www.php.net/array('miliard','miliardów','miliardy');
  30. $t_kw_2 = http://www.php.net/array('milion','milionów','miliony');
  31. $t_kw_1 = http://www.php.net/array('tysiąc','tysięcy','tysiące');
  32. $t_kw_0 = http://www.php.net/array('złoty','złotych','złote');
  33.  
  34. if ($kw!='') {
  35. $kw=(http://www.php.net/substr_count($kw,'.')==0) ? $kw.'.00':$kw;
  36. $tmp=http://www.php.net/explode(".",$kw);
  37. $ln=http://www.php.net/strlen($tmp[0]);
  38. $tmp_a=($ln%3==0) ? (http://www.php.net/floor($ln/3)*3):((http://www.php.net/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=(http://www.php.net/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=http://www.php.net/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. }





Napisany przez: trueblue 4.03.2024, 08:09:55

Przenieś funkcję "slownie" poza pętlę while.
I włącz raportowanie błędów.

Napisany przez: krzesik 4.03.2024, 10:16:47

Tak, to było to, dziękuję

Napisany przez: Tomplus 4.03.2024, 21:03:06

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?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)