Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Problem z sumowaniem
smok55453
post 30.12.2014, 15:04:02
Post #1





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 29.09.2013

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


Witam. Mam znowu problem.
Mam taką oto tabelę:tabela
Która jest generowana przez taki kod:
  1. // Skrypty wyświetlające przepisy
  2. $result = mysql_query("select * from przepisy");
  3. if (!$result) {
  4. die('Query failed: ' . mysql_error());
  5. }
  6. else
  7. {
  8.  
  9. }
  10. //Nagłówki tabeli
  11. echo '<table cellpadding="4" border="1"';
  12. echo '<tr>';
  13. echo '<td>Wybierz przepis</td>';
  14. for ($i=1;$i < mysql_num_fields($result);$i++) {
  15. $meta = mysql_fetch_field($result, $i);
  16. $nameArray[$i] = $meta->name;
  17. echo '<td>'.$nameArray[$i].'</td>';
  18. }
  19. echo '<td>Ilość</td>';
  20. echo '</tr>';
  21.  
  22. //Nazwy dla selecta
  23. for ($j=1;$j < mysql_num_fields($result);$j++) {
  24.  
  25. $meta = mysql_fetch_field($result, $j);
  26. $nameArrays[$j] = $meta->name;
  27. }
  28. //Nazwy przepisów dla inputa
  29. $wynik = mysql_query("SELECT * FROM przepisy") or die('Błąd zapytania: '.mysql_error());
  30. if(mysql_num_rows($wynik) > 0) {
  31. $ilosc = 0;
  32. while($r = mysql_fetch_assoc($wynik))
  33. {
  34. $id = $r['ID'];
  35. $tablica_id_przepisow[$ilosc] = $id;
  36. $nazwa = $r['nazwa'];
  37. $tablica_nazw_przepisow[$ilosc] = $nazwa;
  38. $ilosc++;
  39. }
  40. }
  41.  
  42. //Wartosci pól
  43. $nazwy_pol_dla_selecta = implode(",",$nameArrays);
  44. $zapytanie_3 = "SELECT $nazwy_pol_dla_selecta FROM przepisy";
  45. $idzapytania = mysql_query($zapytanie_3);
  46. echo '<tr>';
  47. echo '<form action="" method="post" id="idForm">';
  48. $ilosc3 = 0;
  49. while ($wiersz = mysql_fetch_row($idzapytania))
  50. {
  51. echo '<td><center><input type="checkbox" name="formDoor[]" value="'.$tablica_id_przepisow[$ilosc3].'" onclick="" /></center></td>';
  52. echo '<td>'.$wiersz[0].'</td>';
  53. for($licz=1;$licz < mysql_num_fields($idzapytania);$licz++)
  54. {
  55. echo '<td>'.$wiersz[$licz].'</td>';
  56. }
  57.  
  58. echo '<td><input type="text" name="'.$tablica_nazw_przepisow[$ilosc3].'" value="0"/></td></tr><tr>';
  59. $ilosc3++;
  60. }

Teraz gdy użytkownik wejdzie na tę stronę, wybierze kilka przepisów i wpisze ilość to chciałbym aby po naciśnięciu przycisku Oblicz wyświetliła się tabela w która będzię wyglądała podobnie do tej: klik
z tym, że pod tymi nagłówkami ma się wyświetlić suma wszystkich potrzebnych produktów na daną ilość wszystkich wybranych przepisów. W jaki sposób mam się za to zabrać. Tylko proszę aby mi to wyjaśnić łopatologicznie.
Go to the top of the page
+Quote Post
com
post 30.12.2014, 15:43:49
Post #2





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


daj kod który generuje Ci te tabelkę po wybraniu smile.gif
Go to the top of the page
+Quote Post
smok55453
post 30.12.2014, 16:02:44
Post #3





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 29.09.2013

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


Napisałem coś takiego. Ale nie działa. Wiem dlaczego ale nie umiem tego naprawić:
  1. //Sprawdzenie ile pól zostało zaznaczonych
  2. $o=0;
  3. foreach($_POST as $k=>$v)
  4. {
  5.  
  6. $tablica_nazw_licz[$o] = $k;
  7. $tablica_wartosci_licz[$o] = $v;
  8. $o++ ;
  9. }
  10. $aDoor = $_POST['formDoor'];
  11. if(empty($aDoor))
  12. {
  13.  
  14. }
  15. else
  16. {
  17. $N = count($aDoor);
  18. for($i=0; $i < $N; $i++)
  19. {
  20. $tablica_wybranych_pol[$i] = htmlspecialchars($aDoor[$i] );
  21. }
  22.  
  23. $tablica_wybranych_pol_dla_selecta = implode(",",$tablica_wybranych_pol); //ID pól dla selecta
  24. }
  25.  
  26. //Funkcja wyświetlająca nagłówki tabeli.
  27. echo 'W tabeli pokazana jest potrzebna ilość produktów dla wybranych placków w odpowiedniej ilości.<br>';
  28. echo '<table cellpadding="4" border="1"';
  29. echo '<tr>';
  30. for ($i=0;$i < mysql_num_fields($result);$i++) {
  31. $meta = mysql_fetch_field($result, $i);
  32. $nameArray[$i] = $meta->name;
  33. echo '<td>'.$nameArray[$i].'</td>';
  34. }
  35. echo '</tr>';
  36. // nazwy dla select sum
  37. for($i=0;$i<$N;$i++)
  38. {
  39. $result1 = mysql_query("select * from produkty where ID=".$tablica_wybranych_pol_dla_selecta[$i]);
  40. $meta = mysql_fetch_field($result1, $i);
  41. $nameArrayss[$i] = $meta->name;
  42. }
  43.  
  44. //Tworzenie tablicy wartosci dla wybranych pól
  45. echo '<tr>';
  46. for($i=0;$i < $N;$i++)
  47. {
  48. $sum = mysql_query("select sum(".$nameArrayss[$i].") from przepisy where ID=".$tablica_wybranych_pol_dla_selecta[$i]."") or die('Błąd zapytania: '.mysql_error());
  49. while ($wiersz = mysql_fetch_row($sum))
  50. {
  51. echo '<td>'.$wiersz[$i].'</td>';
  52. }
  53. }
  54. echo '</tr>';
  55. echo '</table>';
Go to the top of the page
+Quote Post
com
post 30.12.2014, 16:14:59
Post #4





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


co znajduje sie w $_POST['formDoor']; ?
Go to the top of the page
+Quote Post
smok55453
post 30.12.2014, 16:17:48
Post #5





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 29.09.2013

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


Formularz z polami typu checkbox:
  1. while ($wiersz = mysql_fetch_row($idzapytania))
  2. {
  3. echo '<td><center><input type="checkbox" name="formDoor[]" value="'.$tablica_id_przepisow[$ilosc3].'" onclick="" /></center></td>';
  4. echo '<td>'.$wiersz[0].'</td>';
  5. for($licz=1;$licz < mysql_num_fields($idzapytania);$licz++)
  6. {
  7. echo '<td>'.$wiersz[$licz].'</td>';
  8. }
  9.  
  10. echo '<td><input type="text" name="'.$tablica_nazw_przepisow[$ilosc3].'" value="0"/></td></tr><tr>';
  11. $ilosc3++;
  12. }


Ten post edytował smok55453 30.12.2014, 16:18:11
Go to the top of the page
+Quote Post
com
post 30.12.2014, 16:28:02
Post #6





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


priv smile.gif
Go to the top of the page
+Quote Post
smok55453
post 30.12.2014, 23:50:50
Post #7





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 29.09.2013

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


Mam trzy tablice np:
Tablica 1:
0 => 3
1 => 2
2 => 1
3 => 0
4 => 0
5 => 0
6 => 0
7 => 0

Tablica 2:
0 => 4
1 => 1
2 => 3
3 => 0
4 => 8
5 => 0
6 => 0
7 => 0

Tablica 3:
0 => 2
1 => 3
2 => 4
3 => 0
4 => 0
5 => 1
6 => 0
7 => 0

Jakiego skryptu mam użyć aby sumy pól np: (Tablica1[0 => 3] + Tablica2[0 => 4] + Tablica3[0 =>2]) zapisać do nowej tablicy?
Aby było że suma[0] = 9 tak jak to wychodzi z powyższego działania

Ten post edytował smok55453 30.12.2014, 23:52:20
Go to the top of the page
+Quote Post
SpiritCode
post 31.12.2014, 08:50:33
Post #8





Grupa: Zarejestrowani
Postów: 167
Pomógł: 35
Dołączył: 29.12.2014
Skąd: Otwock

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


Może zwykły for?
  1. $suma = array();
  2. for($i=0;$i<=7;$i++)
  3. {
  4. $suma[$i] = $tablica1[$i]+$tablica2[$i]+$tablica3[$i];
  5. }
Go to the top of the page
+Quote Post
smok55453
post 31.12.2014, 09:43:13
Post #9





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 29.09.2013

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


Tylko że ilość tablic zmienia sie zależnie od liości przepisów w bazie
Go to the top of the page
+Quote Post
SpiritCode
post 31.12.2014, 10:11:09
Post #10





Grupa: Zarejestrowani
Postów: 167
Pomógł: 35
Dołączył: 29.12.2014
Skąd: Otwock

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


To może coś takiego?
http://ideone.com/D6xM7B
Wtedy nie ma znaczenia ile masz tablic. Tylko te tablice muszą być w jednej tablicy (ciekawe jak bardzo do brzmi bez sensu)

edit: mała poprawka
zamień
  1. $i<=sizeof($tab)

na
  1. $i<sizeof($tab)


Ten post edytował SpiritCode 31.12.2014, 10:15:40
Go to the top of the page
+Quote Post
smok55453
post 31.12.2014, 10:26:24
Post #11





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 29.09.2013

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


Dałem i wyświetla się coś takiego:

Array ( [0] => 0 )

co nie jest tablicą kilku tablic

to kod:
  1. foreach($tablica_wierszy as $tab)
  2. {
  3. for($i=0;$i<sizeof($tab); $i++)
  4. {
  5. if(isset($suma[$i]))
  6. {
  7. $suma[$i]+=$tab[$i];
  8. }
  9. else
  10. {
  11. $suma[$i]=$tab[$i];
  12. }
  13. }
  14. }
Go to the top of the page
+Quote Post
SpiritCode
post 31.12.2014, 10:34:50
Post #12





Grupa: Zarejestrowani
Postów: 167
Pomógł: 35
Dołączył: 29.12.2014
Skąd: Otwock

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


Pokaż z deklaracją $tablica_wierszy
Go to the top of the page
+Quote Post
smok55453
post 31.12.2014, 10:37:19
Post #13





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 29.09.2013

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


  1. //Tworzenie tablic z wartosciami pól
  2. $nazwy_pol_dla_selecta = implode(",",$nameArrays);
  3. $idzapytania = mysql_query("SELECT $nazwy_pol_dla_selecta FROM przepisy");
  4. $ilosc3 = 0;
  5. $xxx = $k+1;
  6. while ($wiersz = mysql_fetch_row($idzapytania))
  7. {
  8. for($licz=1;$licz < mysql_num_fields($idzapytania);$licz++)
  9. {
  10. if($licz % 8 == 0)
  11. {
  12. $wiersz1[$ilosc3] = $wiersz[$licz].$wiersz1;
  13. }
  14. else
  15. {
  16. $wiersz1[$ilosc3] = $wiersz[$licz];
  17. }
  18. $ilosc3++;
  19. }
  20. }
  21.  
  22. //Tworzenie tablicy dla tablic wartości pól
  23. $ile_przepisow2 = $ile_przepisow - 1;
  24. for($i=0;$i <= $ile_przepisow2;$i++)
  25. {
  26. for($ii=0;$ii < $k;$ii++)
  27. {
  28. $tablica_wierszy[$i] = $tablica_wierszy.$wiersz[$ii];
  29. }
  30. }
  31.  
  32. //Tworzenie tablicy pod sumowanie
  33. foreach($tablica_wierszy as $tab)
  34. {
  35. for($i=0;$i<sizeof($tab); $i++)
  36. {
  37. if(isset($suma[$i]))
  38. {
  39. $suma[$i]+=$tab[$i];
  40. }
  41. else
  42. {
  43. $suma[$i]=$tab[$i];
  44. }
  45. }
  46. }


Ten post edytował smok55453 31.12.2014, 10:37:50
Go to the top of the page
+Quote Post
SpiritCode
post 31.12.2014, 10:41:03
Post #14





Grupa: Zarejestrowani
Postów: 167
Pomógł: 35
Dołączył: 29.12.2014
Skąd: Otwock

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


nie widzę deklaracji tablicy $suma
Go to the top of the page
+Quote Post
smok55453
post 31.12.2014, 10:42:59
Post #15





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 29.09.2013

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


zapomniałem o niej. Dodałem i dalej to samo
Go to the top of the page
+Quote Post
SpiritCode
post 31.12.2014, 10:44:53
Post #16





Grupa: Zarejestrowani
Postów: 167
Pomógł: 35
Dołączył: 29.12.2014
Skąd: Otwock

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


w linii 33 daj var_dump($tablica_wierszy) i pokaż
Go to the top of the page
+Quote Post
smok55453
post 31.12.2014, 10:46:09
Post #17





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 29.09.2013

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


array(4) { [0]=> string(5) "Array" [1]=> string(5) "Array" [2]=> string(5) "Array" [3]=> string(5) "Array" }
Go to the top of the page
+Quote Post
SpiritCode
post 31.12.2014, 10:48:43
Post #18





Grupa: Zarejestrowani
Postów: 167
Pomógł: 35
Dołączył: 29.12.2014
Skąd: Otwock

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


To jest tablica stringów wink.gif

edit:
  1. for($i=0;$i <= $ile_przepisow2;$i++)
  2. {
  3. for($ii=0;$ii < $k;$ii++)
  4. {
  5. $tablica_wierszy[$i] = $tablica_wierszy.$wiersz[$ii];
  6. }
  7. }

co to jest?

Ten post edytował SpiritCode 31.12.2014, 10:49:31
Go to the top of the page
+Quote Post
smok55453
post 31.12.2014, 10:49:47
Post #19





Grupa: Zarejestrowani
Postów: 64
Pomógł: 0
Dołączył: 29.09.2013

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


a jak mam zapisać ten kod:
  1. $ile_przepisow2 = $ile_przepisow - 1;
  2. for($i=0;$i <= $ile_przepisow2;$i++)
  3. {
  4. for($ii=0;$ii < $k;$ii++)
  5. {
  6. $tablica_wierszy[$i] = $tablica_wierszy.$wiersz[$ii];
  7. }
  8. }

żeby mi stworzył odpowiednią tablica?

edit.

To niby miał być kod który stworzy mi tablice z wartościami z innej tablicy. Tej:

  1. $nazwy_pol_dla_selecta = implode(",",$nameArrays);
  2. $idzapytania = mysql_query("SELECT $nazwy_pol_dla_selecta FROM przepisy");
  3. $ilosc3 = 0;
  4. $xxx = $k+1;
  5. while ($wiersz = mysql_fetch_row($idzapytania))
  6. {
  7. for($licz=1;$licz < mysql_num_fields($idzapytania);$licz++)
  8. {
  9. if($licz % 8 == 0)
  10. {
  11. $wiersz1[$ilosc3] = $wiersz[$licz].$wiersz1;
  12. }
  13. else
  14. {
  15. $wiersz1[$ilosc3] = $wiersz[$licz];
  16. }
  17. $ilosc3++;
  18. }
  19. }


Ten post edytował smok55453 31.12.2014, 10:51:11
Go to the top of the page
+Quote Post
SpiritCode
post 31.12.2014, 10:53:48
Post #20





Grupa: Zarejestrowani
Postów: 167
Pomógł: 35
Dołączył: 29.12.2014
Skąd: Otwock

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


Jesli $wiersz ma strukturę taką jak pisałeś, czyli:
Cytat
Tablica 3:
0 => 2
1 => 3
2 => 4
3 => 0
4 => 0
5 => 1
6 => 0
7 => 0

to wystarczy Ci $tablica_wierszy[] = $wiersz

edit: pokaż jak w linii 21 wygląda $wiersz var_dump($wiersz)

Ten post edytował SpiritCode 31.12.2014, 10:57:19
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 31.07.2025 - 08:24