Sida 1 av 1

Could not update user level när jag ändrar permissions

Postat: 2005-11-07 21:03
av Joakim
Jag får detta meddelandet när jag försöker ändra rättigheter på mina användare:

Kod: Markera allt

Could not update user level

DEBUG MODE

SQL Error : 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 3

UPDATE phpbb_users SET user_level = 0 WHERE user_id IN ()

Line : 555
File : admin_ug_auth.php
...och min fil ser ut så här vid detta området:

Kod: Markera allt

{
			$sql = "UPDATE " . USERS_TABLE . " 
				SET user_level = " . USER . ( isset($rankcfg[RANK_CFG_MOD.',1']) ? ', user_rank = 0' : '' ) . "
				WHERE user_id IN ($unset_mod)";
			if ( !($result = $db->sql_query($sql)) )
			{
				message_die(GENERAL_ERROR, 'Could not update user level', '', __LINE__, __FILE__, $sql);


			}
Någon som vet vad det kan vara ?

Postat: 2005-11-07 22:25
av Holger
Se efter i uppdateringsanvisningarna (för du har väl uppdaterat till 2.0.18?!) om du har gjort rätt. Det verkar som om något har hamnat en rad för långt upp eller ner.

Postat: 2005-11-09 15:51
av Joakim
Hmm...visst har jag uppdaterat, men jag kan inte hitta något fel. Ersätter ju bara befintliga raden i just den filen också :?

Postat: 2005-11-09 15:55
av Holger
Hos mig ser det ut så här:

Kod: Markera allt

		if ( $unset_mod != '' )
		{
			$sql = "UPDATE " . USERS_TABLE . " 
				SET user_level = " . USER . " 
				WHERE user_id IN ($unset_mod)";
			if( !($result = $db->sql_query($sql)) )
			{
				message_die(GENERAL_ERROR, "Couldn't update user level", "", __LINE__, __FILE__, $sql);
			}
		}
EDIT! Tog fel ställe!!!

Postat: 2005-11-09 16:26
av Joakim
Vad menar du nu ? Gjorde du fel nu eller har jag gjort det ? :)

Postat: 2005-11-09 16:29
av Holger
Detta har jag och det funkar bra:

Kod: Markera allt

      if ( $unset_mod != '' ) 
      { 
         $sql = "UPDATE " . USERS_TABLE . " 
            SET user_level = " . USER . " 
            WHERE user_id IN ($unset_mod)"; 
         if( !($result = $db->sql_query($sql)) ) 
         { 
            message_die(GENERAL_ERROR, "Couldn't update user level", "", __LINE__, __FILE__, $sql); 
         } 
      }
Det verkar som om något har blivit fel i din kod ...

Postat: 2005-11-09 16:33
av Joakim
Ser dina rader runt 550 ut sådär ?

Så här sitt mer ut runt dessa raderna:

Kod: Markera allt

if (sizeof($group_user))
		{
			$sql = "UPDATE " . USERS_TABLE . " 
				SET user_level = " . USER . ( isset($rankcfg[RANK_CFG_MOD.',1']) ? ', user_rank = 0' : '' ) . "
				WHERE user_id IN ($unset_mod)";
			if ( !($result = $db->sql_query($sql)) )
			{
				message_die(GENERAL_ERROR, 'Could not update user level', '', __LINE__, __FILE__, $sql);
			}
		}

		if ( $unset_mod != '' )
		{
			$sql = "UPDATE " . USERS_TABLE . " 
				SET user_level = " . USER . " 
				WHERE user_id IN ($unset_mod)";
			if( !($result = $db->sql_query($sql)) )
			{
				message_die(GENERAL_ERROR, "Couldn't update user level", "", __LINE__, __FILE__, $sql);
			}
		}

		message_die(GENERAL_MESSAGE, $message);
	}
}

Postat: 2005-11-09 16:37
av Holger
Japp!

Postat: 2005-11-09 16:38
av Joakim
Kolla igen...uppdaterade mitt förra inlägg....

Postat: 2005-11-09 16:43
av Holger
Nä, du verkar ha en modd, mina ser ut så här:

Kod: Markera allt

		if (sizeof($group_user))
		{
			$sql = "UPDATE " . USERS_TABLE . " 
				SET user_level = " . USER . " 
				WHERE user_id IN (" . implode(', ', $group_user) . ") AND user_level = " . MOD;
			if ( !($result = $db->sql_query($sql)) )
			{
				message_die(GENERAL_ERROR, 'Could not update user level', '', __LINE__, __FILE__, $sql);
			}
		}

		message_die(GENERAL_MESSAGE, $message);
	}
}
else if ( ( $mode == 'user' && ( isset($HTTP_POST_VARS['username']) || $user_id ) ) || ( $mode == 'group' && $group_id ) )
{
	if ( isset($HTTP_POST_VARS['username']) )
	{
		$this_userdata = get_userdata($HTTP_POST_VARS['username'], true);
		if ( !is_array($this_userdata) )
		{
			message_die(GENERAL_MESSAGE, $lang['No_such_user']);
		}
		$user_id = $this_userdata['user_id'];
	}
Ok, jag tror att det kan bero på att inte alla dina användare har tillordnats en grupp (det måste de vara).

Prova detta skript
http://www.phpbb.com/phpBB/viewtopic.ph ... highlight=

Kod: Markera allt

<?php 
//*****  check users and user groups ****// 

define('IN_PHPBB', true); 
$phpbb_root_path = './'; 
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 
include($phpbb_root_path . 'includes/functions_search.'.$phpEx); 

// Start session management 
$userdata = session_pagestart($user_ip, PAGE_SEARCH); 
init_userprefs($userdata); 
// End session management 

$sql = "SELECT user_id, username 
    FROM " . USERS_TABLE ." 
    WHERE user_id > 0"; 
if ( !($result = $db->sql_query($sql)) ) 
{ 
    message_die(GENERAL_ERROR, 'Could not obtain user list', '', __LINE__, __FILE__, $sql); 
} 

$liste =''; 
while ( $row = $db->sql_fetchrow($result) ) 
{ 
   $username = $row['username']; 
   $user_id = $row['user_id']; 
   $usergroup = ''; 
    
   $sql1 = "SELECT ug.group_id 
          FROM " . USER_GROUP_TABLE ." ug, ". GROUPS_TABLE. " g 
          WHERE ug.user_id = $user_id 
            AND ug.group_id = g.group_id 
            AND g.group_single_user  = 1 
            "; 
              
   if ( ($result1 = $db->sql_query($sql1)) ) 
   { 
       $row1 = $db->sql_fetchrow($result1); 
          $usergroup =( ( $row1['group_id'] != '' ) ? $row1['group_id'] : 'User has no user group'.$row1 ); 
          
   } 

          if (!($row1['group_id'] != '')) 
          { 
              
         $sql2 = "SELECT MAX(group_id) AS total 
            FROM " . GROUPS_TABLE; 
         if ( !($result2 = $db->sql_query($sql2)) ) 
         { 
            message_die(GENERAL_ERROR, 'Could not obtain next group_id information', '', __LINE__, __FILE__, $sq2l); 
         } 

         if ( !($row2 = $db->sql_fetchrow($result2)) ) 
         { 
            message_die(GENERAL_ERROR, 'Could not obtain next group_id information', '', __LINE__, __FILE__, $sql2); 
         } 
         $group_id = $row2['total'] + 1; 
          
          
         $sql3 = "INSERT INTO " . GROUPS_TABLE . " (group_id, group_name, group_description, group_single_user, group_moderator) 
            VALUES ($group_id, '', 'Personal User', 1, 0)"; 
         if ( !($result3 = $db->sql_query($sql3, BEGIN_TRANSACTION)) ) 
         { 
            message_die(GENERAL_ERROR, 'Could not insert data into groups table', '', __LINE__, __FILE__, $sql3); 
         } 

         $sql4 = "INSERT INTO " . USER_GROUP_TABLE . " (user_id, group_id, user_pending) 
            VALUES ($user_id, $group_id, 0)"; 
         if( !($result4 = $db->sql_query($sql4, END_TRANSACTION)) ) 
         { 
            message_die(GENERAL_ERROR, 'Could not insert data into user_group table', '', __LINE__, __FILE__, $sql4); 
         } 

              
             $usergroup = $usergroup.', adding user group '.$group_id; 
          } 


   $liste .= ( ( $liste != '' ) ? '<br> ' : '' ) . $username.' <b>'.$usergroup.'</b>'; 
} 

message_die(GENERAL_MESSAGE,'Users:<br>'.$liste); 

?>
Glöm inte att göra backup av dina databas först!

Postat: 2005-11-09 17:00
av Joakim
Fixade det. Hade på någotvis lagt modden på fel ställe. Det märkliga är att jag inte märkt det tidigare :)

Tack för hjälpen Holger

Postat: 2005-11-09 17:17
av Holger
Låter bra! :-)