отправка формы подключения, как увеличить поле базы данных?

#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 (или наоборот) в вашем примере кода?