Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]nie potrafię zidagnozować błędu złej interpretacji ścieżki
Pcbecaw
post
Post #1





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 4.06.2011

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


Niezbędny jest cały kod:
http://wklejto.pl/115574
Chodzi mi o to, że jeśli w bazie ścieżka avatara='sciezka', to pole value ma przyjmować wartość '';, czyli nic. I to działa. Jednak jeśli ktoś wpisze poprawną ścieżkę obrazka = nie bierze tego pod uwagę i nie aktualizuje ścieżki. Przed wprowadzeniem ifa ze ścieżką '';, wszystko działało. Jak to naprawić?
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
Kshyhoo
post
Post #2





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Przypisujesz:
  1. if($r['avatar']='sciezka'){

A gdzie deklarujesz?
Go to the top of the page
+Quote Post
Pcbecaw
post
Post #3





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 4.06.2011

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


wyżej (zamiast id, to błąd przy kopiowaniu)
  1. $ccc = $r['avatar'];


co w tym może być nie tak? Próbowałem wstawiać ten kod w różne miejsca, ale nic. Może wstawić jakiś osobny kod do samego value? Np. include w value? Ale to chyba będzie to samo :/
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #4





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Podajesz kod do poprawki, który jest błędny - nic dziwnego, że nie ogarniasz. Wklej kod, przed poprawkami i napisz, co chcesz osiągnąć.
Go to the top of the page
+Quote Post
Pcbecaw
post
Post #5





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 4.06.2011

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


Działający kod - http://wklejto.pl/115582
Chciałbym zrobić tak, że jeśli w bazie ścieżka avatara = 'sciezka', to value pola avatar będzie puste. A jeśli ścieżka jest inna (poprawna), to ścieżka avatara = poprawna ścieżka avatara w value.

Szukałem przykładu takiego czegoś, ale w necie coś pusto (czyt. na bank źle szukałem). Próbuje to zrobić już od 3h i nic...
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #6





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Np.:
  1. // tu pobierasz dane z bazy
  2. while($r = mysql_fetch_assoc($wynik)) {
  3. $id = $r['id'];
  4. }
  5. }
  6.  
  7. // sprawdzasz, czy $r['avatar'] to "sciezka"
  8. if($r['avatar'] = 'sciezka') {
Go to the top of the page
+Quote Post
Pcbecaw
post
Post #7





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 4.06.2011

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


http://wklejto.pl/115592
Jeśli usunę wszystkie deklaracje zmiennej $avatar, to ZAWSZE wyświetla się w value 'nic' i na dodatek nie działa sprawdzanie wprowadzonej ścieżki, a jeśli nie usunę wszystkich deklaracji zmiennej $avatar, to w ogóle nie działa.
Co z tym jest nie tak?
Go to the top of the page
+Quote Post
wujek2009
post
Post #8





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

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


drobna uwaga;
  1. if($r['avatar']='sciezka'){


ten warunek ma służyć porównaniu, zgadza się?
porwónujemy za pomocą == za pomocą jednego = przypisujemy wartości (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Pcbecaw
post
Post #9





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 4.06.2011

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


wiem wiem, próbowałem na różne sposoby, z podwójnym == też. Wciąż to samo. Coś z tym musi chyba kolidować.
Go to the top of the page
+Quote Post
wujek2009
post
Post #10





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

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


pod;
  1. if($r['avatar'] = 'sciezka') {$avatar='nic';}

daj
  1. var_dump($r, $has1, $avatar);


sprawdź czy w ogóle $r cokolwiek zwraca - moim zdaniem ta pętla while jest kompletnie zbędna - skoro pobierasz tylko JEDEN rekord
to zapis;
  1. $r = mysql_fetch_assoc($wynik);

zupełnie wystarczy

wklej tutaj wyniki z tego var dumpa co wyżej podałem


poza tym ma być == i tyle - tutaj nie ma co kombinować - porównujesz wartości więc ==


Ten post edytował wujek2009 28.01.2012, 14:19:58
Go to the top of the page
+Quote Post
Pcbecaw
post
Post #11





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 4.06.2011

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


bool(false) int(1) string(16) "sciezkaasdasdasd"

to "sciezkaasdasdasd", jest po wpisaniu błędnej ścieżki.

kawałek kodu:
  1. if($r['avatar'] == 'sciezka') {$avatar='nic';}
  2. var_dump($r, $has1, $avatar);


Ten post edytował Pcbecaw 28.01.2012, 14:29:33
Go to the top of the page
+Quote Post
wujek2009
post
Post #12





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

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


$r zwraca false więc właściwie ten warunek wygląda następująco;
  1. if ( false == 'sciezka' ) $avatar = 'nic'


krótko mówiąc warunek się nie sprawdza więc nie wyświetla komunikatu "nic"
weź tą pętle while zmień na to co pisałem post wyżej
  1. $r = mysql_fetch_assoc($wynik);
Go to the top of the page
+Quote Post
Pcbecaw
post
Post #13





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 4.06.2011

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


  1. $wynik = mysql_query("SELECT * FROM test WHERE nick='{$_SESSION['nick']}'")
  2. or die('Błąd zapytania');
  3. $has1 = mysql_num_rows($wynik);
  4. if($has1 > 0) {
  5. $r = mysql_fetch_assoc($wynik);
  6. $id = $r['id'];
  7. }
  8. if($r['avatar'] == 'sciezka') {$avatar='nic';}
  9. var_dump($r, $has1, $avatar);

jak to się zrobi poprawnie, to zamienie pobieranie wszystkich, na pobieranie tylko tego pola 'avatar', ale póki co:
Cytat
array(15) { ["id"]=> string(2) "14" ["data"]=> string(19) "2012-01-24 21:55:24" ["nick"]=> string(4) "test" ["haslo"]=> string(128) "305c8c9adff888078b0433cf23a5ab7172851447a4c9edb18abbc854afce3daba27c5760d2d
cf324bea43633fe853e5fbb3f3c8c73eb2804fb2ea9ff5323a6e5" ["email"]=> string(12) "test@test.pl" ["ip"]=> string(9) "127.0.0.1" ["imie"]=> string(9) "dsadadsgs" ["nazwisko"]=> string(0) "" ["telefon"]=> string(0) "" ["gg"]=> string(0) "" ["skype"]=> string(0) "" ["miejscowosc"]=> string(0) "" ["www"]=> string(0) "" ["avatar"]=> string(7) "sciezka" ["kod"]=> string(31) "P36Z2G3CDHBM977RL7B3ZKZB8YTWWC7" } int(1) string(3) "nic"

i nie działa

Ten post edytował Pcbecaw 28.01.2012, 14:40:02
Go to the top of the page
+Quote Post
wujek2009
post
Post #14





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

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


zmieniasz dane, które chcesz porównać (w warunku IF) oraz zmieniasz dane, ktore pobiera zapytanie - teraz właściwie nie wiem jaki efekt ma być końcowy...

bo widzę, że zapytanie zwraca Ci jakieś rekordy - i widzę, że dla kolumny "avatar" jest "sciezka" więc warunek powinien się sprawdzić i pod zmienną $avatar powinno pojawić się "nic"
Go to the top of the page
+Quote Post
Pcbecaw
post
Post #15





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 4.06.2011

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


http://wklejto.pl/115597
Tak wygląda ten cały kod. Koliduje to z tymi innymi zmiennymi zdefiniowanymi niżej ($avatar). Po ich usunięciu w value znajduje się nic, ale wtedy już olewa sprawdzanie ścieżki i zawsze pokazuje 'nic'.
Chciałbym zrobić tak, że jeśli w bazie ścieżka avatara = 'sciezka', to value pola avatar będzie puste. A jeśli ścieżka jest inna (poprawna), to ścieżka avatara = poprawna ścieżka avatara w value.

a moment, nie. Teraz zauważyłem, że w tablicy zmienia się ścieżka i zapewne chodzi tutaj o dodanie odpowiedniego else do podanego wyżej warunku. jednak
  1. if($r['avatar'] == 'sciezka') {$avatarr='nic';}else{$avatarr='cos';}
sprawia, że non stop pojawia się 'nic'.

avataRR dlatego, że zmieniłem, żeby nie kolidowało. Teraz już prawie jesteśmy przy końcu, tylko potrzeba odpowiedniego else zapewne.

Ten post edytował Pcbecaw 28.01.2012, 14:54:20
Go to the top of the page
+Quote Post
wujek2009
post
Post #16





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

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


czyli co właściwie pozostało do zrobienia? na który kod mam patrzeć - gdzie else trzeba dodać i co ma robić te "else"?
Go to the top of the page
+Quote Post
Pcbecaw
post
Post #17





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 4.06.2011

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


http://wklejto.pl/115601
To jest cały kod, z błędną końcówką. Bo jeśli wpisze sie dobra sciezke - aktualizuje ja do bazy, ale w dalszym ciagu w value widnieje 'nic'. jesli wpisze sie błędną, to nie aktualizuje sciezki i to jest dobre. Teraz trzeba zrobic, żeby po wpisaniu dobrej ścieżki pokazywało tą dobrą ścieżke z bazy.

cholera, jeszcze coś nie tak. bo zauwazylem, ze zeby efekt był widoczny, trzeba 2x wyslac taki sam formularz...
o co tu chodzi (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
potreb
post
Post #18





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

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


Po zapisie do bazy zrób przekierowanie header('location: plik.php');
lub
Jeżeli poprawnie zapisano pobieraj dane z posta do form zamiast z db

Ten post edytował potreb 28.01.2012, 15:22:25
Go to the top of the page
+Quote Post
Pcbecaw
post
Post #19





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 4.06.2011

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


nie rozumiem.
Btw. dlaczego tak się dzieje? Przecież do tej pory wszystko było elegancko, tylko teraz jakieś problemy.
Go to the top of the page
+Quote Post
untorched
post
Post #20





Grupa: Zarejestrowani
Postów: 318
Pomógł: 76
Dołączył: 27.12.2011
Skąd: Dąbrowa Górnicza

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


Dzieje się tak, ponieważ najpierw pobierasz dane, a później je zmieniasz. Musiałbyś po zaktualizowaniu znów odczytać z bazy.. : )

Ten post edytował untorched 28.01.2012, 15:31:51
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 - 15:40