добавьте пару «имя-значение» в опубликованные данные, чтобы joomla могла их использовать и вставлять в БД

Я пытаюсь использовать платформу Joomla для создания таблицы основного содержимого. [http://docs.joomla.org/How_to_use_the_JTable_class]. файл загружается за несколько мгновений до этого (сохраните случайное имя изображения в формате jpg)

$data=&JRequest::get('post');

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

Я пытаюсь сделать что-то вроде$data=&JRequest::get('post'); $newdata=(array)$data; array_push($newdata,"images"=>"Dog");

я делаю новые данные, поскольку данные являются ссылкой на опубликованные переменные, и я подозреваю, что поэтому я не позволю мне добавлять значения в $ данные. Обычно я флешер, а не php, и мои знания здесь меня подводят.

Спасибо за любую помощь


person landed    schedule 20.04.2011    source источник
comment
что вы получаете от формы $data=&JRequest::get('post'); ? Возврат из &JRequest::get('post'); массив для нет?   -  person mahadeb    schedule 20.04.2011
comment
$data['images']=собаки; Кажется, это работает для меня, спасибо за вашу помощь, Махадеб. Я думаю, что это был массив или stdObject, не уверен.   -  person landed    schedule 20.04.2011
comment
Добро пожаловать. Ведь мы друг для друга :)   -  person mahadeb    schedule 20.04.2011
comment
ПОЛУЧИЛ МАССИВ С ДОПОЛНИТЕЛЬНЫМ ЗНАЧЕНИЕМ, он по-прежнему ничего не добавляет в БД, хотя запись создается. Я хотел бы использовать свой обычный SQL для вставки, если бы не полезная строка $listing_id = $table-›id; Причина, по которой мне нужна эта строка, заключается в том, чтобы получить идентификатор, так как я делаю дальнейшую вставку в другую таблицу, которая должна ссылаться на эту таблицу. Если кто-нибудь знает, как получить текущий вставленный идентификационный номер записи, как это делает этот метод, я могу использовать обычный SQL для вставки. Для получения ID НУЖНО делать магазин.   -  person landed    schedule 20.04.2011
comment
Я уверен, что делаю все это неправильно. Шаги: 1 загрузите изображение на сервер и запишите путь 2 вставьте запись в таблицу «content» с только что сгенерированным путем к изображению 3 Вставьте новую запись ref в только что созданную запись.   -  person landed    schedule 20.04.2011
comment
да - отлично спасибо! приближается сейчас... относится ли это к каждому уникальному соединению с БД, поэтому, если несколько пользователей делают вставки одновременно...   -  person landed    schedule 20.04.2011
comment
да, это вернет уважение к каждому уникальному соединению с БД   -  person mahadeb    schedule 20.04.2011
comment
Большое спасибо, вы очень полезны, и теперь я снова прогрессирую.   -  person landed    schedule 21.04.2011


Ответы (1)


Правильно, первое:

$data=&JRequest::get('post');

$data — это массив, вам не нужно его приводить. Чтобы добавить еще один элемент в массив, как описано в комментариях, сделайте следующее:

$data['images'] = 'cats';

Если вы используете обычный SQL для вставки, вы должны сделать что-то подобное, чтобы получить последний вставленный идентификатор, например. идентификатор строки, которую вы только что вставили:

$db = $this->getDBO();
$query = 'Some sql';
$db->setQuery($query);
if (!$db->query()) {
  JError::raiseWarning(100, 'Insert failed - '.$db->getErrorMsg());
}
$id = $db->insertid();

Если вы разрабатываете в Joomla, я предлагаю вам использовать предоставленные вам функции db, а не mysql_insert_id();

[ИЗМЕНИТЬ]

Если вы хотите использовать хранилище, вы можете получить последний вставленный идентификатор следующим образом:

$row->bind($data);
$row->check();
$row->store();
$lastId = $row->id;
person Martin    schedule 21.04.2011
comment
Привет. Я хотел использовать store в качестве J-фреймворка, который намного чище, выполняет очистку полей и т. д., но у меня это не сработало. Если подумать, это также не отправляло это поле, поэтому оно, вероятно, сработало, и теперь, когда я исправил этот массив, все должно снова начать работать нормально. Спасибо за Ваш ответ. - person landed; 22.04.2011