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

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 1 апреля 2014 в 19:46
Здравствуйте. Дело происходит в новом компоненте. Не выполняется запрос в базу на обновление массива. Делаю так.
Создал форму. С инета по GET получил данные-ссылки, теги и т. п. Создал массив array(). Занёс в базу. Создал другую форму для редактирования.
  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);

  1. /*****************************************************
  2.   public function checkTest($id){
  3.   $sql = 'SELECT * FROM cms_test WHERE id = "'.$id.'"';
  4.   $result = $this->inDB->query($sql) ;
  5.   if ($this->inDB->num_rows($result)){
  6.   while($item = $this->inDB->fetch_assoc($result)){
  7.   $off[] = $item;
  8.   }
  9.   }
  10.  
  11.   return $off; }
  12. *********************************************************/
Проверяю POST

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

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

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

  1. public function update($id){
  2.  
  3.  
  4. $this->inDB->update('cms_test', $id);
  5.  
  6. return true;
  7.  
  8. }
  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.
Включил режим отладки этого запроса нет.
#2 1 апреля 2014 в 20:34
Самое время отложить php и заняться изучением html, в частности всего, что относится к формам.
#4 1 апреля 2014 в 21:21
С вами всё ясно. smileИ мат часть я конечно выучу, но не понятно вы здесь для чего тусуетесь? Что бы перед друг другом понты гонять, какие вы крутые ппрограммисты? И это вроде не форум PHP или MySQL. У меня было желание систему узнать, чем то помочь, а вместо этого наблюдаю одних умников и непонятную возню. Закончится всё это как и с MODx. Когда больше некого стало хавать, они стали "жрать" друг друга. В результате не сообщества нормального не осталось, не системы ( за едениц не говорю.Люди везде есть). Хотя всё относительно конечно. Спасибо всем за помощь. Холивар разводить не собираюсь, так что давайте, не обессудьте, если что. Просьба, всех к кому относится данный пост игнорировать мои посты в будущем.
#6 1 апреля 2014 в 21:49

И мат часть я конечно выучу, но не понятно вы здесь для чего тусуетесь? Что бы перед друг другом понты гонять, какие вы крутые ппрограммисты?

Lora
Полегче на поворотах, вам никто не хамил.
#7 1 апреля 2014 в 21:52

но не понятно вы здесь для чего тусуетесь?

Lora
Дело в том, что никто не хочет объяснять самые азы, это на любом форуме по любому вопросу так.
Есть же учебники для этого.

По сути:
1. Вот это:

onclick="location.href='test/eddit{$test.id}';"

Lora
на кнопке не нужно. При нажатии вместо отправки формы будет происходить редирект. См. как отправлять html-формы в мануалах.

2. Что значит —

Вывожу в неё массив

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

3.

Проверяю POST

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

4.

$saves = $_POST['saves'];
if (isset($saves))

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

5.

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

Lora
Не понятно откуда должно взяться $id.

Что бы перед друг другом понты гонять, какие вы крутые ппрограммисты?

Lora
Это, конечно, хамство.
#8 1 апреля 2014 в 22:02

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

Lora
И тут чего-то не хватает. В какой таблице и какую запись менять — указано, а что именно менять — нет.
Точный синтаксис для этой функции сейчас не глядя не скажу, см. примеры в других компонентах.
#9 1 апреля 2014 в 22:08
С первым пунктом согласен. Все необходимые поля в форме присутствуют, что следует из логики изложения, то что есть в $_POST тоже понимаю, я и имел ввиду, как и вы написали. Насчёт четвёртого пункта, видно не допонял в манах, буду смотреть.$id присутствует в массиве из $id = cmsCore::request('id', 'int', 0); Дело в том, что сам нужный массив присутствут и в форму данные заносятся, но не сохраняются. И я не могу понять почему.И перед тем как писать сюда что смог просмотрел. Но не проникся. Насчёт хамства был не прав.
#10 1 апреля 2014 в 22:20
  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…
#11 1 апреля 2014 в 22:24

И тут чего-то не хватает.

Lora
Возможно, я перепробовал уже не один вариант. Изначально та была ещё переменная.

public function update($id, $test){


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

return true;

}
#12 1 апреля 2014 в 22:31
$test должен быть ассоциативным массивом в формате:
  1.  
  2. $test = array(
  3. 'field_name_in_db_table' => $updated_value,
  4. 'other_field_name_in_db_table' => $other_updated_value..
  5. );
и т.д.
#13 1 апреля 2014 в 23:13
Array ( [0] => Array ( [id] => 317 [name] => [text] =>…
#14 1 апреля 2014 в 23:38

Array ( [id] => 317 [name] => [text] => ...

Lora

Нужно привести к такому виду и id не должен передоваться в массиве он идёт третьим параметром в функции
#15 2 апреля 2014 в 00:34
Спасибо, понял. Буду пытаться.

Похожие темы

Как выполнить обычный запрос в mysql ?

Компоненты Создана 11 месяцев назад 3 сообщения

ON DUPLICATE KEY UPDATE

Флейм / Флуд / Оффтопик Создана 3 года назад 3 сообщения

Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.