Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не обновляется поле, на сервере хостера 
:(
    Опции темы
sugee
Дата 24.11.2005, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: нет
Всего: 4



Отчего такая штука, прекрасно работающая дома,
никак не хочет работать у хостера?
Код

 if(isset($action)&&$action=='edit') {
  
  echo "<form action='restoran-kazAdmin.php'>
  <input type=hidden name=data value={$data}> 
  <input type=hidden name=category value={$_POST['_category']}>
  <table><tr><td><b>Редактировать</b></td></tr>
  <tr><td><textarea cols=20 rows=1 name=NewValue></textarea></td></tr>
  <tr><td><input type=submit value=сохранить></td></tr>
  </table>
  </form>";
}

//*************************************
if(isset($_REQUEST['NewValue'])) {
$NewValue=$_REQUEST['NewValue'];
$field=
substr($data, 0, strpos($_REQUEST['data'],"."));
// это поле
$id=substr($_REQUEST['data'], strpos($_REQUEST['data'],".")+1);
// это id

mysql_query("update `{$_REQUEST['category']}` set `{$field}`='{$NewValue}'
 where `id`='{$id}'");
echo "<b>Информация о заведении обновлена.
</b>";
}


В таблицах БД всё абсолютно одинаково, значение которое я пытаюсь обновить пустое, но не NULL.

Из радиобатонов приходит в виде триады разделённой точками указание о том какое действие нужно выполнить над каким полем в записи с каким id.
Код

<input type=radio name=action value=delete.address.{$r['id']}>
<input type=radio name=action value=edit.address.{$r['id']}>

Потом из триады выделяется первая часть и если эта часть edit то делается то что написано в самом верху.
Код

$FirstPoint=strpos($_REQUEST['action'], ".");
$action=substr($_REQUEST['action'], 0, $FirstPoint);
$data=substr($_REQUEST['action'], $FirstPoint+1);

Так вот в случае с двумя полями "адрес" и "автостоянка" у меня эта штука не срабатывает(у хостера, дома работает всё).
Поскока дома работает все, я зря наверное описывал логику этого скрипта, что-то не то в базе данных. Но там все одинаково...

Это сообщение отредактировал(а) sugee - 24.11.2005, 20:27
PM MAIL   Вверх
-=Ustas=-
Дата 24.11.2005, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 17
Всего: 69



А на что ругается? Выводил mysql_error(); ?


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
sugee
Дата 24.11.2005, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: нет
Всего: 4



Вот вывел mysql_errror:
Unknown column '' in 'field list'

Это ведь относится к самому полю(у меня переменная $field) , а не к его значению
PM MAIL   Вверх
Mal Hack
Дата 24.11.2005, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 11
Всего: 261



{$_REQUEST['category']} - имеет пустое значение.
PM ICQ   Вверх
sugee
Дата 25.11.2005, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: нет
Всего: 4



Да, так и есть, $_REQUEST['category'] пустая
В блоке
Код

if(isset($action)&&$action=='edit') {   ...   }

$_POST['_category'] есть, я проверил

А как тогда она может не попасть сюда
Код

if(isset($_REQUEST['NewValue'])) {  ...  }


Может она как то с $_GET['category'] конфликтует, которая у меня через ссылки передается?
А почему дома этого нет?


PM MAIL   Вверх
Mal Hack
Дата 25.11.2005, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 11
Всего: 261



Цитата(sugee @ 25.11.2005, 00:05)
Может она как то с $_GET['category'] конфликтует, которая у меня через ссылки передается?

не может, а точно. Что такое $_REQUEST? Объединение $_GET, POST, COOKIES, поэтому его никто и не использует практически.
PM ICQ   Вверх
sugee
Дата 25.11.2005, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: нет
Всего: 4



я заменил category на table
соответственно
Код
<input type=hidden name=table value={$_REQUEST['_category']}>

и
Код

mysql_query("update `{$_REQUEST['table']}` set `{$field}`='{$NewValue}'
 where `id`='{$id}'");


Не помогает, та же ошибка, а переменной table у меня точно нигде не было

Цитата(Mal @ 25.11.2005, 00:44)
Что такое $_REQUEST? Объединение $_GET, POST, COOKIES, поэтому его никто и не использует практически.


У меня в некоторых случаях данные из hidden-поля
передаваемого методом POST почему то не попадали в массив $_POST
(не умещались что ли)
Потому я стал юзать $_REQUEST. Если данные вообще передались, то в $_REQUEST они точно есть.

PM MAIL   Вверх
R.M.
Дата 25.11.2005, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Анархист
****


Профиль
Группа: Участник
Сообщений: 2164
Регистрация: 8.6.2005
Где: Питер

Репутация: 0
Всего: 30



sugee

Помоему ограничеия есть только в GET а в POST их нет, как они у тебя могли не влезть?
И как если они передаются ПОСТом в посте их нет а в РЕКВЕСТе они есть?


--------------------
Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека.

Nokia LifeStyle - Всё для смартфонов Nokia 
PM MAIL WWW ICQ   Вверх
sugee
Дата 25.11.2005, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: нет
Всего: 4



Вот я тоже не понял как такое может быть,
может это галлюцинации у меня, но в POST-е их небыло а в REQUEST-е были.

Но теперь вот у меня беда совсем другая ...
PM MAIL   Вверх
Mal Hack
Дата 25.11.2005, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 11
Всего: 261



Цитата(sugee @ 25.11.2005, 11:01)
У меня в некоторых случаях данные из hidden-поля
передаваемого методом POST почему то не попадали в массив $_POST

Ну это скорее всего проблема в том, что ты форму не правильно составил.

1. Не юзаем $_REQUEST.
2. Поле просто так чрез переменню подставлять нельзя..
PM ICQ   Вверх
sugee
Дата 25.11.2005, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: нет
Всего: 4



Цитата(Mal @ 25.11.2005, 20:58)
Поле просто так чрез переменню подставлять нельзя..

А можно об этом поподробнее, я не совсем понял
smile
PM MAIL   Вверх
R.M.
Дата 26.11.2005, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Анархист
****


Профиль
Группа: Участник
Сообщений: 2164
Регистрация: 8.6.2005
Где: Питер

Репутация: 0
Всего: 30



sugee

Вобще откуда им взяца в ПОСТе если ты передаёш форму ГЕТом?
У тебя неуказан метод, следовательно метод ГЕТ, почитай учебник по HTML.


Цитата(sugee @ 26.11.2005, 00:22)
А можно об этом поподробнее, я не совсем понял


На сколько я понял Mal Hack имеет ввиду это
Цитата
mysql_query("update `{$_REQUEST['table']}` set `{$field}`='{$NewValue}'
where `id`='{$id}'");

Пиши нормально имя поля а не через переменную, и что это за {}? Пиши '".$NewValue."'


--------------------
Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека.

Nokia LifeStyle - Всё для смартфонов Nokia 
PM MAIL WWW ICQ   Вверх
sugee
Дата 26.11.2005, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: нет
Всего: 4



Блин, забыл указать метод!
Цитата
Пиши нормально имя поля а не через переменную

Тогда мне придётся писать этот запрос отдельно для
каждого поля и перед каждым запросом поставить проверку, что в строке которая пришла из радиобатона есть название этого поля.
Короче говоря, я не знаю какое именно поле я буду обновлять, их там много.

Цитата
и что это за {}? Пиши '".$NewValue."'

А ты впервые такое видишь? Это вполне нормальный способ подставлять значение переменной в строку
(или в SQL-запрос), у меня он никогда проблем не вызывал!

PM MAIL   Вверх
Mal Hack
Дата 26.11.2005, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 11
Всего: 261



Цитата
На сколько я понял Mal Hack имеет ввиду это

Ты меня не так понял. Я имел ввиду следующее:
Код

$table = ( isset( $_POST['table'] ) ) ? mysql_real_escape_string( $_POST['table'] ) : "default_table_name";
mysql_query("update `{$table}` set `{$field}`='{$NewValue}'
where `id`='{$id}'");

Если надо на несколько полей так делать, то через switch.
PM ICQ   Вверх
sugee
Дата 26.11.2005, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: нет
Всего: 4



Получилось!
Всему виной были две строчки
Код

$field=substr($data, 0, strpos($_REQUEST['data'],"."));

$id=substr($data, strpos($_REQUEST['data'],".")+1);

$data в этом месте не была видна. Я между прочим так и не понял почему, ведь любая переменная объявленная не в функции по умолчанию глобальная!

Я вот как сделал
Код

$field=substr($_REQUEST['_data'], 0, strpos($_REQUEST['_data'],"."));

$id=substr($_REQUEST['_data'], strpos($_REQUEST['_data'],".")+1);

После этого всё стало на свои места.

Цитата(Mal @ 26.11.2005, 18:08)
$table = ( isset( $_POST['table'] ) ) ? mysql_real_escape_string( $_POST['table'] ) : "default_table_name";

Mal Hack, я в этой конструкции одно не понял, чем мне поможет имя таблицы по дефолту, если $_POST['table'] не передалась?
Это может привести к тому что я изменю значение не в той таблице! И switch ничем не поможет...
Я ведь могу получить имя таблицы только через $_POST['table']!




PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0586 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.