Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP][MYSQL]problem z poleceniem UPDATE
-Tobson-
post 30.09.2008, 20:21:03
Post #1





Goście







rzecz w tym , ze siedze siedze i naprawde juz nie wiem , jest baza sa tabele itd, jest stronka, operuje sobie na tym, robie cos na ksztal sklepu internetowego, wszystko gra poza jednym, mianowicie kompletnie nie moge sobie poradzic z tym updatem :

  1. <?php
  2. $pom=$row['ilosc_rozm_kosz'];
  3. $wynik= $pom - $losc_zam_produktow;
  4. $id_wyniku=$row['id'];
  5. $uaktualnij= " UPDATE dane_koszulek SET ilosc_rozm_kosz='$wynik' WHERE id='$id_wyniku' ";
  6. $upgrade=mysql_query($uaktualnij) or die(" blad piaty");
  7. ?>


ciągle wyświetla ten blad piaty , albo jak kombinuje z innymi zapisami itd to bledy ze skladnia, ten przyklad ktory wkleilem , wydaje mi sie najmniej konfliktowy , ale to nie znaczy ze nie probowalem innych , naprawde mam juz tego dosyc nie mam pojecia co jest nie tak, moze błąd tkwi gdzie indziej, głebiej , bede ogromnie wdzieczny za wszelkie sugestie , z gory dzieki za pomoc ! Co trzeba to dokleje i pokaże, jesli może to pomoc. Pozdro exclamation.gif
Go to the top of the page
+Quote Post
Cienki1980
post 30.09.2008, 20:22:34
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Zastosuj mysql_error" title="Zobacz w manualu PHP" target="_manual i może coś się wyjaśni.


--------------------
404
Go to the top of the page
+Quote Post
blooregard
post 30.09.2008, 20:30:29
Post #3


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Nie bardzo widzę błąd w zapytaniu, tkwi on zapewne w zmiennych wstawianych do niego. Ja w takich przypadkach robię tak:

-wyświetlam sobie na stronie kwerendę SQL (juz tę gotową), u Ciebie będzie to echo $uaktualnij; wstawione ZA linijką z kwerendą

-jeśli juz na pierwszy rzut oka widać, że coś jest nie tak (np. w miejsce spodziewanej wartości zmiennej w kwerendzie masz puste miejsce) - szukasz dalej:wyświetlasz sobie wartość zmiennej PRZED kwerendą, jeśli i tam coś jest nie tak, idziesz do miejsca, gdzie na zmiennej dokonujesz jakiejś operacji i tam ją wyświetlasz itd. Nie ma siły - w końcu znajdziesz moment powstawania błędu

-jeśli kwerenda jest ok, kopiujesz ją i wklejasz sobie bezpośrednio w okienko wykonywania zapytań SQL w phpmyadminie (zakładam, że z niego korzystasz) - i wykonujesz ją. Tak eliminujesz z kolei błędy składniowe bądź literówki w samej kwerendzie - phpmyadmin wywala błąd wraz z w miarę szczegółowym opisem

Tym sposobem jestem w stanie namierzyć 99% błędów w każdej pisanej aplikacji (reszta to literówki, drobne błędy składni itp.)

Jeśli to nie pomoże, pisz. Będziemy myślec dalej.


--------------------
Life's simple... You make choices and don't look back...
Go to the top of the page
+Quote Post
-Tobson-
post 30.09.2008, 20:45:43
Post #4





Goście







yhm, na początek poszedłem za radą Cienkiego1980 i zrobiłem tak :

  1. <?php
  2. $pom=$row['ilosc_rozm_kosz'];
  3. $wynik= $pom - $losc_zam_produktow;
  4. $id_wyniku=$row['id'];
  5. $uaktualnij= " UPDATE `dane_koszulek` SET `ilosc_rozm_kosz`='$wynik' WHERE `id`='$id_wyniku';";
  6.  
  7. echo "<BR>";
  8. echo mysql_errno($uaktualnij) . ": " . mysql_error($uaktualnij). "\n";
  9. $upgrade=mysql_query($uaktualnij) or die(" blad piaty");
  10. ?>


co zaowocowało takim wynikiem :
Kod
Warning: mysql_errno(): supplied argument is not a valid MySQL-Link resource in C:\WebServ\httpd\lic\zamow.php on line 38

Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in C:\WebServ\httpd\lic\zamow.php on line 38


nie wyskoczył komunikat o błedzie, ale przy tym zapisie zapomniałem dodać , że on ogólnie nie występuje, po prostu wartość w bazie sie nie zmienia i w tym cały ból. Słuchajcie , a jak upewnić się , że opcje dotyczące relacyjności w bazie sa ustawione dobrze? bo rzuciłem okiem i chyba przyczyna tkwi w tym własnie , że (używam zgadza sie- phpmyadmina ) po kliknieciu w zakladke bazy danych operacje u dołu jest komunikat o błędzie :

Kod
Błąd
Dodatkowe możliwości pracy z połączonymi tabelami zostały wyłączone. Aby dowiedzieć się, dlaczego - kliknij tutaj.


po kliknieciu "tutaj" :

Kod
PMA Database ... błąd[ Dokumentacja ]
Ogólne funkcje relacyjne wyłączone


hm??
Go to the top of the page
+Quote Post
Cienki1980
post 30.09.2008, 21:00:14
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Połowicznie poszedłeś za moją radą .. Jakbyś dokładnie przeczytał zawartość pod linkiem który podałem zobaczyłbyś, że najpierw jest mysql_query() a dopiero potem mysql_error(); Popraw i zobacz czy teraz coś się pojawi.


--------------------
404
Go to the top of the page
+Quote Post
-Tobson-
post 30.09.2008, 21:11:23
Post #6





Goście







nie no ja odrobiłem pracę domową hehe , bo sprawdziłem jakies 10 róznych kombinacji i ustawien, wyczytalem , ze chodzi o ostatnią wykoną nad tym polceniem/poleceniami (biorąc pod uwage zarówno $uaktulnij, jak i $upgrade) własnie , bo nie byłem pewien czy jest jakas różnica odnośnie kolejności i tego którą wziąć pod uwagę, no wiec róznicy nie ma żadnej :/
Go to the top of the page
+Quote Post
Cienki1980
post 30.09.2008, 21:14:43
Post #7





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Zrób echo $uaktualnij; i pokaż co się pokazało ... ten kod dodaj zaraz po mysql_query($uaktualnij); .. tam będzie najbezpieczniej.


--------------------
404
Go to the top of the page
+Quote Post
rodia
post 30.09.2008, 21:22:16
Post #8





Grupa: Zarejestrowani
Postów: 21
Pomógł: 5
Dołączył: 29.07.2008

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


Nie ma tu kodu odpowiedzialnego załączeni z bazą, zakladam, ze go sprawdizles i dziala. Czy na pewno wybrałeś baze na ktorej pracyjesz mysql_select ... questionmark.gif


--------------------
Strony internetowe http://rodia.eu
Go to the top of the page
+Quote Post
-Tobson-
post 30.09.2008, 21:23:16
Post #9





Goście







  1. UPDATE `dane_koszulek` SET `ilosc_rozm_kosz`='100' WHERE `id`='1';


wyglada na to ze "nie widzi " zmiennej $losc_zam_produktow ($ilosc_rozm_kosz rowna jest 100 własnie), a $ilosc_zam_produktow=45, $wynik więc powinien być równy 55 , ale jak to wszystko obojętnie w jakiej postaci dam czy te przypisania czy jako pola z tabeli czy jak , to jak echem dam to na ekran to wszystko sie wyswietla bez problemu... .
Go to the top of the page
+Quote Post
-Tobson-
post 30.09.2008, 21:24:24
Post #10





Goście







Cytat(rodia @ 30.09.2008, 21:22:16 ) *
Nie ma tu kodu odpowiedzialnego załączeni z bazą, zakladam, ze go sprawdizles i dziala. Czy na pewno wybrałeś baze na ktorej pracyjesz mysql_select ... questionmark.gif

jasne, pominąłem to, ale z tym wszystko gra.
Go to the top of the page
+Quote Post
tomm
post 30.09.2008, 21:36:54
Post #11





Grupa: Zarejestrowani
Postów: 142
Pomógł: 28
Dołączył: 7.04.2008

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


zrób tak i wrzuć tu wynik:

<?php
$pom=$row['ilosc_rozm_kosz'];
$wynik= $pom - $losc_zam_produktow;
$id_wyniku=$row['id'];
$uaktualnij= " UPDATE dane_koszulek SET ilosc_rozm_kosz='$wynik' WHERE id='$id_wyniku' ";

echo $uaktualnij;
$upgrade=mysql_query($uaktualnij) or die(mysql_error());
?>
Go to the top of the page
+Quote Post
-Tobson-
post 30.09.2008, 21:45:47
Post #12





Goście







Cytat(tomm @ 30.09.2008, 21:36:54 ) *
zrób tak i wrzuć tu wynik:

<?php
$uaktualnij= " UPDATE dane_koszulek SET ilosc_rozm_kosz='$wynik' WHERE id='$id_wyniku' ";

echo $uaktualnij;
$upgrade=mysql_query($uaktualnij) or die(mysql_error());
?>


robiłem tak, jest dokładne tak ja opisałem wyżej :/
Go to the top of the page
+Quote Post
rodia
post 30.09.2008, 21:53:05
Post #13





Grupa: Zarejestrowani
Postów: 21
Pomógł: 5
Dołączył: 29.07.2008

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


Aby sie upewnić, że błąd jest w kwerendzie to wyświetl tą kwerendę tak jak już to robiles, skopiuj do schowka i wykonaj ją bezpośrednio w phpMyAdmin - tam jest link SQL - można wkleić kwerende. - jeśli tam sie wykona to znaczy, że kwerenda jest OK.


--------------------
Strony internetowe http://rodia.eu
Go to the top of the page
+Quote Post
-Tobson-
post 30.09.2008, 21:53:38
Post #14





Goście







sorry , za nie scalanie wiadomosci,a le jestem gościem póki co tym forum i chyba z tego co widzę , nie mam takiej możliwosci, chcialem tylko wspomnieć , że sprawę z relacyjnością naprawiłem , więc to nie to , bo wciąż jest lipa.
Go to the top of the page
+Quote Post
tomm
post 30.09.2008, 21:55:26
Post #15





Grupa: Zarejestrowani
Postów: 142
Pomógł: 28
Dołączył: 7.04.2008

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


a skąd bierzesz $losc_zam_produktow bo wychodzi że tam jest 0?
Go to the top of the page
+Quote Post
-Tobson-
post 30.09.2008, 22:01:44
Post #16





Goście







Cytat(tomm @ 30.09.2008, 21:55:26 ) *
a skąd bierzesz $losc_zam_produktow bo wychodzi że tam jest 0?


no własnie tam tylko tak wychodzi , generalnie jak zechce to wyswietlic , to normalnie sie wyswietla wartosc tej zmiennej , a jest to zmienna przekazywana do skryptu z formularza za pomocą metody POST , właśnie chyba nalezałoby iść tym tropem , bo nie wiem dlaczego w zapytaniu sql wychodzi zero a w skrypcie jak obok tego zapytania nawet wyswietle to wyswietla sie aktualna wartosc tej zmiennej . co do tego co napisales RODIA to kwerenda sie wykonuje , nie zwraca blędów, tylko nie modyfikuje też tego pola które chce by modyfikowala :/
Go to the top of the page
+Quote Post
tomm
post 30.09.2008, 22:15:12
Post #17





Grupa: Zarejestrowani
Postów: 142
Pomógł: 28
Dołączył: 7.04.2008

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


a spróbuj tak:

$uaktualnij= 'UPDATE dane_koszulek SET ilosc_rozm_kosz='.($pom - $_POST['przekazana_zmienna']).' WHERE id='.$id_wyniku;
Go to the top of the page
+Quote Post
-Tobson-
post 30.09.2008, 22:20:53
Post #18





Goście







Cytat(tomm @ 30.09.2008, 22:15:12 ) *
a spróbuj tak:

$uaktualnij= 'UPDATE dane_koszulek SET ilosc_rozm_kosz='.($pom - $_POST['przekazana_zmienna']).' WHERE id='.$id_wyniku;



działa:D! Wielkie dzięki ! Teraz działa, myślałem ,że próbowałem wszystkiego biggrin.gif, ale przyznaję ,że taką notację tych apostrofów pierwsze widzę , możesz mi powiedzieć właściwie dlaczego teraz zadziałało?? Pozdro i dzięki wszystkim za pomoc:) !
Go to the top of the page
+Quote Post
tomm
post 30.09.2008, 22:30:26
Post #19





Grupa: Zarejestrowani
Postów: 142
Pomógł: 28
Dołączył: 7.04.2008

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


taka notacja jest szybsza (choć w tym przypadku nie ma to zbyt wielkiego znaczenia ale przynajmniej dobre przyzwyczajenie smile.gif), ciągi nie są przeszukiwane pod względem zawierania zmiennych, same zmienne są dołączane za pomocą konkatenacji czyli zwykłej kropki

dlaczego zadziałało? myślę że błąd był gdzieś w kodzie którego nie pokazałeś
Go to the top of the page
+Quote Post
Cienki1980
post 1.10.2008, 07:47:45
Post #20





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Cytat(Tobson @ 30.09.2008, 23:20:53 ) *
...możesz mi powiedzieć właściwie dlaczego teraz zadziałało?? Pozdro i dzięki wszystkim za pomoc:) !


Pewnie dlatego że zostało wykorzystane poprawnie pobranie zmiennej z formularza za pomocą $_POST. Nikt wcześniej nie zwrócił uwagi i nie zapytał skąd bierzesz zmienne, wszyscy się skupili na "błędnym" zapytaniu które błędne nie było.

Ten post edytował Cienki1980 1.10.2008, 07:48:35


--------------------
404
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: 19.07.2025 - 19:49