2011-10-27 11 views
0

私はdrupalのフックフォームの変更を使用しています。フックフォーム提出、データベースフィールドを増やす方法?

フィールドが、私はそれがフィールドのために提出された最後の値を取得し、アイブ氏は

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); 

をしようとしたが、それが何かを更新イマイチ0.01

ことによってそれを増やしたい空のままにしておくと、私は$を知っています私は別の関数で試したようにinput01が動作します。

私がdrupal_write_record( 'table'、$ input01)を変更した場合。提出された値に動作します。

答えて

1

drupal_write_record()は、数値を渡しているときに第2引数がオブジェクトであると想定しています。また、レコードを更新しようとしている場合は、テーブルの主キーを3番目の引数として指定する必要があります。このようなもの:

$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')); 
+0

こんにちは、お返事ありがとうございます。私は何をしているのか分からない。私は上記に鉱山を変更するか、それを追加しますか?私が上記のIMを使用して、どこにmaxbidを得るのかを宣言していない場合は、 –

+0

ああ、 '$ maxbid'が登場しました! '$ maxbid'の代わりに' $ obj-> amount'を使うことができます(上記の答えで編集)。上記は、 'uc_auction_bid'からオブジェクトにフル・ローをロードしています。オブジェクトの 'amount'フィールドを変更し、データベースに保存し直します。 '$ obj'はレコードのすべての詳細(一番重要なのは主キー)を持っているので、' drupal_write_record'が動作します。上記のコードは、元のコードの代わりに使用できるようになりました(少なくとも私はかなり試してみることができます:-)) – Clive

0

私はここに新たなんだと私はちょうどとにかく...

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

+0

それを指摘してくれてありがとう。 –

関連する問題