Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Jak zliczyć dane ?
slawek3422
post
Post #1





Grupa: Zarejestrowani
Postów: 142
Pomógł: 7
Dołączył: 3.08.2007
Skąd: śląsk

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


Witam.
Przychodzę z banalnym problemem jakoś nie wiem jak policzyć pewną rzecz. Wyciągam z bazy danych kilka informacji szczątkowych, za pomocą PHP uzupełniam te dane i w efekcie dostaję na ekran taką oto tabelkę :
Tabelka
(IMG:http://wgrajfoto.pl/pokaz/img0410/help181d.jpg)
Teraz chcę wyciągnąć z niej informację ile razy wystąpiło B, ile C i ile D. To podsumowanie, które mam to nie to o co mi chodzi bo to jest czas trwania B, C i D, a nie ilość wystąpień. W wyniku mam dostać B= 3, C = 2, D = 0 nie wiem jak ... każdy wiersz tabelki jest wypisany za pomocą pętli. Kodu nie wklejam, bo żeby go ogarnąć to musiałbym cały skrypt wrzucić (jak będzie trzeba to to zrobię)

Ten post edytował slawek3422 19.04.2010, 19:30:06
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
slawek3422
post
Post #2





Grupa: Zarejestrowani
Postów: 142
Pomógł: 7
Dołączył: 3.08.2007
Skąd: śląsk

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


heh, podejrzewałem, że nie będzie prosto wytłumaczyć o co mi chodzi (IMG:style_emoticons/default/smile.gif) , teraz niestety jestem w pracy i nie mam dostępu do swojego kompa ale w okolicy 19:00 wrzucę cały skrypt

Proszę, oto kod:
  1. <?php
  2.  
  3. $_SESSION['b'] = 0;
  4. $_SESSION['c'] = 0;
  5. $_SESSION['d'] = 0;
  6. function cmp($a, $b){
  7. if ($a < $b)
  8. return - 1;
  9. if ($a > $b)
  10. return 1;
  11. return 0;
  12. }
  13. function roznica_dat($iniDate, $endDate)
  14. {
  15. $iniDate = explode("-", $iniDate);
  16. $endDate = explode("-", $endDate);
  17. $start_date = gregoriantojd($iniDate[1], $iniDate[2], $iniDate[0]);
  18. $end_date = gregoriantojd($endDate[1], $endDate[2], $endDate[0]);
  19. $dif = $end_date - $start_date;
  20. return $dif;
  21. }
  22. include ('../../../connect.php');
  23. if ($_GET['data_poczatkowa'] != null && $_GET['data_koncowa'] != null) {
  24. $od = $_GET['data_poczatkowa'];
  25. $do = $_GET['data_koncowa'];
  26. $wyrobisko = $_GET['wyrobisko'];
  27.  
  28. $query = mysql_query("SELECT id_skladowej_wyrobiska FROM skladowe_wyrobisk WHERE id_wyrobiska = $wyrobisko");
  29. while ($row = mysql_fetch_array($query)) {
  30. $skladowe .= $row['id_skladowej_wyrobiska'] . ", ";
  31. }
  32.  
  33. $skladowe = rtrim($skladowe, ", ");
  34.  
  35. $query1 = mysql_query("SELECT DISTINCT wzrosty_zmianowe.id_wzrostu_zmianowego FROM wzrosty_zmianowe, powiazanie_wzrostow, szczegoly_wzrostow WHERE czy_koniec = '1' AND wzrosty_zmianowe.id_wzrostu_zmianowego = powiazanie_wzrostow.id_wzrostu_zmianowego AND powiazanie_wzrostow.id_szczegolu_wzrostu = szczegoly_wzrostow.id_szczegolu_wzrostu AND szczegoly_wzrostow.id_skladowej_wyrobiska IN ($skladowe) AND szczegoly_wzrostow.od_daty >='$od' AND szczegoly_wzrostow.do_daty <= '$do' ORDER BY id_wzrostu_zmianowego DESC;");
  36. while ($row1 = mysql_fetch_array($query1)) {
  37. $wzrosty1 .= $row1['id_wzrostu_zmianowego'] . ", ";
  38. }
  39.  
  40. $wzrosty1 = rtrim($wzrosty1, ", ");
  41.  
  42. $query3 = mysql_query("SELECT id_wzrostu_zmianowego FROM powiazanie_wzrostow WHERE id_wzrostu_zmianowego IN ($wzrosty1) GROUP BY id_wzrostu_zmianowego;");
  43. while ($row3 = mysql_fetch_array($query3)) {
  44. $id_wzrostu_zmianowego = $row3['id_wzrostu_zmianowego'];
  45. echo '<table class="lista" align="center" cellpadding="3">';
  46. echo '<tr><td class="lista_kategoria_ogolne">Data / zmiana</td>';
  47. echo "<td class='lista_kategoria_ogolne'>B</td>
  48. <td class='lista_kategoria_ogolne'>C</td>
  49. <td class='lista_kategoria_ogolne'>D</td>
  50. </tr>";
  51.  
  52. $min_od_daty = mysql_query("SELECT min(od_daty) FROM szczegoly_wzrostow, powiazanie_wzrostow WHERE powiazanie_wzrostow.id_wzrostu_zmianowego = $id_wzrostu_zmianowego AND powiazanie_wzrostow.id_szczegolu_wzrostu = szczegoly_wzrostow.id_szczegolu_wzrostu");
  53. while ($row_min_od_daty = mysql_fetch_array($min_od_daty)) {
  54. $min_od = $row_min_od_daty['min(od_daty)'];
  55.  
  56. $min_od_zmiany = mysql_query("SELECT min(od_zmiany) FROM szczegoly_wzrostow, powiazanie_wzrostow WHERE powiazanie_wzrostow.id_wzrostu_zmianowego = $id_wzrostu_zmianowego AND powiazanie_wzrostow.id_szczegolu_wzrostu = szczegoly_wzrostow.id_szczegolu_wzrostu AND szczegoly_wzrostow.od_daty = '$min_od'");
  57. while ($row_min_od_zmiany = mysql_fetch_array($min_od_zmiany)) {
  58. $min_oz = $row_min_od_zmiany['min(od_zmiany)'];
  59. }
  60. }
  61. $max_do_daty = mysql_query("SELECT max(do_daty) FROM szczegoly_wzrostow, powiazanie_wzrostow WHERE powiazanie_wzrostow.id_wzrostu_zmianowego = $id_wzrostu_zmianowego AND powiazanie_wzrostow.id_szczegolu_wzrostu = szczegoly_wzrostow.id_szczegolu_wzrostu");
  62. while ($row_max_do_daty = mysql_fetch_array($max_do_daty)) {
  63. $max_do = $row_max_do_daty['max(do_daty)'];
  64.  
  65. $max_do_zmiany = mysql_query("SELECT max(do_zmiany) FROM szczegoly_wzrostow, powiazanie_wzrostow WHERE powiazanie_wzrostow.id_wzrostu_zmianowego = $id_wzrostu_zmianowego AND powiazanie_wzrostow.id_szczegolu_wzrostu = szczegoly_wzrostow.id_szczegolu_wzrostu AND szczegoly_wzrostow.do_daty = '$max_do'");
  66. while ($row_max_do_zmiany = mysql_fetch_array($max_do_zmiany)) {
  67. $max_dz = $row_max_do_zmiany['max(do_zmiany)'];
  68. }
  69. }
  70. $sekundy = (strtotime($max_do) - strtotime($min_od));
  71. $dni = $sekundy/86400;
  72. $zmiany_na_dzien = '3';
  73.  
  74. $zmiany = ($dni*$zmiany_na_dzien) - 3;
  75.  
  76. if($min_oz == "1"){
  77. $dodaj = "3";
  78. }
  79. if($min_oz == "2"){
  80. $dodaj = "2";
  81. }
  82. if($min_oz == "3"){
  83. $dodaj = "1";
  84. }
  85.  
  86. if($max_dz == "1"){
  87. $dodaj1 = "1";
  88. }
  89. if($max_dz == "2"){
  90. $dodaj1 = "2";
  91. }
  92. if($max_dz == "3"){
  93. $dodaj1 = "3";
  94. }
  95.  
  96. $suma = $dodaj + $zmiany + $dodaj1;
  97. $s = $s + $suma;
  98.  
  99. $i = 0;
  100. $g = rtrim($g, ", ");
  101. $geo = explode(", ", $g);
  102. $nowe = array();
  103.  
  104. $q = mysql_query("SELECT od_daty, od_zmiany, do_daty, do_zmiany, id_stanu_zagrozenia FROM szczegoly_wzrostow, powiazanie_wzrostow WHERE powiazanie_wzrostow.id_wzrostu_zmianowego = $id_wzrostu_zmianowego AND powiazanie_wzrostow.id_szczegolu_wzrostu = szczegoly_wzrostow.id_szczegolu_wzrostu;");
  105. while ($r = mysql_fetch_array($q)) {
  106. $od_d = $r['od_daty'];
  107. $do_d = $r['do_daty'];
  108. $od_z = $r['od_zmiany'];
  109. $do_z = $r['do_zmiany'];
  110. $idsz = $r['id_stanu_zagrozenia'];
  111.  
  112. $ww .= $od_d . " " . $od_z . " " . $do_d . " " . $do_z . " " . $idsz . ",";
  113. }
  114.  
  115. $re = explode(",", $ww);
  116. $licz = count($re) - 1;
  117.  
  118. for ($i = 0; $i <= $licz; $i++) {
  119. $p = explode(" ", $re[$i]);
  120.  
  121. for ($j = $p[0]; $j <= $p[2]; $j++) {
  122. if ($j != $p[0] && $j != $p[2]) {
  123. array_push($nowe, $j . " A " . $p[4]);
  124. array_push($nowe, $j . " B " . $p[4]);
  125. array_push($nowe, $j . " C " . $p[4]);
  126. }
  127. if ($j == $p[0] && $j == $p[2]) {
  128. if ($p[1] == 1 && $p[3] == 1) {
  129. array_push($nowe, $j . " A " . $p[4]);
  130. }
  131. if ($p[1] == 1 && $p[3] == 2) {
  132. array_push($nowe, $j . " A " . $p[4]);
  133. array_push($nowe, $j . " B " . $p[4]);
  134. }
  135. if ($p[1] == 1 && $p[3] == 3) {
  136. array_push($nowe, $j . " A. " . $p[4]);
  137. array_push($nowe, $j . " B " . $p[4]);
  138. array_push($nowe, $j . " C " . $p[4]);
  139. }
  140. if ($p[1] == 2 && $p[3] == 2) {
  141. array_push($nowe, $j . " B " . $p[4]);
  142. }
  143. if ($p[1] == 2 && $p[3] == 3) {
  144. array_push($nowe, $j . " B " . $p[4]);
  145. array_push($nowe, $j . " C " . $p[4]);
  146. }
  147. if ($p[1] == 3 && $p[3] == 3) {
  148. array_push($nowe, $j . " C " . $p[4]);
  149. }
  150. }
  151. if ($j == $p[0] && $j != $p[2]) {
  152. if ($p[1] == 1) {
  153. array_push($nowe, $j . " A " . $p[4]);
  154. array_push($nowe, $j . " B " . $p[4]);
  155. array_push($nowe, $j . " C " . $p[4]);
  156. }
  157. if ($p[1] == 2) {
  158. array_push($nowe, $j . " B " . $p[4]);
  159. array_push($nowe, $j . " C " . $p[4]);
  160. }
  161. if ($p[1] == 3) {
  162. array_push($nowe, $j . " C " . $p[4]);
  163. }
  164. }
  165. if ($j != $p[0] && $j == $p[2]) {
  166. if ($p[3] == 1) {
  167. array_push($nowe, $j . " A " . $p[4]);
  168. }
  169. if ($p[3] == 2) {
  170. array_push($nowe, $j . " A " . $p[4]);
  171. array_push($nowe, $j . " B " . $p[4]);
  172. }
  173. if ($p[3] == 3) {
  174. array_push($nowe, $j . " A " . $p[4]);
  175. array_push($nowe, $j . " B " . $p[4]);
  176. array_push($nowe, $j . " C " . $p[4]);
  177. }
  178. }
  179. }
  180. }
  181.  
  182. $sum = count($nowe) - 1;
  183. for ($e = 0; $e <= $sum; $e++) {
  184. $n[] = explode(" ", $nowe[$e]);
  185. }
  186.  
  187. usort($n, "cmp");
  188. $m = array();
  189. for ($q = 0; $q <= $sum; $q++) {
  190. if ($n[$q][0] == $n[$q + 1][0] && $n[$q][1] == $n[$q + 1][1] && $n[$q][2] == $n[$q +1][2]) {
  191. unset($n[$q]);
  192. } else {
  193. array_push($m, $n[$q][0] . " " . $n[$q][1] . " " . $n[$q][2]);
  194. }
  195. }
  196. ?>
  197.  


  1. <?php
  2. $sum1 = count($m) - 1;
  3. for ($x = 0; $x <= $sum1; $x++) {
  4. $z[] = explode(" ", $m[$x]);
  5. }
  6.  
  7. $b = 0;
  8. $c = 0;
  9. $d = 0;
  10.  
  11. for ($f = 0; $f <= $sum1; $f++) {
  12. if ($z[$f][0] == $z[$f + 1][0] && $z[$f][1] == $z[$f + 1][1]) {
  13. echo "<tr><td class='lista'>" . $z[$f][0] . " / " . $z[$f][1];
  14. $stan = max($z[$f][2], $z[$f + 1][2]);
  15. if ($stan == 2) {
  16. $b = $b + 1;
  17. echo "<td class='lista_be'>1</td><td class='lista'>-</td><td class='lista'>-</td></tr>";
  18. }
  19. if ($stan == 3) {
  20. $c = $c + 1;
  21. echo "<td class='lista'>-</td><td class='lista_ce'>1</td><td class='lista'>-</td></tr>";
  22. }
  23. if ($stan == 4) {
  24. $d = $d + 1;
  25. echo "<td class='lista'>-</td><td class='lista'>-</td><td class='lista_de'>1</td></tr>";
  26. }
  27. $f++;
  28. } else {
  29. echo "<tr><td class='lista'>" . $z[$f][0] . " / " . $z[$f][1];
  30. $stan = $z[$f][2];
  31. if ($stan == 2) {
  32. $b = $b + 1;
  33. echo "<td class='lista_be'>1</td><td class='lista'>-</td><td class='lista'>-</td></tr>";
  34. }
  35. if ($stan == 3) {
  36. $c = $c + 1;
  37. echo "<td class='lista'>-</td><td class='lista_ce'>1</td><td class='lista'>-</td></tr>";
  38. }
  39. if ($stan == 4) {
  40. $d = $d + 1;
  41. echo "<td class='lista'>-</td><td class='lista'>-</td><td class='lista_de'>1</td></tr>";
  42. }
  43. }
  44. }
  45. echo "<tr><td class='lista' align='right'><b>Podsumowanie : </b></td><td class='lista'><b>" .
  46. $b . "</b></td><td class='lista'><b>" . $c . "</b></td><td class='lista'><b>" .
  47. $d . "</b></td></tr></table>";
  48. echo "<br>";
  49. $_SESSION['b'] = $_SESSION['b'] +$b;
  50. $_SESSION['c'] = $_SESSION['c'] +$c;
  51. $_SESSION['d'] = $_SESSION['d'] +$d;
  52. $suma_b = $_SESSION['b'];
  53. $suma_c = $_SESSION['c'];
  54. $suma_d = $_SESSION['d'];
  55.  
  56. unset($nowe);
  57. unset($m);
  58. unset($n);
  59. unset($z);
  60. unset($ww);
  61. $f=0;
  62. }
  63.  
  64. $query2 = mysql_query("SELECT nazwa_wyrobiska FROM wyrobiska WHERE id_wyrobiska = $wyrobisko;");
  65. while ($row2 = mysql_fetch_array($query2)) {
  66. $w = $row2['nazwa_wyrobiska'];
  67. $ilosc = explode(", ", $wzrosty1);
  68. $ile = count($ilosc);
  69. echo "<table class='lista'><tr><td class='lista'>W wybranym okresie w <b>" . $w ."</b>";
  70.  
  71. if(strlen($ile) == 1){
  72. if($ile == 1){
  73. echo " wystąpił <b>".$ile. "</b> wzrost zmianowy, który trwał <b>".$s."</b> zmian.<br>Stan B wystąpił x razy i trwał <b>".$_SESSION['b']."</b> zmian<br>Stan C wystąpił x razy i trwał <b>".$_SESSION['c']."</b> zmian<br>Stan D wystąpił x razy i trwał <b>".$_SESSION['d']."</b> zmian<br>";
  74. }
  75. if($ile == 2 || $ile == 3 || $ile == 4){
  76. echo " wystąpiły <b>".$ile. "</b> wzrosty zmianowe, które trwały łącznie <b>".$s."</b> zmian.<br>Stan B wystąpił x razy i trwał <b>".$_SESSION['b']."</b> zmian<br>Stan C wystąpił x razy i trwał <b>".$_SESSION['c']."</b> zmian<br>Stan D wystąpił x razy i trwał <b>".$_SESSION['d']."</b> zmian<br>";
  77. }
  78. }
  79.  
  80. echo "</td></tr></table>";
  81. }
  82. } else {
  83. ?>
  84. <form>
  85. <input type="hidden" name="user" value="<?php echo $user; ?>" />
  86. <table>
  87. <tr>
  88. <td>Wyrobisko :&nbsp;</td><td>
  89.  
  90. <select id="wyrobisko" class="lista"><option value="0">-- wybierz --</option>
  91. <?php
  92.  
  93. $query = mysql_query("SELECT * FROM wyrobiska ORDER BY id_wyrobiska ASC;");
  94. while ($row = mysql_fetch_array($query)) {
  95. echo "<option value='" . $row['id_wyrobiska'] . "'>" . $row['nazwa_wyrobiska'] .
  96. "</option>";
  97. }
  98. ?>
  99. </select>
  100. </td>
  101. </tr>
  102. <tr>
  103. <td>Data początkowa :&nbsp;</td><td><input type="text" id='data_poczatkowa' maxlength="10" size="10"></td>
  104. </tr>
  105. <tr>
  106. <td>Data końcowa :&nbsp;</td><td><input type="text" id='data_koncowa' maxlength="10" size="10" value="<?php echo
  107. date('Y-m-d'); ?>"></td>
  108. </tr>
  109. <tr>
  110. <td colspan="2" align='center'><br><input type="button" value="Pokaż" onclick='wzrosty_z_okresu();'>&nbsp;&nbsp;&nbsp;<input type="reset" value="Wyczyść"></td>
  111. </table>
  112. </form>
  113.  
  114. <?php
  115. }
  116. ?>


Ten post edytował slawek3422 20.04.2010, 18:36:33
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 28.12.2025 - 03:42