Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sprawdzenie czy w danym temacie jest post usera X
Mody23
post
Post #1





Grupa: Zarejestrowani
Postów: 276
Pomógł: 0
Dołączył: 30.06.2010

Ostrzeżenie: (10%)
X----


Witam!

Potrzebuję stworzyć warunek: if ( $topic_id = 16 && /no wlasnie, co dalej?/ )

Chodzi o to, że chcę sprawdzić czy w bazie, w danym temacie istnieje post, napisany przez usera o ID = X. Jak mam to sprawdzić?

Myślałem tak, że sprawdzę sobie czy ostatni post jest napisany przez usera = X, ale to też nie działa...:
  1. $sql = "SELECT poster_id
  2. FROM " . POSTS_TABLE . "
  3. WHERE topic_id = $topic_id_sql
  4. AND post_id = $topic_last_post_id_poster";
  5. $result = $db->sql_query($sql);
  6. while( $row = $db->sql_fetchrow($result) )
  7. {
  8. $poster_id = $row['poster_id'];
  9. }
  10.  
  11. if ( $poster_id == $idbota ){


Jak to zrobić? I najlepiej żeby to sprawdzało spośród wszystkich postów, a nie spośród tylko ostatniego.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Giluś
post
Post #2





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

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


Zrób sobie tak:
1. Pobierz wszystkich użytkowników dla danego tematu.
2. Zrób pętle
3. Zrób warunek (if) - w pętli

Go to the top of the page
+Quote Post
wujek2009
post
Post #3





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

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


phpbb_posts - tam masz zapisane id tematu, id usera
wiec zapytanie w stylu;
select * from phpbb_posts where topic_id = X AND poster_id = Y;
Go to the top of the page
+Quote Post
Mody23
post
Post #4





Grupa: Zarejestrowani
Postów: 276
Pomógł: 0
Dołączył: 30.06.2010

Ostrzeżenie: (10%)
X----


Wujek, tak mam zrobione przecież. Ale potem jak porównuję:

  1. if ( $poster_id == $idbota ){


To w efekcie niby warunek jest cały czas niespełniony. A tak naprawdę powinien być spełniony, więc o co kaman? Pod zmienną $idbota, kryje się cyfra 6 czyli id jednego z userów.
Go to the top of the page
+Quote Post
wujek2009
post
Post #5





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

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


ale po co taki warunek przy moim zapytaniu co podałem?
  1. if ( ! $sql = mysql_query("select * from phpbb_posts where topic_id = X AND poster_id = Y limit 1") )
  2.  
  3. $num = mysql_num_rows($sql);
  4.  
  5. if ( $num )
  6. echo 'istnieje post w temacie X dla autora o id Y';
  7. else
  8. echo 'nic nie znalazlem';


klauzura WHERE w zapytaniu za Ciebie instrukcje IF ($poster_id == $idbota)
Ty masz tylko sprawdzić czy zapytanie zwróci Ci wynik ($num == 1 (czyli jest post) czy też może nie $num == 0 (czyli FALSE, czyli brak postów))

UPDATE: poza tym Twój warunek się niespełnia ponieważ w pętli while utworzyłeś zmienną - OK, a wiesz jak działa w Twoim przypadku ta pętla?

1) pobiera np. 50 postów (i mamy 50 poster_id co nie? np. od 1 do 50 niech będzie)
2) ty zdefiniowałeś $poster_id w pętli - OK, ale POZA PĘTLA robisz warunek!
2.1) pętla while $poster_id zapisało do zmiennej OSTATNI RUCH PĘTLI, czyli np. poster_id = 50
czyli nie sprawdzi Ci pozostałych Idków z tematu!

poprawnie powinno być coś w stylu;
  1. while( $row = $db->sql_fetchrow($result) )
  2. {
  3. $poster_id = $row['poster_id'];
  4. if ( $poster_id == $idbota )
  5. {
  6. // warunek spełniony;
  7. break; // koniec pętli - bo jak już znalazło nam wynik to po co dalej ma nam szukać..
  8. }
  9. }


ale ogolnie polecam Ci mój sposób wyżej wspomniany.

Ten post edytował wujek2009 30.10.2011, 10:38:03
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 Aktualny czas: 19.08.2025 - 16:31