[résolu]Utiliser la fonction drupal_write_record()

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour à tous,

Quelque chose m'echappe quand à l'utilisation de cette fonction.
Pour créer un enregistrement, pas de soucis:

function add_record_form_submit($form, &$form_state) {
    $nom = $form_state['values']['mon_champ'];
    $table = 'ma_table';
    $record = new stdClass();
    $record -> Nom = $nom;
    drupal_write_record($table, $record);

Pour modifier un enregistrement dans ma_table ou ma clé = id, un truc me gêne:

function modif_record_form_submit($form, &$form_state) {
    $nom = $form_state['values']['mon_champ'];
    $table = 'ma_table';
    $record = new stdClass();
    $record -> Nom = $nom;
    drupal_write_record($table, $record, 'id');

Dans la syntaxe de la dernière ligne il faut passer la clé primaire pour faire un update, mais, et c'est là que je ne comprend pas, comment peut il connaitre la valeur de ma clé ? (d'ailleurs çà ne fonctionne pas).
J'ai essayé de mettre un variable mais ça marche pas (erreur sql).
Je pense que je m'y prend mal, mais je ne vois pas ou est le bug.
Si vous avez une idée du pourquoi je suis preneur.
merci

Forum : 
Version de Drupal : 

Bonjour,

Pour mettre à jour un enregistrement tu dois spécifier la valeur de l'identifiant dans l'objet que tu passes en paramètre.

Pour reprendre ton exemple :

function modif_record_form_submit($form, &$form_state) {
    $nom = $form_state['values']['mon_champ'];
    $table = 'ma_table';
    $id = 'mon_id';
    $record = new stdClass();
    $record -> Nom = $nom;
    $record -> id = $id;
    drupal_write_record($table, $record, 'id');

Haaa que les solutions simples sont belles et évidentes une fois qu'on les a devant les yeux !
Pour paraphraser un grand penseur de notre siècle, je n'étais pas aware sur ce coup là.;-)

Mille merci monseigneur.