Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]kwota słownie w pętli
krzesik
post 3.03.2024, 21:21:45
Post #1





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 25.08.2012

Ostrzeżenie: (0%)
-----


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. }




Go to the top of the page
+Quote Post
trueblue
post 4.03.2024, 08:09:55
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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


--------------------
Go to the top of the page
+Quote Post
krzesik
post 4.03.2024, 10:16:47
Post #3





Grupa: Zarejestrowani
Postów: 476
Pomógł: 1
Dołączył: 25.08.2012

Ostrzeżenie: (0%)
-----


Tak, to było to, dziękuję
Go to the top of the page
+Quote Post
Tomplus
post 4.03.2024, 21:03:06
Post #4





Grupa: Zarejestrowani
Postów: 1 838
Pomógł: 226
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 14:01