Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Update tabeli
jarek0203
post
Post #1





Grupa: Zarejestrowani
Postów: 37
Pomógł: 2
Dołączył: 1.01.2013

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


Witam. Mam funkcje dodaj która dodaje do Faktury (min. materialy, ceche materialu oraz ilosc)i automatycznie dodaje je do tabeli magazyn. Problem pojawia się gdy chce dodać ten sam material który ma tą samą ceche ponieważ ilość materiału musi się zwiększyć o daną liczbe.

W kodzie mam coś źle ze sprawdzaniem czy już istnieje materiał z taką cechą ponieważ update działa mi tylko gdy dodaje dane z ostatniej pozycji magazynu.
Nie wiem jak to zrobić żeby porównywało dane z całej tabeli.
Ktoś wie jak to naprawić ?


  1. function dodaj_f($nr,$cecha,$ilosc,$material,$data,$cena)
  2. {
  3. mysql_query("INSERT INTO faktura VALUES(0,'$cecha','$nr','$data')");
  4. mysql_query("INSERT INTO materialy VALUES(0,'$nr','$material','$ilosc','$cena')");
  5. $dane_mg=mysql_query("SELECT * FROM magazyn");
  6. while ($txt_mg = mysql_fetch_assoc($dane_mg))
  7. {
  8. $zawartosc_mg[]=$txt_mg;
  9. foreach($zawartosc_mg as $element_mg){
  10. echo(''.$element_mg['material'].', '.$element_mg['cecha'].', '.$element_mg['ilosc'].'<br>');}
  11. }
  12.  
  13. if(($material==$element_mg['material']) && ($cecha==$element_mg['cecha']))
  14. {
  15. $ilosc_suma=$ilosc+$element_mg['ilosc'];
  16. echo('UPDATE magazyn SET ilosc="'.$ilosc_suma.'" WHERE material="'.$material.'" AND cecha="'.$cecha.'"');
  17. mysql_query('UPDATE magazyn SET ilosc="'.$ilosc_suma.'" WHERE material="'.$material.'" AND cecha="'.$cecha.'"');
  18. }
  19. else{
  20. mysql_query("insert into magazyn values(0,'$material','$ilosc','$cecha')");
  21. echo("insert into magazyn values(0,'$material','$ilosc','$cecha')");
  22. }}
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mmmmmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Po update wywołaj mysql_affected_rows. Jeśli zwraca 0, o znaczy, że UPDATE się nie udał (nie zmodyfikowano żadnego rekordu - pewnie nie ma takich). Wtedy trzeba wywolać INSERT.

EDIT:
Nie musisz sam dodawać i sumować wartości.. Wystarczy że zrobisz:
  1. mysql_query('UPDATE magazyn SET ilosc=ilosc+'.intval($element_mg['ilosc']).' WHERE material="'.$material.'" AND cecha="'.$cecha.'"');
  2. // i tu to o czym wyżej pisłem:
  3. if (mysql_affected_rows()==0) mysql_query('INSERT INTO magazyn (...) ...');


Ten post edytował mmmmmmm 9.12.2013, 18:21:48
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: 11.10.2025 - 03:05