Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Porównanie zmiennych
Frugo75
post
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


  1. if (strcmp($result_tip, $result == 0))
  2.  
  3. mysql_query("UPDATE user_tips SET points = 3 WHERE match_id = $id");


Znów mam prośbę o pomoc.
$result_tip daje np wynik 1:0, a $result daje 5:2.
Dlaczego strcmp() zwraca zero?

Dodam, że przed if daje echo $result." ---- "."$result_tip"."<hr>";
i mam:
1:0 ---- 1:0
1:0 ---- 5:3

W pierwszym jest ok, ale dlaczego drugi funkcja uznaje za ok?

Ten post edytował Frugo75 4.06.2014, 11:47:53
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
sowiq
post
Post #2





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


  1. if ( strcmp($result_tip, $result) === 0 )
  2.  
  3. // albo po prostu:
  4.  
  5. if ( $result_tip == $result )
Go to the top of the page
+Quote Post
Frugo75
post
Post #3





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(sowiq @ 4.06.2014, 12:49:12 ) *
  1. if ( strcmp($result_tip, $result) === 0 )
  2.  
  3. // albo po prostu:
  4.  
  5. if ( $result_tip == $result )


Ani to ani, to znów gdzie jest 5:3, wstawia do bazy 3...
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


pokaż szerszy kontekst
Go to the top of the page
+Quote Post
Frugo75
post
Post #5





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(Pyton_000 @ 4.06.2014, 12:56:03 ) *
pokaż szerszy kontekst

Wklejam całośc.


  1. $checkscore = checkscore(1030); //pobieram mecze
  2. foreach ($checkscore as $checkscores) {
  3.  
  4. $score1 = $checkscores['goals_host'];
  5. $score2 = $checkscores['goals_guest'];
  6. $id = $checkscores['id'];
  7. $result = $score1.":"."$score2";
  8.  
  9. if ($score1 > $score2){
  10.  
  11. $wdl = 'w';
  12. }
  13.  
  14. elseif ($score1 == $score2) {
  15. $wdl = 'd';
  16. }
  17. elseif ($score1 < $score2) {
  18. $wdl = 'l';
  19. }
  20.  
  21.  
  22. dbConnectLocal();
  23. $taketip = taketips($id); //pobieram typy
  24. foreach ($taketip as $taketips) {
  25.  
  26. $score_t1 = $taketips['score1'];
  27. $score_t2 = $taketips['score2'];
  28. $result_tip = $score_t1.":"."$score_t2";
  29.  
  30. $result_tip;
  31.  
  32. if ($score_t1 > $score_t2){
  33.  
  34. $wdl_tip = 'w';
  35. }
  36.  
  37. elseif ($score_t1 == $score_t2) {
  38. $wdl_tip = 'd';
  39. }
  40. elseif ($score_t1 < $score_t2) {
  41. $wdl_tip = 'l';
  42. }
  43.  
  44.  
  45.  
  46.  
  47. dbConnectLocal();
  48. if ($wdl == $wdl_tip){
  49.  
  50. mysql_query("UPDATE user_tips SET points_wdl = 1 WHERE match_id = $id") or die(mysql_error());
  51.  
  52.  
  53. }
  54. else {
  55.  
  56. mysql_query("UPDATE user_tips SET points_wdl = 0 WHERE match_id = $id") or die(mysql_error());
  57. }
  58. echo $result." ---- "."$result_tip"."<hr>";
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66. if ( strcmp($result_tip, $result) === 0 )
  67.  
  68. mysql_query("UPDATE user_tips SET points = 3 WHERE match_id = $id");
  69. }
  70. }
  71.  
  72. ?>
  73.  
Go to the top of the page
+Quote Post
Pyton_000
post
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Pokaż co powie
  1. var_dump($result, $result_tip);

zamiast tego echo
Go to the top of the page
+Quote Post
Frugo75
post
Post #7





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(Pyton_000 @ 4.06.2014, 13:11:35 ) *
Pokaż co powie
  1. var_dump($result, $result_tip);

zamiast tego echo

string(3) "1:0" string(3) "1:0" string(3) "1:0" string(3) "5:3"
Go to the top of the page
+Quote Post
Pyton_000
post
Post #8





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


To wstaw jeszcze:
  1. var_dump(strcmp($result_tip, $result));
Go to the top of the page
+Quote Post
Frugo75
post
Post #9





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(Pyton_000 @ 4.06.2014, 13:20:17 ) *
To wstaw jeszcze:
  1. var_dump(strcmp($result_tip, $result));

Proszę bardzo:
int(0) int(4)
Go to the top of the page
+Quote Post
Pyton_000
post
Post #10





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


no i jest ok, aktualizuje tylko w pierwszym przypadku
Go to the top of the page
+Quote Post
Frugo75
post
Post #11





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(Pyton_000 @ 4.06.2014, 13:24:46 ) *
no i jest ok, aktualizuje tylko w pierwszym przypadku

To dlaczego mi do bazy wstawia 3, userowi, który ma $result_tip = 5:3?

Cytat(Frugo75 @ 4.06.2014, 13:25:53 ) *
To dlaczego mi do bazy wstawia 3, userowi, który ma $result_tip = 5:3?


Co ciekawe....
Jak wstawiłem do testów tak:
  1. if ($result_tip == $result) {
  2.  
  3. mysql_query("UPDATE user_tips SET points = 3 WHERE match_id = $id");
  4. }
  5. elseif ($result_tip != $result) {
  6. mysql_query("UPDATE user_tips SET points = 7 WHERE match_id = $id");
  7. }


To wszystkim wstawił 7. Pomoże ktoś?
Go to the top of the page
+Quote Post
sowiq
post
Post #12





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Cytat(Frugo75 @ 4.06.2014, 12:56:26 ) *
To dlaczego mi do bazy wstawia 3, userowi, który ma $result_tip = 5:3?


Bo tak podałeś w zapytaniu smile.gif
  1. mysql_query("UPDATE user_tips SET points = 3 WHERE match_id = $id");


Jeśli chcesz, żeby "SET points = 3" wstawiło inną wartość niż 3, to muszę Cię rozczarować wink.gif
Go to the top of the page
+Quote Post
Frugo75
post
Post #13





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(sowiq @ 4.06.2014, 14:03:06 ) *
Bo tak podałeś w zapytaniu smile.gif
  1. mysql_query("UPDATE user_tips SET points = 3 WHERE match_id = $id");


Jeśli chcesz, żeby "SET points = 3" wstawiło inną wartość niż 3, to muszę Cię rozczarować wink.gif


Ale przecież warunek się nie zgadza bo 1:1 nie jest takie samo jak 5:3.
Go to the top of the page
+Quote Post
sowiq
post
Post #14





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


Widzisz kolego, na własnej skórze się przekonujesz, że zawsze należy stosować klamry przy instrukcjach warunkowych. Bez tych klamerek dodasz sobie jakiegoś var_dumpa i od razu Ci się wszystko wali.

Porównaj sobie te dwa kody:

  1. $a = 1;
  2. $b = 2;
  3. if( $a == $b )
  4. var_dump($a, $b);
  5. echo "Wykonuję zapytanie!!"
  6.  
  7. // ORAZ
  8. if( $a == $b ){
  9. var_dump($a, $b);
  10. echo "Wykonuję zapytanie!!"
  11. }


Różnica w zapisie bardzo mała, w działaniu ogromna.
Go to the top of the page
+Quote Post
Frugo75
post
Post #15





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(sowiq @ 4.06.2014, 14:09:18 ) *
Widzisz kolego, na własnej skórze się przekonujesz, że zawsze należy stosować klamry przy instrukcjach warunkowych. Bez tych klamerek dodasz sobie jakiegoś var_dumpa i od razu Ci się wszystko wali.

Porównaj sobie te dwa kody:

  1. $a = 1;
  2. $b = 2;
  3. if( $a == $b )
  4. var_dump($a, $b);
  5. echo "Wykonuję zapytanie!!"
  6.  
  7. // ORAZ
  8. if( $a == $b ){
  9. var_dump($a, $b);
  10. echo "Wykonuję zapytanie!!"
  11. }


Różnica w zapisie bardzo mała, w działaniu ogromna.


Dzięki kolego, ale nawet jak mam wklamerkach, to jest to samo. Zapytanie się wykonuje, tylko wstawia wartosc 3 nawet jesli $result nie jest taka sam jak $result_tip. I tego nie kumam. Może to przez którą pętlę?

Mam teraz tak i znów wstawia 3 wszystkim:
  1.  
  2. if ($result_tip == $result) {
  3.  
  4. mysql_query("UPDATE user_tips SET points = 3 WHERE match_id = $id");
  5. }
Go to the top of the page
+Quote Post
sowiq
post
Post #16





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


To zrób tak:

  1. if ($result_tip == $result) {
  2. echo '<br />---------<br />';
  3. var_dump($result_tip, $result, $result_tip == $result, $id);
  4. echo '<br />---------<br />';
  5.  
  6. mysql_query("UPDATE user_tips SET points = 3 WHERE match_id = $id");
  7. }


i pokaż wynik.
Go to the top of the page
+Quote Post
Frugo75
post
Post #17





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(sowiq @ 4.06.2014, 14:25:01 ) *
To zrób tak:

  1. if ($result_tip == $result) {
  2. echo '<br />---------<br />';
  3. var_dump($result_tip, $result, $result_tip == $result, $id);
  4. echo '<br />---------<br />';
  5.  
  6. mysql_query("UPDATE user_tips SET points = 3 WHERE match_id = $id");
  7. }


i pokaż wynik.


---------
string(3) "1:0" string(3) "1:0" bool(true) string(4) "1030"
---------
Go to the top of the page
+Quote Post
sowiq
post
Post #18





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


No i z tego wynika, że ten fragment kodu zrobił powinien zrobić tylko jeden update, rekordu o ID = 1030.

Jeśli coś jeszcze zmieniło się w bazie, to musiał to zrobić inny kawałek kodu, w innym miejscu.

Ten post edytował sowiq 4.06.2014, 13:49:59
Go to the top of the page
+Quote Post
Frugo75
post
Post #19





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 13.06.2013

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


Cytat(sowiq @ 4.06.2014, 14:49:26 ) *
No i z tego wynika, że ten fragment kodu zrobił powinien zrobić tylko jeden update, rekordu o ID = 1030.

Jeśli coś jeszcze zmieniło się w bazie, to musiał to zrobić inny kawałek kodu, w innym miejscu.

OK. Tylko który?
Go to the top of the page
+Quote Post
sowiq
post
Post #20





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


W pliku, który wkleiłeś powyżej widzę trzy razy zapytanie SQL UPDATE. Pokazałem Ci powyżej jak debugować. Rusz trochę głową i znajdź kolejne miejsca, gdzie niechciane zapytanie się wykonuje.
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 Aktualny czas: 22.08.2025 - 08:05