Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] Zmniejszenie wartosc rekordu
kamilo818
post
Post #1





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.01.2014

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


Pewnie coś banalnego ale nie moge tego przejść

Chce zmniejszyć wartość rekordu w tabeli o ilość zakupionego towaru
  1. mysql_query("UPDATE produkty_info SET ilosc = 'ilosc'-$ilosc WHERE id='$nr' AND kolor='$kolor' AND rozmiar='$rozmiar'");
  2. mysql_query("UPDATE produkty SET ilosc_kupionych = 'ilosc_kupionych'+$ilosc WHERE nr='$nr'");


Jak zwiększenie ilości kupinych działa bez zarzutu to zmniejszenie nie.
Mam to w pętli i w zalezności od ilości kupinych towarów. Jeśli jes to 1 rodzaj przedmiotu w ilości np 4 szt i mam na stanie 100 sztuk to po operacji mam stan -4 (minus cztery).

Jesli natomiast mam np 4 rodzaje przedmiotów po 4 szt i kazda na stanie ma po 100 szt to po operacji mam: -4, 96, 96 ,96.

pole w bazie jest INT i zmienna $ilosc też jest int.

Co jest nie tak?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
nospor
post
Post #2





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




'ilosc' - tekst ilosc
ilosc - kolumna ilosc
`ilosc` - kolumna ilosc

Ciebie chyba interesuje zmiana wartosci kolumny ilosc a nie tekstu ilosc, nieprawdaż?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kamilo818
post
Post #3





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.01.2014

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



  1. mysql_query("UPDATE produkty_info SET ilosc = ilosc-$ilosc WHERE id='$nr' AND kolor='$kolor' AND rozmiar='$rozmiar'");
  2.  


tak tez daje ten sam rezultat.
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




Ale przynajmniej operacja jest zrobiona prawidlowo....

Skoro ci nic nie zmienia, znaczy ze ten warunek
id='$nr' AND kolor='$kolor' AND rozmiar='$rozmiar'
nie jest spelniony dla zadnego rekordu.
Po co dodajesz tam kolor i rozmiar? Samo ID nie wystarczy?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kamilo818
post
Post #5





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.01.2014

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


Bo rekordów od id takich samych jest kilka a różnią sie kolorem i rozmiarem.
Np bluza niebieska rozmiar L i bluza różowa rozmiar M maja taki sam id a rożne kolory i roz.

Ale do rzeczy.
Ale tak jak pisałem w 1 poście wartością ilośc sie zmieniają ale nie prawidłowo.
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




wybacz, nie doczytalem.

Bledne zmiany na pewno bylo powodem 'ilosc'.
Jesli nadal masz bledy i nadal dokladnie te same, to pokaz kod po zmianach włącznie z tą petlą, bo moze i tam cos napsules


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kamilo818
post
Post #7





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.01.2014

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


  1. foreach ($_SESSION['koszyk'] as $key => $val) {
  2. $photo = $val['photo'];
  3. $id_produktu = $val['nr'];
  4. $nazwa = $val['nazwa'];
  5. $kolor = $val['kolor'];
  6. $rozmiar = $val['rozmiar'];
  7. $ilosc = intval($val['ilosc']);
  8. $cena = $val['cena'];
  9. mysql_query("INSERT INTO zamowienia_produkty (login, id_zamowienia, id_produktu, nazwa, ilosc, kolor, rozmiar, cena, photo) VALUES ('$login' ,'$id_zamowienia', '$id_produktu', '$nazwa', '$ilosc', '$kolor', '$rozmiar', '$cena', '$photo')");
  10.  
  11. mysql_query("UPDATE produkty_info SET ilosc = ilosc-$ilosc WHERE id='$id_produktu' AND kolor='$kolor' AND rozmiar='$rozmiar'");
  12. mysql_query("UPDATE produkty SET ilosc_kupionych = ilosc_kupionych+$ilosc WHERE nr='$id_produktu'");
  13.  
  14. }


Ten post edytował kamilo818 8.10.2014, 18:03:33
Go to the top of the page
+Quote Post
nospor
post
Post #8





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




No dobra, i jaki jest teraz dokladnie problem? Bo teraz kod jest ok.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kamilo818
post
Post #9





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.01.2014

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


Od początku ten sam.
Na stanie mam 100 szt produktu danego rodzaju. Kupuje 4 tego produktu. Odejmuje te 4. I powinno zostac w ilosci 96. A w tabeli zostaje -4.

W przypadku kilku produktów różych rodzajów . Gdy kupuje na 4 po 4 sztuki z każdego. Wynikiem jest -4, 96,96,96. Czyli 3 się dobrze odejmą a 1 zle.
Go to the top of the page
+Quote Post
nospor
post
Post #10





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




Nie mozliwe. To nie moze sie zachowywac tak samo źle gdy zamiast ilosc miales 'ilosc'
Albo to sie gdzies jeszcze wykonuje, albo te zmienne $ilosc mają dziwe wyniki. Sprawdzales?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kamilo818
post
Post #11





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.01.2014

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


  1. mysql_query("UPDATE produkty_info SET ilosc = $ilosc WHERE id='$id_produktu' AND kolor='$kolor' AND rozmiar='$rozmiar'");


to się elegancko wykonuje i wartości $ilosc ładnie się uploadują do bazy.
Coś z tym odejmowaniem chyba nie tak jest :/
  1. ilosc = ilosc-$ilosc


Można by było to obejść, najpierw odczytać wartość pola ilosc z bazy i wykonać odejmowanie a sam wynik updatowac do bazy. Ale to kolejne zapytanie do bazy. I w sumie to poprzednie zapytanie powinno działać.
Go to the top of the page
+Quote Post
nospor
post
Post #12





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




To z tego w niosek ze w bazie masz takie wartosci:
0
100
100
100
smile.gif

Ewentualnie jeden produkt w tabeli $_SESSION['koszyk'] masz powielony wieleeeee razy. Prosilem byś sprawdził, ale ciągle jestem w tej kwestii olewany.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kamilo818
post
Post #13





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.01.2014

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


w bazie mam wartosci 100, 100, 100 ,100.

Nie olewam smile.gif
Element w tablicy nie jest powielany. Każdy tylko 1 raz wystepuje.


Dobra znalazłem. Wcześniej faktycznie zostawiłem błędny kod który wpisuje -4 do tablicy. Omg i tyle czasu straciłem tongue.gif

Dzięki.

Ten post edytował kamilo818 9.10.2014, 06:07:56
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #14





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

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


  1. UPDATE produkty_info pi JOIN produkty p ON p.nr=pi.id SET p.ilosc_kupionych = p.ilosc_kupionych+$ilosc , pi.ilosc = pi.ilosc-$ilosc WHERE pi.id='$id_produktu' AND pi.kolor='$kolor' AND pi.rozmiar='$rozmiar'");


Ten post edytował mmmmmmm 9.10.2014, 06:19:59
Go to the top of the page
+Quote Post
kamilo818
post
Post #15





Grupa: Zarejestrowani
Postów: 250
Pomógł: 11
Dołączył: 20.01.2014

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


Cytat(mmmmmmm @ 9.10.2014, 07:19:24 ) *
  1. UPDATE produkty_info pi JOIN produkty p ON p.nr=pi.id SET p.ilosc_kupionych = p.ilosc_kupionych+$ilosc , pi.ilosc = pi.ilosc-$ilosc WHERE pi.id='$id_produktu' AND pi.kolor='$kolor' AND pi.rozmiar='$rozmiar'");


Dzięki. Nie rozumiem zapytania do końca, ale działa smile.gif
Go to the top of the page
+Quote Post

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 Aktualny czas: 22.08.2025 - 06:17