#php #mysql #drupal #drupal-6
#php #mysql #drupal #drupal-6
Вопрос:
я использую изменение формы привязки в drupal.
Если поля остались пустыми, я хочу, чтобы он получил последнее значение, отправленное для поля, и увеличил его на .01
Я пробовал
function uc_pa_form_submit($form, amp;$form_state) {
global $user;
$maxbid = db_result(db_query('SELECT MAX(amount) FROM {uc_auction_bids} WHERE nid = %d', $node->nid));
$input01 = (($maxbid) ? $maxbid : 0) .01;
drupal_write_record('table', $input01);
но он ничем не обновляется, я знаю, что $input01 работает так, как я пробовал в другой функции.
если я изменю drupal_write_record(‘table’, $input01); на отправленное значение, это сработает.
Ответ №1:
drupal_write_record()
ожидает, что второй аргумент будет объектом, в тот момент, когда вы передаете число. Кроме того, если вы пытаетесь обновить запись, вам нужно будет предоставить первичные ключи таблицы в качестве третьего аргумента. Что-то вроде этого:
$sql = 'SELECT * FROM FROM {uc_auction_bids} WHERE nid = %d ORDER BY amount DESC LIMIT 1';
$obj = db_fetch_object(db_query($sql));
$obj->amount = (($obj->amount) ? $obj->amount: 0) .01;
drupal_write_record('uc_auction_bids', $obj, array('bid'));
Комментарии:
1. привет, спасибо за ответ. Я не мог связать большую часть этого с тем, что я делаю. Должен ли я изменить свое на указанное выше или добавить его. Если я использую только вышеуказанное, я не объявляю, откуда я получаю maxbid
2. Ах,
$maxbid
появился! Вы можете использовать$obj->amount
вместо$maxbid
(отредактировано в ответе выше). Вышесказанное загружает полную строку изuc_auction_bid
в объект. Затем он изменяетamount
поле для объекта и сохраняет его обратно в базу данных. Поскольку$obj
есть все детали записи (самое главное, первичный ключ),drupal_write_record
будет работать. Приведенный выше код теперь можно использовать вместо вашего исходного кода (по крайней мере, я уверен, что это возможно, попробуйте :-))
Ответ №2:
Я здесь новичок и хотел бы просто прокомментировать, а не говорить, что я на что-то отвечаю…
В любом случае, что такое $maxbid? Оно не существует в функции перед сравнением. Это глобальное? Или $input должен быть $maxbid (или наоборот) в вашем примере кода?