X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
> php+mysql. Помогите с проблемой
rus-xp
rus-xp
Topic Starter сообщение 26.3.2011, 13:56; Ответить: rus-xp
Сообщение #1


клоновод
*****


Группа: Banned
Сообщений: 647
Регистрация: 19.4.2009
Поблагодарили: 147 раз
Репутация:   23  


Ну вот, вновь столкнулся с проблемой.

Есть база данных пользователей, в которой существует столбец status, определяющий статус пользователя(бан, админ, пользователь).
В общем столкнулся с проблемой, при изменении статуса из админ панели.

Под админ панель создана отдельная папка, назовем её "admin". В ней находятся файлы users.php, index.php, do.php

index.php
....
switch ($do) {
case 'show_users':
include 'users.php';
break;
...

Точки конечно роли не играют, показываают, что это отрывок кода. Идем далее:
users.php
$adm = $_GET['adm'];
switch ($adm) {
case 'st':
include 'adm.php';
break;


default:

$userhtml='';
$sql = "SELECT * FROM users ORDER BY id DESC";
$result = mysql_query($sql);
while($data = mysql_fetch_array($result))
{
if($data['status']=='1') {$status="OK";}
elseif($data['status']=='0') {$status="BANNED";}
elseif($data['status']=='9') {$status="ADMIN";};
$do = '<form action="/admin/index.php?do=show_users&adm=st&userid='.$data['id'].'" method="post"><select name="new_status"><option value="0">BANNED</option><option value="1">OK</option><option value="9">ADMIN</option></select><input type="submit" value="Изменить статус" /></form>';

С помощью adm.php
производим нужное действие. Код в нем:
if(isset($_GET['userid']))
{
$userid = $_GET['userid'];
$new_status = $_POST['new_status'];
$sql = "UPDATE users SET status='".$new_status."' WHERE id='".$userid."'";
$result = mysql_query($sql) or die("Query failed : " . mysql_error());
// echo $_POST['new_status'].'<br/>'.$userid;
};


Собственно, при нажатии из админки кнопки - он переходит на на страницу(позже настрою в ней редирект), передает переменные(на ура), однако не изменяет их а базе, т.е. нужное действие не происходит.
Также проверял запрос через пхпмайадмин - всё сработало.

Вроде, всё расписал... В чем ошибка? Помогите пожалуйста.

П.С. Мой первый проект, возможно в коде есть недочеты. Увлекаюсь пхп всего 2 месяца, так что сильно не ругайте smile.gif


--------------------
бан за клоноводство и обман администрации форума
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Aferist
Aferist
сообщение 26.3.2011, 14:00; Ответить: Aferist
Сообщение #2


Участник
***


Группа: User
Сообщений: 192
Регистрация: 22.11.2008
Поблагодарили: 30 раз
Репутация:   5  


попробуй заменить
$sql = "UPDATE users SET status='".$new_status."' WHERE id='".$userid."'";

на это
$sql = "UPDATE users SET status='{$new_status}' WHERE id='{$userid}' LIMIT 1";
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Henry
Henry
сообщение 26.3.2011, 14:06; Ответить: Henry
Сообщение #3


Частый гость
**

Группа: User
Сообщений: 71
Регистрация: 5.9.2009
Из: Москва
Поблагодарили: 26 раз
Репутация:   8  


попробуй заменить
(rus-xp @ 26.3.2011, 12:56) *
$sql = "UPDATE users SET status='".$new_status."' WHERE id='".$userid."'";

или на, если $userid цифра
$sql = "UPDATE users SET status='".$new_status."' WHERE id=".$userid;


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
WebAction
WebAction
сообщение 26.3.2011, 14:14; Ответить: WebAction
Сообщение #4


Топовый постер
*******

Группа: Super Moderator
Сообщений: 3059
Регистрация: 18.11.2009
Поблагодарили: 2512 раз
Репутация:   249  


ТС, помните советы что я Вам давал в прошлой теме?

Сделайте:

if(isset($_GET['userid']))
{
$userid = $_GET['userid'];
$new_status = $_POST['new_status'];
$sql = "UPDATE users SET status='".$new_status."' WHERE id='".$userid."'";
echo $sql;
$result = mysql_query($sql) or die("Query failed : " . mysql_error());
// echo $_POST['new_status'].'<br/>'.$userid;
};


И скажите, что получается на выходе.

$sql = "UPDATE users SET status='$new_status' WHERE id='$userid'"; - так тоже можно wink.gif


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
rus-xp
rus-xp
Topic Starter сообщение 26.3.2011, 14:45; Ответить: rus-xp
Сообщение #5


клоновод
*****


Группа: Banned
Сообщений: 647
Регистрация: 19.4.2009
Поблагодарили: 147 раз
Репутация:   23  


Action
Ну ту проблему я решил именно аналогичным способом. Странно, что тут что-то не так.
К слову, в этом случае все переменные передаются на ура. Проверял. И в этом случае используется только одна форма.

Перепробовал все запросы, которые тут приводились, к сожалению статус не меняется.
Какие будут ещё предложения?

(WebAction @ 26.3.2011, 13:14) *
ТС, помните советы что я Вам давал в прошлой теме?

Сделайте:

if(isset($_GET['userid']))
{
$userid = $_GET['userid'];
$new_status = $_POST['new_status'];
$sql = "UPDATE users SET status='".$new_status."' WHERE id='".$userid."'";
echo $sql;
$result = mysql_query($sql) or die("Query failed : " . mysql_error());
// echo $_POST['new_status'].'<br/>'.$userid;
};


И скажите, что получается на выходе.


UPDATE users SET status='0' WHERE id='28'
изменял статус на 0, 28 пользователю


--------------------
бан за клоноводство и обман администрации форума
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
WebAction
WebAction
сообщение 26.3.2011, 14:46; Ответить: WebAction
Сообщение #6


Топовый постер
*******

Группа: Super Moderator
Сообщений: 3059
Регистрация: 18.11.2009
Поблагодарили: 2512 раз
Репутация:   249  


Если изменило статус, так в чем проблема?

Сообщение отредактировал WebAction - 26.3.2011, 14:47


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
rus-xp
rus-xp
Topic Starter сообщение 26.3.2011, 14:50; Ответить: rus-xp
Сообщение #7


клоновод
*****


Группа: Banned
Сообщений: 647
Регистрация: 19.4.2009
Поблагодарили: 147 раз
Репутация:   23  


(WebAction @ 26.3.2011, 13:46) *
Если изменило статус, так в чем проблема?

Именно в том, что статус не изменился


--------------------
бан за клоноводство и обман администрации форума
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Aferist
Aferist
сообщение 26.3.2011, 14:50; Ответить: Aferist
Сообщение #8


Участник
***


Группа: User
Сообщений: 192
Регистрация: 22.11.2008
Поблагодарили: 30 раз
Репутация:   5  


(rus-xp @ 26.3.2011, 13:45) *
UPDATE users SET status='0' WHERE id='28'
изменял статус на 0, 28 пользователю

прямо из php скрипта проверял?
или из пхпмуадмин?

а что пишет? ошибка вылазит какая-нибудь?

Сообщение отредактировал Aferist - 26.3.2011, 14:52
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
WebAction
WebAction
сообщение 26.3.2011, 14:57; Ответить: WebAction
Сообщение #9


Топовый постер
*******

Группа: Super Moderator
Сообщений: 3059
Регистрация: 18.11.2009
Поблагодарили: 2512 раз
Репутация:   249  


А что если заменить

$result = mysql_query($sql) or die("Query failed : " . mysql_error());


на
mysql_query($sql) or die("Query failed : " . mysql_error());


Сообщения об ошибках все включены?


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
rus-xp
rus-xp
Topic Starter сообщение 26.3.2011, 15:01; Ответить: rus-xp
Сообщение #10


клоновод
*****


Группа: Banned
Сообщений: 647
Регистрация: 19.4.2009
Поблагодарили: 147 раз
Репутация:   23  


В общем, случайно коннектился не к той базе(запасная), при изменении статуса, изменил данные. Тем не менее проблема осталась:
Выдает:

"Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/******/data/www/******/admin/function.php on line 31"


function.php подключен в index.php

function username_status($username, $password)
{
$status = 0;

$sql = "SELECT `status` FROM `users` WHERE `username` LIKE '".$username."' AND `password` LIKE '".$password."' LIMIT 0, 1";
$result = mysql_query($sql);
while($data = mysql_fetch_array($result)) //31 строка
{
$status = $data['status'];
};
return $status;
};


--------------------
бан за клоноводство и обман администрации форума
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Недорогие услуги - php/js/mysql/jquery/bootstrap
2 vlads 655 13.12.2017, 21:01
автор: vlads
Открытая тема (нет новых ответов) Веб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
18 qpPeW 3443 12.12.2017, 13:32
автор: qpPeW
Открытая тема (нет новых ответов) Помогите выбрать программу
Помогите выбрать программу
11 impak 1347 11.12.2017, 13:11
автор: Mikki
Открытая тема (нет новых ответов) php скрипты любой сложности / диз+верстка (адаптивно)
любые задачи на php - автоматизация, парсинг, работа с БД
1 affrodita 507 8.12.2017, 17:40
автор: affrodita
Открытая тема (нет новых ответов) Помогите найти плагин на WP
Отзывы с профилей соц сетей
1 SEOMR 441 30.11.2017, 7:18
автор: Nell


 



RSS Текстовая версия Сейчас: 16.12.2017, 7:48
Дизайн