2011-10-27 46 views
0

即時通訊在drupal中使用hook形式alter。hook表單提交,如何增加數據庫字段?

如果字段留空我想讓它變得提交字段的最後一個值和0.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);到提交的價值它的作品。

回答

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

嗨,謝謝你的迴應。我不能將它的大部分與我即將做的事情聯繫起來。我是否改變了我的意見,或者我加入了它。如果我只用上面的im沒有聲明從 –

+0

那裏得到maxbid啊,'$ maxbid'已經出現了!您可以使用'$ obj-> amount'來代替'$ maxbid'(在上面的答案中編輯)。以上是從'uc_auction_bid'將一整行加載到一個對象中。然後它更改對象的'amount'字段,並將其保存回數據庫。由於'$ obj'具有記錄的所有細節(最重要的是主鍵),'drupal_write_record'將起作用。上面的代碼現在可以用來代替你的原始代碼(至少我很確定它可以試試它:-)) – Clive

0

我是新來的,希望我可以發表評論,而不是說我回答什麼...

總之,什麼是$ maxbid?它在比較之前不存在於函數中。這是全球性的嗎?或者你的代碼示例中$ input應該是$ maxbid(反之亦然)?

+0

謝謝你指出。 –