Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]sumowanie wartości z mnożeniem
Forum PHP.pl > Forum > Przedszkole
yoga
Witam.
Mam następujący problem:
W bazie danych mam 2 tabele:
Tabela zamówienia:
+----+------+-----+-----+-------+-------------+
| id | szer | wys | szt | kolor | id_klienta |
+----+------+------+----+-------+-------------+
| 1 | 1111|1111| 1 | BIA | 123 |
| 1 | 2222|2222| 3 | BIA | 123 |
| 1 | 1212|1212| 2 | BIA | 123 |
| 1 | 1000|1000| 1 | BIA | 123 |
| 1 | 1001|1001| 1 | BIA | 123 |
| 1 | 1002|1003| 1 | BIA | 124 |
+----+------+------+----+-------+-------------+

Tabela Klient
+----+--------+----------------+--------+
| id | Imie | Nazwisko | status|
+----+--------+----------------+--------+
|123 | Jan | Kowalski | 0 |
|124 | Adam | Nowak | 1 |
+----+--------+----------------+--------+

Oraz taki kod:
  1. function zapotrzebowanie() {
  2.  
  3. $q = mysql_query("SELECT * FROM zam_klient WHERE status=0 "); //Pobieranie informacji o klientach ze zleceniami do realizacji
  4. while($a = mysql_fetch_array($q)) //pętla wyciagająca zamówione przez klienta moskitiery
  5. {
  6. $q2 = mysql_query("SELECT sum(szer), sum(wys) FROM zam_item WHERE id_klienta=".$a['id']." AND kolor='BIA'"); //wyciągamy sumę szerokości i wysokości dla danego klienta i danego koloru
  7. /* $q3 = mysql_query("SELECT szt FROM zam_item WHERE id_klienta=".$a['id']." AND kolor='BIA'"); */
  8. while ($a2 = mysql_fetch_array($q2)) { //pętla przetwarzająca wszystkie zlecenia dla danego klienta
  9. $w_biale=$a2['sum(szer)'] * 0.001; //suma wszystkich szerokości w zleceniu i zmiana na m
  10. $h_biale=$a2['sum(wys)'] * 0.001; //suma wszystkich wysokości w zleceniu i zmiana na m
  11. /* $sztuk_biale=$a2['szt']; */
  12.  
  13. $suma_w_zleceniu=($w_biale + $h_biale) * 2; //obliczamy obwód moskitiery a co za tym idzie długość potrzebnego profila
  14. echo $suma_w_zleceniu; //wyświetlanie ilości profila dla danego zlecenia
  15.  
  16.  
  17. echo '<br />';
  18. }
  19. }
  20.  
  21. }


Powyższy skrypt sumuje mi wysokość i szerokość dla danego klienta lecz problem pojawia się gdy mam kilka takich samych szt. - tak jak to pokazałem w tabeli zamowienia.
Problem mam również ze zsumowaniem wszystkich wyników - nie wiem jak mogę to ugryźć.

Skrypt ma mi pomóc w oszcowaniu ile profili aluminiowych o długości 5,8m muszę zamówić aby móc zrobić wszystkie moskitiery.

Bardzo proszę o pomoc.
kpt_lucek
Kod
<?
$sql = mysql_query("SELECT * FROM `zam_item` INNER JOIN `zam_klient` ON zam_item.id_klienta = zam_klient.id WHERE zam_klient.status = 0");
        $suma = 0;
?>
        <table>
            <tr>
                <th>ID</th>
                <th>Wysokość</th>
                <th>Szerokość</th>
                <th>Sztuk</th>
                <th>Kolor</th>
                <th>Rygiel</th>
                <th>Lico</th>
            </tr>
<?
        while($row = mysql_fetch_arraY($sql, MYSQL_ASSOC))
        {
?>
            <tr>
                <td><?echo $row['id'];?></td>
                <td><?echo $row['wys'];?></td>
                <td><?echo $row['szer'];?></td>
                <td><?echo $row['szt'];?></td>
                <td><?echo $row['kolor'];?></td>
                <td><?echo $row['rygiel'];?></td>
                <td><?echo $row['lico'];?></td>
            </tr>
<?
        $suma = $suma + (($row['szer'] + $row['wys']) * $row['szt']);
        }
?>
            <tr>
                <th>Łącznie:</th>
                <td><?echo $suma;?> (<?echo $suma/1000;?>[m])</td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
                <td></td>
            </tr>
        </table>
<?
bpskiba
Skoro masz skrypt i bazę danych, to gdzie tkwi problem??



Kolega kpt_lucek ładnie napisał, ja wniosę drobne uwagi
pierwsza:
$suma = $suma + (($row['szer'] + $row['wys'])*2 * $row['szt']);
(obwód to dwie długości i dwie szerokości)
druga
$suma to suma obwodów i wcale nie znaczy, że da się wykonać wszystkie zlecenia z elementów o długości 5,8m
yoga
Dzięki lucek za pomoc.
Wszystko działa jak powinno. Pozwoliłem sobie zmodyfikować ten kod teraz wygląda to tak:
  1. function zapotrzebowanie() {
  2.  
  3.  
  4. $sql = mysql_query("SELECT * FROM `zam_item` INNER JOIN `zam_klient` ON zam_item.id_klienta = zam_klient.id WHERE zam_klient.status = 0 AND zam_item.kolor='BIA'");
  5. $suma = 0;
  6. while($row = mysql_fetch_arraY($sql, MYSQL_ASSOC))
  7. {
  8. $suma = $suma + (($row['szer'] + $row['wys']) * $row['szt']);
  9. }
  10. $ile_bialego = $suma/1000 * 2;
  11. $ile_lag_bialego = $ile_bialego / 58;
  12.  
  13. echo 'Potrzeba profilu białego: '.$ile_bialego.' m <br />';
  14. echo '<strong>Zamów '.ceil($ile_lag_bialego).' paczek profila BIAŁY</strong><br /><br />';
  15.  
  16.  
  17. $sql = mysql_query("SELECT * FROM `zam_item` INNER JOIN `zam_klient` ON zam_item.id_klienta = zam_klient.id WHERE zam_klient.status = 0 AND zam_item.kolor='CBR'");
  18. $suma = 0;
  19. while($row = mysql_fetch_arraY($sql, MYSQL_ASSOC))
  20. {
  21. $suma = $suma + (($row['szer'] + $row['wys']) * $row['szt']);
  22. }
  23. $ile_braz = $suma/1000 * 2;
  24. $ile_lag_braz = $ile_braz / 58;
  25.  
  26. echo 'Potrzeba profilu brązowego: '.$ile_braz.' m<br />';
  27. echo '<strong>Zamów '.ceil($ile_lag_braz).' paczek profila BRĄZ</strong><br /><br />';
  28.  
  29.  
  30. $sql = mysql_query("SELECT * FROM `zam_item` INNER JOIN `zam_klient` ON zam_item.id_klienta = zam_klient.id WHERE zam_klient.status = 0 AND zam_item.kolor='DOR'");
  31. $suma = 0;
  32. while($row = mysql_fetch_arraY($sql, MYSQL_ASSOC))
  33. {
  34. $suma = $suma + (($row['szer'] + $row['wys']) * $row['szt']);
  35. }
  36. $ile_orzecha = $suma/1000 * 2;
  37. $ile_lag_orzecha = $ile_orzecha / 58;
  38.  
  39. echo 'Potrzeba profilu orzech: '.$ile_orzecha.' m <br />';
  40. echo '<strong>Zamów '.ceil($ile_lag_orzecha).' paczek profila ORZECH WŁOSKI</strong><br /><br />';
  41.  
  42.  
  43.  
  44. $sql = mysql_query("SELECT * FROM `zam_item` INNER JOIN `zam_klient` ON zam_item.id_klienta = zam_klient.id WHERE zam_klient.status = 0 AND zam_item.kolor='DMA'");
  45. $suma = 0;
  46. while($row = mysql_fetch_arraY($sql, MYSQL_ASSOC))
  47. {
  48. $suma = $suma + (($row['szer'] + $row['wys']) * $row['szt']);
  49. }
  50. $ile_mahoniu = $suma/1000 * 2;
  51. $ile_lag_mahoniu = $ile_mahoniu / 58;
  52.  
  53. echo 'Potrzeba profilu mahoń: '.$ile_mahoniu.' m <br />';
  54. echo '<strong>Zamów '.ceil($ile_lag_mahoniu).' paczek profila MAHOŃ</strong><br /><br />';
  55.  
  56.  
  57.  
  58. $sql = mysql_query("SELECT * FROM `zam_item` INNER JOIN `zam_klient` ON zam_item.id_klienta = zam_klient.id WHERE zam_klient.status = 0 AND zam_item.kolor='DZD'");
  59. $suma = 0;
  60. while($row = mysql_fetch_arraY($sql, MYSQL_ASSOC))
  61. {
  62. $suma = $suma + (($row['szer'] + $row['wys']) * $row['szt']);
  63. }
  64. $ile_dab = $suma/1000 * 2;
  65. $ile_lag_dab = $ile_dab / 58;
  66.  
  67. echo 'Potrzeba profilu złoty dąb: '.$ile_dab.' m <br />';
  68. echo '<strong>Zamów '.ceil($ile_lag_dab).' paczek profila ZŁOTY DĄB</strong><br /><br />';
  69.  
  70.  
  71. }


Teraz na podstawie powyższego skryptu piszę sobie zapotrzebowanie na resztę elementów do produkcji tych moskitier.
Jeśli chodzi o drugą uwagę to chodziło mi o informację w przybliżeniu jakie mam aktualnie zapotrzebowanie na materiał.
Jeśli bym chciał pozostawiać jak najmniejszy odpad to musiałbym wprowadzic optymalizację przy cięciu a to już wyższa szkoła jazdy (przynajmniej dla mnie).

Dzięki chłopaki za pomoc. Wiszę dużego browara.
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-2025 Invision Power Services, Inc.