2011-10-27 4 views
0

en utilisant un crochet en forme de drupal.Soumettre formulaire, comment augmenter un champ de base de données?

Si les champs laissés vides je le veux pour obtenir la dernière valeur soumise pour le champ et l'augmenter par .01

Ive a essayé

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

mais il ny a pas de mise à jour avec quoi que ce soit, je sais $ input01 fonctionne comme je l'ai essayé dans une fonction différente.

si je modifie drupal_write_record ('table', $ input01); à la valeur soumise cela fonctionne.

Répondre

1

drupal_write_record() s'attend à ce que le deuxième argument soit un objet, au moment où vous transmettez un nombre. En outre, si vous essayez de mettre à jour un enregistrement, vous devrez fournir les clés primaires de la table en tant que troisième argument. Quelque chose comme ceci:

$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

Salut, merci pour la réponse. Je ne pourrais pas relier la plupart de ce à quoi je fais si. Est-ce que je change le mien au dessus ou est-ce que je l'ajoute. Si je n'utilise que ce qui précède, je ne déclare pas où je reçois maxbid de –

+0

Ah, '$ maxbid' est apparu! Vous pouvez utiliser '$ obj-> amount' à la place de' $ maxbid' (édité dans la réponse ci-dessus). Ce qui précède charge une ligne complète de 'uc_auction_bid' dans un objet. Il modifie ensuite le champ 'amount' de l'objet et l'enregistre dans la base de données. Comme '$ obj' a tous les détails de l'enregistrement (la plus importante clé primaire), 'drupal_write_record' fonctionnera. Le code ci-dessus pourrait maintenant être utilisé à la place de votre code d'origine (au moins, je suis assez sûr qu'il pourrait, essayez-le :-)) – Clive

0

Je suis nouveau ici et je souhaite que je pourrais faire un commentaire plutôt que de dire que je réponds à quoi que ce soit ...

Quoi qu'il en soit, ce qui est maxbid $? Il n'existe pas dans la fonction avant la comparaison. Est-ce un global? Ou est-ce que $ input doit être $ maxbid (ou vice versa) dans votre exemple de code?

+0

merci de le signaler. –

Questions connexes