Помогитое правильно сделать запрос

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 17 мая 2012 в 14:51
Здравствуйте!!!
Хочу изменить изменения статуса
В components/users/frontend.php вставил
  1. $is_send = $inCore->inRequest('stat');
  2.  
  3. if ($is_send){
  4.  
  5. $inCore->loadClass('config');
  6. $inCore->loadClass('db');
  7. $inCore->loadClass('user');
  8. $inCore->loadClass('actions');
  9.  
  10. $inDB = cmsDatabase::getInstance();
  11. $inUser = cmsUser::getInstance();
  12.  
  13. $inUser->update();
  14.  
  15. if (!$inUser->id) { return; }
  16.  
  17. if (!$user_id) { $user_id = $inUser->id; }
  18.  
  19. if ($user_id != $inUser->id && !$inUser->is_admin) { return; }
  20.  
  21. $status = $inCore->request('status', 'str', '');
  22. $user_id = $inCore->request('id', 'int', 0);
  23. if (strlen($status)>140){ $status = substr($status, 0, 140); }
  24. $sql = "UPDATE cms_users
  25. SET status = '{$status}', status_date = NOW()
  26. WHERE id = '{$user_id}'
  27. LIMIT 1";
  28.  
  29. $inDB->query($sql);
  30.  
  31.  
  32. //регистрируем событие
  33. if ($status){
  34.  
  35.  
  36. cmsActions::log('set_status', array(
  37. 'object' => '',
  38. 'object_url' => '',
  39. 'object_id' => 0,
  40. 'target' => '',
  41. 'target_url' => '',
  42. 'target_id' => 0,
  43. 'description' => $status,
  44. 'user_id' => $user_id
  45. ));
  46. }
  47. }
  48.  
в шаблоне com_users_profile.tpl вместо ссылки "изменить статус" вставил
  1. {if $myprofile}<div>
  2. <form action="" method="post">
  3. <input type="text" name="status" />
  4. <input type="submit" name="stat" value="изменить статус" />
  5. </div>
  6. {/if}
при нажатии на изменить статус в ленте появляется изменения а сам статус в профиле неменяется
как правильно написать запрос у базе для изменения статуса?
#2 17 мая 2012 в 15:03
Олег, не понял, зачем нужна эта строчка (номер 22)
  1. $user_id = $inCore->request('id', 'int', 0);
у вас же эта переменная уже определена выше
  1.  
  2. if (!$user_id) { $user_id = $inUser->id; }
  3. if ($user_id != $inUser->id && !$inUser->is_admin) { return; }
Я думаю, вы просто перед запросом сносите значение переменной, которая отвечает за id пользователя. И в итоге статус не меняется для нужного юзера. Сам запрос правильный.
#3 17 мая 2012 в 15:08
SJen, спасибо)))
статус изменился только результат виден после обновления страници
неподскажите как сделать автоматически обновление страници после изменения статуса?
#4 17 мая 2012 в 15:20
  1. {if $myprofile}<div>
  2. <form action="" method="post">
  3. <input type="text" name="status" />
  4. <input type="submit" name="stat" value="изменить статус" />
  5. </div>
  6. {/if}
закрывающийся тег </form> не поставили? — поставьте если нет.

И не понял, у вас разве изменения по аяксу работают? — что страница не обновляется… Если по аяксу, то в javascript можно поменять статус, нет смысла ради него целую страницу перегружать. Не понял просто вашу схему до конца… аякса не заметил, а если его нет — то страница и так сама обновляется
#5 17 мая 2012 в 15:25
SJen, аякса нет
при изменении статуса страница перезагружается но статус остаётся прежний пока ещё раз не обновиш страницу
#6 17 мая 2012 в 16:42
вставил
  1. $inCore->redirect("/users/{$usr['login']}/");
  2.  
и всё заработало чётко)))
вместо ссылки изменить статус
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.