Как я могу редактировать строку таблицы MySQL с помощью Code Igniter? - PullRequest
0 голосов
/ 15 октября 2011

поэтому у меня есть панель управления администратора, где я редактирую конкретного пользователя и меняю его группу пользователей на «пользователь» или «администратор», у меня также есть окно чата внутри каждого канала людей рядом с его потоком (это живойпотоковый сайт).Проблема в том, что, скажем, пользователь Билл публикует сообщения в окне чата Franks (id 1). Это сохраняется в MySQL Table (chatUsers) как: Имя пользователя: Bill, Тип: user, ChannelID: 1

Теперь допустим, что яназначить пользователя Биллом администратором ... Билл возвращается на канал Фрэнкс, но не имеет никаких полномочий администратора, однако у него есть полномочия администратора для любого другого канала.Почему это так?

Поскольку Билл все еще хранится как: «Имя пользователя: Билл, Тип: пользователь , ChannelID: 1» в канале Фрэнкса.

ИтакЧтобы подвести итог всего этого: При понижении в должности или назначении их в качестве администратора я хотел бы найти все экземпляры имени этого человека в таблице MySQL «chatUsers» и стереть его.

(Примечание: когда яобновить игрока (userGroup), который устанавливает его ранг в таблице «пользователь». Их имя и ранг будут отображаться в «chatUsers» только в том случае, если они публикуются в окне чата.)

Вот форма, которая отправляетсячтобы обновить пользователя:

<option value="admin" <?=($users->userGroup == 'admin') ? 'selected="selected"' : null?>>admin</option> 

Передается здесь в form_validation:

$this->form_validation->set_rules('userGroup', 'Usergroup', 'trim|required|strip_tags|xss_clean'); 

$rows['userGroup'] = $this->input->post('userGroup');

Передается в db_users.php:

$this->hasColumn('userGroup','enum', null, array('values' => array('user','admin'), 'default' => 'user'));

Теперь внутри формыпроверка У меня есть этот блок кода:

$rows['id']     = $id;
$rows['firstName']   = $this->input->post('firstName');
$rows['lastName']   = $this->input->post('lastName');
$rows['email']    = $this->input->post('email');
$rows['paypalEmail']  = $this->input->post('paypalEmail');
$rows['gender']    = $this->input->post('gender');
$rows['userGroup']   = $this->input->post('userGroup');
$rows['status']    = $this->input->post('status');
$rows['allowBroadcasting'] = $this->input->post('allowBroadcasting');

$DBUsers = new DB_Users();

if ($DBUsers->saveIt($rows)) {

if($rows['status'] == 'rejected') {

 // Get and update user channels
 $userChannels = Doctrine_Query::create()->from('DB_Channels')->where('userId = ?', $id)->fetchArray(array(), Doctrine_Core::HYDRATE_ARRAY);
 if(is_array($userChannels) AND count($userChannels) > 0) {
  foreach ($userChannels as $userChannel) {
   $channelRows['id']   = $userChannel['id'];
   $channelRows['suspended'] = 1;

   $DBChanneles = new db_Channels();
   $DBChanneles->saveIt($channelRows);
  }
 }


 // Get and update user channels
 $userVideos = Doctrine_Query::create()->from('DB_Videos')->where('userId = ?', $id)->fetchArray(array(), Doctrine_Core::HYDRATE_ARRAY);
 if(is_array($userVideos) AND count($userVideos) > 0) {
  foreach ($userVideos as $userVideo) {
   $videoRows['id']  = $userVideo['id'];
   $videoRows['status'] = 'rejected';

   $DBVideos = new db_Videos();
   $DBVideos->saveIt($videoRows);
  }
 }

} 

Под

if ($DBUsers->saveIt($rows)) { 

Могу ли я добавить что-то вроде:

$chatUsers = Doctrine_Query::create()->from('DB_chatUsers')->where('userId = ?', $id)-   >fetchArray(array(), Doctrine_Core::HYDRATE_ARRAY);
 if(is_array($chatUsers) AND count($chatUsers) > 0) {
  foreach ($chatUsers as $chatUser) {
   $chatUserRows['id']   = $chatUser['id'];
   $chatUserRows['type']  = ('userGroup');

   $DBChatUsers = new db_chatUsers();
   $DBChatUsers->saveIt($chatUsersRows);
  }
 } 

?Я не уверен, что это правильно ... Я новичок в PHP

1 Ответ

1 голос
/ 15 октября 2011

Это не проблема воспламенителя кода, дизайн вашей базы данных неверен,

Вы не должны хранить какую-либо информацию о пользователях в таблице чата, кроме идентификатора, таким образом, когда вы обновляете таблицу пользователей везде, где-либо еще появляется информация об обновлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...