2017-04-22 21 views
-1

このコードの目的は、別のデータベースのusergroupを割り当てることです。私はどのgroup_idがどのrole_idとAdminに属しているかを指定するスイッチを作成しました。次のようにのみデフォルトケースを認識するために...私のコードは次のとおりです。PHPスイッチがMySQLのPHPから登録されていない

$result2 = $DB->query("SELECT group_id, picture, joindate from ".DB_PREFIX."members where member_id = '".$member_id."'"); 
    if ($DB->num_rows($result)){ 
     $member_obj = $DB->fetch_object($result2); 
    } 
if (!empty($member_obj)){ 
    $member_group_id = $member_obj->group_id; 
} 

switch ($member_group_id) { 
     case 1: //Admins 
      $user_data['role_id'] = "16"; 
      $user_data['admin'] = "1"; 
     break; 

     case 2: //freemembers 
      $user_data['role_id'] = "8"; 
      $user_data['admin'] = "0"; 
     break; 

     case 3: //guests 
      $user_data['role_id'] = "2"; 
      $user_data['admin'] = "0"; 
     break; 

     case 4: //pending members 
      $user_data['role_id'] = "2"; 
      $user_data['admin'] = "0"; 
     break; 

     case 5: //chatter package members 
      $user_data['role_id'] = "34"; 
      $user_data['admin'] = "0"; 
     break; 

     case 6: //cancelled members 
      $user_data['role_id'] = "2"; 
      $user_data['admin'] = "0"; 
     break; 

     case 7: //Socialite Member 
      $user_data['role_id'] = "35"; 
      $user_data['admin'] = "0"; 
     break; 

     case 8: //socialgod members 
      $user_data['role_id'] = "36"; 
      $user_data['admin'] = "0"; 
     break; 

     case 10: //chatadmins 
      $user_data['role_id'] = "33"; 
      $user_data['admin'] = "0"; 
     break; 

     case 11: //forummods 
      $user_data['role_id'] = "2"; 
      $user_data['admin'] = "0"; 
     break; 

     default: //Guests 
      $user_data['role_id'] = "8"; 
      $user_data['admin'] = "0"; 
     break; 
    } 

次のようにサイトを更新するために実行されるSQLは次のとおりです。

// new member 
    if (! $arrUserID['user_id']) { 

    $where_sql .= ", DateFirstVisit = '{$user_data['joindate']}', 
        DateInserted = '{$user_data['joindate']}', 
        DateUpdated = '{$user_data['joindate']}'"; 

    $MDB->query("INSERT INTO ".$PREFS->conf['module_vanilla_table_prefix']."User {$where_sql}"); 

    $arrUserID['user_id'] = $MDB->get_insert_id(); 

    if ($arrUserID['user_id']) { 
     $MDB->query("INSERT INTO ".$PREFS->conf['module_vanilla_table_prefix']."UserRole SET UserID={$arrUserID['user_id']}, RoleID={$user_data['role_id']}"); 
    } 
} 
// existing member 
else { 
    $MDB->query("UPDATE ".$PREFS->conf['module_vanilla_table_prefix']."User {$where_sql} WHERE UserID = {$arrUserID['user_id']} LIMIT 1"); 
    $MDB->query("UPDATE ".$PREFS->conf['module_vanilla_table_prefix']."UserRole SET RoleID={$user_data['role_id']} WHERE UserID = {$arrUserID['user_id']} LIMIT 1"); 
} 

$場合だけでは、例えば明確にしますmember_group_idが1の場合は、role_idを16に設定し、adminを1に設定する必要があります。ただし、auto defaul tsからrole_id 8までadmin 0

ご意見はありますか?

+0

なぜあなたは大部分が*管理者ではないと定義していますか?なぜそれをデフォルトにして、誰かが管理者ならば*変更するだけでいいのですか? – Nytrix

+0

こんにちは@Nytrixその奇妙なバニラフォーラムの仕組み....管理者= 1の場合でも、ロールが16に設定されるまでユーザーはまだ管理者ではありません... –

+0

これは常にデフォルトの場合、 $ member_group_idを空白にしているスイッチの前にあるステートメント。 $ member_objに値があるかどうかを確認するためにエコーを行います。これがスイッチのデフォルト設定です。 – OfficialDtech

答えて

0

返事ありがとう私は答えを見つけました。ここではSQLの前と答えです。

前に:それは$に設定されている2行目に

$result2 = $DB->query("SELECT group_id, picture, joindate from ".DB_PREFIX."members where member_id = '".$member_id."'"); 
    if ($DB->num_rows($result)){ 
     $member_obj = $DB->fetch_object($result2); 
    } 
if (!empty($member_obj)){ 
    $member_group_id = $member_obj->group_id; 
} 

が発生し、それが情報を解析できなかったことを意味する結果2ない...次のように修正されたバージョンは、次のとおりです。

$result2 = $DB->query("SELECT group_id, picture, joindate from ".DB_PREFIX."members where member_id = '" . $params['member_id'] . "'"); 
    if ($DB->num_rows($result2)){ 
     $member_obj = $DB->fetch_object($result2); 
    } 
if (!empty($member_obj)){ 
    $member_group_id = $member_obj->group_id; 
} 

コメントした人にありがとう!

関連する問題