Warmix
1.11.2011, 21:15:30
Mam takie coś:
$result = mysql_query("SELECT user_id FROM phpbb_test");
$test = $res['user_id'];
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?
cycofiasz
1.11.2011, 21:29:16
mysql_query("UPDATE ".USERS_TABLE." SET user_test=user_test+1 ";
i nic więcej
Warmix
1.11.2011, 21:39:05
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
cycofiasz
1.11.2011, 22:37:30
Ale jaki masz problem? Nie czytałeś o pętlach? Chyba zły dział wybrałeś.
Warmix
1.11.2011, 22:43:54
No właśnie, gdy próbuje zrobić takie coś:
$result = mysql_query("SELECT user_id FROM phpbb_test");
$test = $res['user_id'];
mysql_query("UPDATE ".USERS_TABLE
." SET user_test=user_test+1 WHERE user_id='" . $test . "'"); }
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...
cycofiasz
1.11.2011, 22:50:21
Coś kręcisz. Pokaż kod bez pętli który działa poprawnie
mysql_query( "UPDATE " . USERS_TABLE
. " SET user_test=user_test+1 WHERE user_id IN ( SELECT user_id FROM phpbb_test ) " );
Powinno śmigać.
Warmix
2.11.2011, 18:55:41
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ć?