Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] Sumowanie poszczególnych wierszy tabeli
zaworek
post
Post #1





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 27.06.2006

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


Witam,

nie mogę poradzić sobie z sumowaniem wybranych wierszy tabeli, która ma postać

Kod
id|nr1|nr2|nr3|wynik1|wynik2

(nr1, nr2, nr3 oraz wynik1, wynik2 to zmienne typu float)

Chciałbym dla całej tabeli uzyskać taki oto wynik:

wynik1 = nr1+nr2
wynik2 = nr1+nr2+nr3


wyświetlam wszystko przez poniższy kod

  1. $uchwyt=mysql_connect('host','login','pas') or die('Blad polaczenia');
  2. mysql_select_db('baza') or die('Nie mozna wybrac bazy');
  3. $link=mysql_query("SELECT * FROM tabela");
  4. while($wiersz=mysql_fetch_array($link))
  5. {
  6. echo '<tr>
  7. <td align="center">'.$wiersz['nr1'].'</td>
  8. <td align="center">'.$wiersz['nr2'].'</td>
  9. <td align="center">'.$wiersz['nr3'].'</td>
  10. <td align="center">'.$wiersz['wynik1'].'</td>
  11. <td align="center">'.$wiersz['wynik2'].'</td>
  12. </tr>';
  13. }


Dla wynik1 próbowałem napisać jak poniżej ale bez rezultatu.

  1. $q = mysql_query("SELECT nr1+nr2 AS wynik1 FROM tabela") or die(mysql_error());
  2. while($r = mysql_fetch_assoc($q))
  3. {
  4. mysql_query("UPDATE tabela SET wynik1 = '.$r[wynik1].' WHERE id = '.$r[id].'");
  5. }


Mógłby ktoś pomóc i naprowadzić mnie na rozwiązanie?

Ten post edytował zaworek 6.02.2012, 15:20:14
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. UPDATE tabela SET wynik1=nr1 + nr2, wynik2=nr1 + nr2 + nr3

I juz
Go to the top of the page
+Quote Post
sadistic_son
post
Post #3





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Moim zdaniem masz zły tok rozumowania. Kolumny wynik1 i wynik2 są w ogóle Tobie niepotrzebne. Skoro to tylko sumy poprzednich pól to można, a wręcz należy je pominąć. Po co zapisywać w bazie coś co jest inną postacią (sumą) innych pól? Możesz zawsze, w przypadku potrzeby użycia wynik1 wyciągnąć sobie z bazy n1 i nr2 i zsumować je w php.

Ale jeśli już się uparłeś żeby tak było to alternatywne rozwiązanie dla tego, które podał nospor masz poniżej ; to lekko zmodyfikowany Twój kod z drugiego bloku:

  1. $q = mysql_query("SELECT id,nr1, nr2 FROM tabela") or die(mysql_error());
  2. while($r = mysql_fetch_assoc($q))
  3. {
  4. $wynik1=$r['nr1']+$r['nr2'];
  5. mysql_query("UPDATE tabela SET wynik1 = $r[wynik1] WHERE id = $r[id]");
  6. }


Ten post edytował sadistic_son 6.02.2012, 15:35:09
Go to the top of the page
+Quote Post
zaworek
post
Post #4





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 27.06.2006

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


Cytat(nospor @ 6.02.2012, 15:24:16 ) *
  1. UPDATE tabela SET wynik1=nr1 + nr2, wynik2=nr1 + nr2 + nr3

I juz


Dzięki @nospor
Naprowadź mnie jeszcze jak to zaimplementować do mojego kodu z wyświetlaniem, tak aby update wykonał się w pętli (dla wszystkich id).
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Kod co ci podałem masz wykonać tylko raz - bez żadnej pętli - bo i po co. On przeleci po wszystkich rekordach bez petli
Go to the top of the page
+Quote Post
zaworek
post
Post #6





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 27.06.2006

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


Cytat(nospor @ 6.02.2012, 15:37:55 ) *
Kod co ci podałem masz wykonać tylko raz - bez żadnej pętli - bo i po co. On przeleci po wszystkich rekordach bez petli


Z SQL miałem mało do czynienia. Wkleiłem jak poniżej ale nie zmienia wartości w kolumnie wynik1, wynik2

  1. $uchwyt=mysql_connect('host','login','pas') or die('Blad polaczenia');
  2. mysql_select_db('baza') or die('Nie mozna wybrac bazy');
  3. mysql_query("UPDATE tabela SET wynik1=nr1 + nr2, wynik2=nr1 + nr2 + nr3");
  4. $link=mysql_query("SELECT * FROM tabela");
  5. while($wiersz=mysql_fetch_array($link))
  6. {
  7. echo '<tr>
  8. <td align="center">'.$wiersz['nr1'].'</td>
  9. <td align="center">'.$wiersz['nr2'].'</td>
  10. <td align="center">'.$wiersz['nr3'].'</td>
  11. <td align="center">'.$wiersz['wynik1'].'</td>
  12. <td align="center">'.$wiersz['wynik2'].'</td>
  13. </tr>';
  14. }
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




mysql_query("UPDATE tabela SET wynik1=nr1 + nr2, wynik2=nr1 + nr2 + nr3") or die(mysql_error());
Go to the top of the page
+Quote Post
zaworek
post
Post #8





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 27.06.2006

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


Jednak działa (IMG:style_emoticons/default/smile.gif) Pomyliłem się w nazwie jednej z kolumn.
Dziekuję za pomoc @nospor.
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No ale tak jak pisał poprzednik, na chwilę obecną jest to bez sensu. Tworzysz dwie dodatkowe kolumny tylko po to, by pobrać z nich wynik przy wyświetlaniu. Przecież równie dobrze możesz to zsumować w php przed wyświetleniem.

No chyba, że ma ci to służyć jeszcze czemuś.
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 Aktualny czas: 22.08.2025 - 22:19