Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzenie czy w danym temacie jest post usera X
Forum PHP.pl > Forum > PHP
Mody23
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.
Giluś
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

wujek2009
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;
Mody23
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.
wujek2009
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.