Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pętla
Warmix
post 1.11.2011, 21:15:30
Post #1





Grupa: Zarejestrowani
Postów: 173
Pomógł: 0
Dołączył: 13.06.2011

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


Mam takie coś:

  1. $result = mysql_query("SELECT user_id FROM phpbb_test");
  2. $res = mysql_fetch_assoc($result))
  3.  
  4. $test = $res['user_id'];
  5.  
  6. mysql_query("UPDATE ".USERS_TABLE." SET user_test=user_test+1 WHERE user_id='" . $test . "'";


W połowie działa to poprawnie. W tabeli phpbb_test mam kilka rekordów. Drugie zapytanie dodaje mi tylko +1 do usera, który jest pierwszy w tej tabeli phpbb_test. Jak napisać do tego pętle, aby dodawało +1 do wszystkich użytkowników, jacy są w tabeli phpbb_test?
Go to the top of the page
+Quote Post
cycofiasz
post 1.11.2011, 21:29:16
Post #2





Grupa: Zarejestrowani
Postów: 711
Pomógł: 127
Dołączył: 5.07.2008
Skąd: Łódź

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


  1. mysql_query("UPDATE ".USERS_TABLE." SET user_test=user_test+1 ";



i nic więcej
Go to the top of the page
+Quote Post
Warmix
post 1.11.2011, 21:39:05
Post #3





Grupa: Zarejestrowani
Postów: 173
Pomógł: 0
Dołączył: 13.06.2011

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


Ale ja nie chcę, aby każdemu użytkownikowi dodawało do tego pola +1, tylko tym, którzy są w tabeli phpbb_test, a w tej tabeli jest id użytkowników i chcę, aby jeżeli skrypt w tabeli phpbb_test znajdzie dane id, to dodaje w tabeli phpbb_users do pola user_test +1
Go to the top of the page
+Quote Post
cycofiasz
post 1.11.2011, 22:37:30
Post #4





Grupa: Zarejestrowani
Postów: 711
Pomógł: 127
Dołączył: 5.07.2008
Skąd: Łódź

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


Ale jaki masz problem? Nie czytałeś o pętlach? Chyba zły dział wybrałeś.
Go to the top of the page
+Quote Post
Warmix
post 1.11.2011, 22:43:54
Post #5





Grupa: Zarejestrowani
Postów: 173
Pomógł: 0
Dołączył: 13.06.2011

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


No właśnie, gdy próbuje zrobić takie coś:
  1. $result = mysql_query("SELECT user_id FROM phpbb_test");
  2. while($res = mysql_fetch_assoc($result)){
  3.  
  4. $test = $res['user_id'];
  5.  
  6. mysql_query("UPDATE ".USERS_TABLE." SET user_test=user_test+1 WHERE user_id='" . $test . "'");
  7. }


Wywala mi taki błąd:
Cytat
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource


A bez pętli tego błędu nie ma...
Go to the top of the page
+Quote Post
cycofiasz
post 1.11.2011, 22:50:21
Post #6





Grupa: Zarejestrowani
Postów: 711
Pomógł: 127
Dołączył: 5.07.2008
Skąd: Łódź

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


Coś kręcisz. Pokaż kod bez pętli który działa poprawnie
Go to the top of the page
+Quote Post
ADeM
post 1.11.2011, 23:47:51
Post #7





Grupa: Zarejestrowani
Postów: 455
Pomógł: 69
Dołączył: 23.10.2004
Skąd: Oświęcim

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


  1. mysql_query( "UPDATE " . USERS_TABLE . " SET user_test=user_test+1 WHERE user_id IN ( SELECT user_id FROM phpbb_test ) " );

Powinno śmigać.

Ten post edytował ADeM 1.11.2011, 23:48:26


--------------------
Go to the top of the page
+Quote Post
Warmix
post 2.11.2011, 18:55:41
Post #8





Grupa: Zarejestrowani
Postów: 173
Pomógł: 0
Dołączył: 13.06.2011

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


Działa poprawnie, bo do każdego usera w phpbb_users dodaje w polu user_test +1, ale gorzej jest, gdy w tabeli phpbb_test jest więcej razy ta sama wartość w polu user_id. Wtedy, jak np. jest w tabeli phpbb_test 2 razy id 2, to do pola user_test w tabeli phpbb_users dodać powinno +2, a dodaje +1. Co zrobić?

Ten post edytował Warmix 2.11.2011, 18:58:11
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 Wersja Lo-Fi Aktualny czas: 13.06.2025 - 07:23