フックフォーム提出、どのようにデータベースフィールドを増やすには?

drupalのフックフォームの変更を使用してim。

フィールドが空のままになっている場合は、フィールドに送信された最後の値を取得し、.01

私はもう試した

function uc_pa_form_submit($form, &$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)を変更した場合。提出された値に動作します。

0

2 答え

drupal_write_record() expects the second argument to be an object, at the moment you're passing a number. Also, if you're trying to update a record you'll need to provide the table's primary keys as the third argument. Something like this:

$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 が登場しました! $ maxbid の代わりに $ obj-> amount を使用することができます(上記の答えで編集)。上記は、 uc_auction_bid からオブジェクトに完全な行をロードしています。次に、オブジェクトの amount フィールドを変更し、データベースに保存し直します。 $ obj はレコードのすべての詳細(一番重要なのは主キー)を持っているので、 drupal_write_record が機能します。上記のコードは、元のコードの代わりに使用できるようになりました(少なくとも私はかなり試してみることができます:-))
追加された 著者 Clive,
お返事ありがとうございました。私は何をしているのか分からない。私は上記に鉱山を変更するか、それを追加しますか?私が上記のIMを使用して、どこからmaxbidを得るのかを宣言していない場合
追加された 著者 Sam Healey,

私はここに新しいと私は何かに答えると言うよりむしろコメントすることができます希望...

とにかく、$ maxbidとは何ですか?比較の前に関数内に存在しません。それはグローバルですか?または、コードサンプルに$ inputを$ maxbid(またはその逆)とする必要がありますか?

0
追加された
それを指摘してくれてありがとう。
追加された 著者 Sam Healey,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com