Не выполнить UPDATE

 
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1545
Здравствуйте. Дело происходит в новом компоненте. Не выполняется запрос в базу на обновление массива. Делаю так.
Создал форму. С инета по GET получил данные-ссылки, теги и т. п. Создал массив array(). Занёс в базу. Создал другую форму для редактирования.
Код PHP:
  1. <form metod = «POST»>
  2. <input class="submit" type="submit" name="saves" value="Сохранить" onclick="location.href='test/eddit{$test.id}';" />
  3. </form>
Вывожу в неё массив : $test = $model-> checkTest($id);
Спойлер
Проверяю POST

$saves = $_POST['saves'];
if (isset($saves)){
print_r($test);
}
Массив на месте, данные в форме.

А вот далее меняю данные в форме, пытаюсь выполнить :

$yes = $model->update($id);

Спойлер
Код PHP:
  1.  
  2. if ($yes){
  3. cmsCore::addSessionMessage('Отредактировано!', 'success');
  4. //$inCore->redirect('/test');
  5. }
  6. if (!$yes){
  7. cmsCore::addSessionMessage('не получилось!', 'error');
  8. //$inCore->redirect('/test');
  9. }
  10. }
и ничего не выходит. Хоть и пишет, что обновились. print_r($yes); выводит 1.
Включил режим отладки этого запроса нет.
Редактировалось: 1 раз (Последний: 1 апреля 2014 в 19:48)
Посетитель
small user social cms
МедальКубок зрительских симпатий
Сообщений: 692
Самое время отложить php и заняться изучением html, в частности всего, что относится к формам.
Skype: pasha--g
Реклама
cms
InstantCMS Team
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 4379
Lora, прошу не воспринимать слова в штыки, но вам однозначно не мешало бы изучить матчасть.
http://www.php.net/manual/ru/langref.php
http://htmlbook.ru/html
http://www.mysql.ru/docs/man/
http://phpclub.ru/mysql/doc/
Видео каталог для InstantCMS | Аудио каталог для InstantCMS | Мы Вконтакте | Предложение для спонсоров
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1545
С вами всё ясно. smile И мат часть я конечно выучу, но не понятно вы здесь для чего тусуетесь? Что бы перед друг другом понты гонять, какие вы крутые ппрограммисты? И это вроде не форум PHP или MySQL. У меня было желание систему узнать, чем то помочь, а вместо этого наблюдаю одних умников и непонятную возню. Закончится всё это как и с MODx. Когда больше некого стало хавать, они стали "жрать" друг друга. В результате не сообщества нормального не осталось, не системы ( за едениц не говорю.Люди везде есть). Хотя всё относительно конечно. Спасибо всем за помощь. Холивар разводить не собираюсь, так что давайте, не обессудьте,если что. Просьба, всех к кому относится данный пост игнорировать мои посты в будущем.
Посетитель
small user social cms
Медаль
Сообщений: 186
Fuze:

Lora, прошу не воспринимать слова в штыки, но вам однозначно не мешало бы изучить матчасть.
http://www.php.net/manual/ru/langref.php
http://htmlbook.ru/html
http://www.mysql.ru/docs/man/
http://phpclub.ru/mysql/doc/

Спасибо за ссылки! hoho
InstantConcurs 1.06
InstantCMS Team
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 4379
Lora:
И мат часть я конечно выучу, но не понятно вы здесь для чего тусуетесь? Что бы перед друг другом понты гонять, какие вы крутые ппрограммисты?
Полегче на поворотах, вам никто не хамил.
Видео каталог для InstantCMS | Аудио каталог для InstantCMS | Мы Вконтакте | Предложение для спонсоров
InstantCMS Team
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1343
Lora:
но не понятно вы здесь для чего тусуетесь?
Дело в том, что никто не хочет объяснять самые азы, это на любом форуме по любому вопросу так.
Есть же учебники для этого.

По сути:
1. Вот это:
Lora:
onclick="location.href='test/eddit{$test.id}';"
на кнопке не нужно. При нажатии вместо отправки формы будет происходить редирект. См. как отправлять html-формы в мануалах.

2. Что значит -
Lora:
Вывожу в неё массив
? В форме должны быть поля, чтобы что-то в нее вывести. См. теги form, input, select в мануалах.

3.
Lora:
Проверяю POST
$_POST содержит данные которые отправлены из формы, а не должны быть в ней выведены.

4.
Lora:
$saves = $_POST['saves'];
if (isset($saves))
Это условие всегда будет true, даже если $_POST['saves'] не задан. Просто в этом случае $saves будет содержать null, но переменная будет определена. Проверять нужно сам $_POST['saves']. См. про isset() в мануалах.

5.
Lora:
$yes = $model->update($id);
Не понятно откуда должно взяться $id.

Lora:
Что бы перед друг другом понты гонять, какие вы крутые ппрограммисты?
Это, конечно, хамство.
Редактировалось: 1 раз (Последний: 1 апреля 2014 в 21:53)
InstantCMS Team
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1343
Lora:
$this->inDB->update('cms_test', $id);
И тут чего-то не хватает. В какой таблице и какую запись менять - указано, а что именно менять - нет.
Точный синтаксис для этой функции сейчас не глядя не скажу, см. примеры в других компонентах.
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1545
С первым пунктом согласен. Все необходимые поля в форме присутствуют, что следует из логики изложения, то что есть в $_POST тоже понимаю, я и имел ввиду, как и вы написали. Насчёт четвёртого пункта, видно не допонял в манах, буду смотреть.$id присутствует в массиве из $id = cmsCore::request('id', 'int', 0); Дело в том, что сам нужный массив присутствут и в форму данные заносятся, но не сохраняются. И я не могу понять почему.И перед тем как писать сюда что смог просмотрел. Но не проникся. Насчёт хамства был не прав.
Модератор
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1675
Код PHP:
  1.  
  2. $this-> inDB-> update( 'cms_test', $id );
  3.  
  4. //in file db.class.php
  5. public function update( $table, $update_array, $id ){...}
  6.  
Вы пропускаете второй параметр $update_array, самый важный который и содержит данные в виде массива
'field' => $value.....
«Главное “настрой”! И всё настроиться…» © ) Их знают все! А вы?
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1545
Lora:
И тут чего-то не хватает.
Возможно, я перепробовал уже не один вариант. Изначально та была ещё переменная.

public function update($id, $test){


$this->inDB->update('cms_test', $test, $id);

return true;

}
Редактировалось: 1 раз (Последний: 1 апреля 2014 в 22:27)
Модератор
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1675
$test должен быть ассоциативным массивом в формате:
Код PHP:
  1.  
  2. $test = array(
  3. 'field_name_in_db_table' => $updated_value,
  4. 'other_field_name_in_db_table' => $other_updated_value..
  5. );
и т.д.
Редактировалось: 1 раз (Последний: 1 апреля 2014 в 22:32)
«Главное “настрой”! И всё настроиться…» © ) Их знают все! А вы?
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1545
Array ( [0] => Array ( [id] => 317 [name] => [text] => ...
Модератор
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 1675
Lora:
Array ( [id] => 317 [name] => [text] => ...

Нужно привести к такому виду и id не должен передоваться в массиве он идёт третьим параметром в функции
«Главное “настрой”! И всё настроиться…» © ) Их знают все! А вы?
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1545
Спасибо, понял. Буду пытаться.
В начало страницы
Предыдущая темаСледующая тема Перейти на форум: