Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]problem z poleceniem UPDATE
Forum PHP.pl > Forum > Przedszkole
Tobson
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
Cienki1980
Zastosuj mysql_error" title="Zobacz w manualu PHP" target="_manual i może coś się wyjaśni.
blooregard
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.
Tobson
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??
Cienki1980
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.
Tobson
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 :/
Cienki1980
Zrób echo $uaktualnij; i pokaż co się pokazało ... ten kod dodaj zaraz po mysql_query($uaktualnij); .. tam będzie najbezpieczniej.
rodia
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
Tobson
  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... .
Tobson
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.
tomm
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());
?>
Tobson
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 :/
rodia
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.
Tobson
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.
tomm
a skąd bierzesz $losc_zam_produktow bo wychodzi że tam jest 0?
Tobson
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 :/
tomm
a spróbuj tak:

$uaktualnij= 'UPDATE dane_koszulek SET ilosc_rozm_kosz='.($pom - $_POST['przekazana_zmienna']).' WHERE id='.$id_wyniku;
Tobson
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:) !
tomm
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ś
Cienki1980
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.
blooregard
Przepraszam, jak to "nikt wcześniej nie zwrócił uwagi" ? smile.gif

W mojej odpowiedzi (3 post w temacie) podsunąłem Tobsonowi metodę na znalezienie problematycznej zmiennej (kolejne sprawdzanie jej wartości po każdym wystąpieniu w kodzie). W ten sposób można bez problemu sprawdzić, co i czy w ogóle przychodzi POST-em i jaką ma wartość.
Tobson
zgadza sie panowie, wsxystko prawda, korzystalem z tej metody podsuniętej przez blooregarda , z tym ,ze zanim do tego doszedłem to pojawiło się to rozwiązanie , jak teraz się cofałem do tego , to rzeczywiście prawdopodobnie problem lezal tam gdzie zaznaczaliście , bo kod jest dość zawiły bo róznie kombinowałem , dopiero się ucze...winksmiley.jpg ,pozdro !
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.