2017-02-26 21 views
0

mybb-forum에 함수가 있습니다. 트랙은 특정 포럼에 의존하고 회원 페이지에 날짜를 표시하는 플러그인의 일부입니다 (다른 것들 중에서).Mybb 업데이트 쿼리가 작동하지 않습니다.

이 부분은 사용자가 자신의 게시물을 삭제 한 경우입니다. 그런 다음 설정 포럼에서 삭제 된 게시물 이전의 마지막 게시물을 찾아 해당 사용자의 회원 페이지에 해당 날짜를 표시해야합니다.

그러나 update-query가 작동하지 않아 문제가 무엇인지 알 수 없습니다.

여기 내 코드입니다. 오류는 없지만 데이터베이스에 기록하지는 않습니다.

function lastippost_update($pid) 
{ 
    global $db, $mybb; 
    $query = $db->simple_select("posts","fid,uid,dateline","pid='{$pid}'"); 
    $post = $db->fetch_array($query); 
    if ($mybb->settings['lastippost'] != '') 
    { 
      $ipids = $mybb->settings['lastippost']; 
      if (in_array($post['fid'], $ipids)) 
      { 
        $ipquery = $db->write_query("SELECT uid,dateline FROM ".TABLE_PREFIX."posts WHERE fid IN ($ipids) AND uid='".$post['uid']."' ORDER BY dateline DESC LIMIT 1 OFFSET 1"); 
        $ippost = $db->fetch_array($ipquery); 
        $db->update_query("users", array('lastippost' => $ippost['dateline']), "uid='".$ippost['uid']."'"); 
      } 
    } 

}

$ ipids는 포럼 ID의 쉼표로 구분 된 목록입니다. 그 도움이된다면


난 몰라하지만 난 작동합니까 오히려 비슷한 코드 의 또 다른 비트가 :

   $ipids = $mybb->settings['lastippost']; 
      $ipquery = $db->write_query("SELECT uid, dateline FROM ".TABLE_PREFIX."posts WHERE fid IN ($ipids) ORDER BY uid,dateline DESC"); 
      while ($ippost = mysql_fetch_assoc($ipquery)) 
      { 
        if($ippost['uid'] != $lastuid) 
        { 
          $db->update_query("users", array('lastippost' => $ippost['dateline']), "uid='".$ippost['uid']."'"); 
        } 
        $lastuid = $ippost['uid']; 
      } 
+0

당신은'$ post'가 당신이 기대하는 것을 반환하고 있는지 확인하기 위해 디버그를 추가 했습니까? – Theo

+0

'uid =' "를 선택하려는 게시물을 삭제하지 않았습니까? $ post [ 'uid']'? –

+0

@Paul Mybb는 후크와 함께 작동합니다. 여기에서 사용하는 후크는 삭제하기 전에 설정됩니다. 게시물을 선택한 후 실제로 삭제하기 전에 실행해야합니다. – Senya

답변

0

내가 내 문제가 발견 OK : 위는

$ipids = $mybb->settings['lastippost']; 

을 문자열. 내가 선택한 쿼리에 있어야합니다.

if (in_array($post['fid'], $ipids)) 

그것은 최고의 솔루션이 아닐 수도 있지만 지금은이 같은 짓을했는데 작동 :

$ipids = $mybb->settings['lastippost']; 
$ipids2 = explode(",", trim($ipids)); 

첫 번째가 사용되지만이 부분의 HIER은 분명히 배열을 말한다 검색어를 선택하고 두 번째는 in_array에 대해

감사합니다. (나는 여전히 더 우아한 해결책에 대한 제안을하고있다 :))