Submitted by kimchibi on
Bonjour,
je suis débutant sous drupal 7 et php. Je dois récupérer les données d'un webform et les mettre sur une DB externe très simple. L'externalisation des données doit se faire après le submit du formulaire.
J'ai alors créée un module qui a pour nom passerelle. Je n'ai pas modifié mon settings.php et je me connecte directement via le module. Bien sûr, je n'ai aucun résultat, quand je consulte ma DB sous PhpMyAdmin, aucune ligne ne se crée.
Voici mon code :
<?php
function webform_extra_form_alter(&$form, &$form_state, $form_id)
{
//Nous allons submit les données du premier formulaire avec le NID 56
//Pour modifier un autre node, il suffit de changer le webform_client_form dans le if en dessous
if($form_id == 'webform_client_form_56')
{
$form['#submit'][] = 'webform_extra_submit';
//on fait appel à la fonction qui externalise les données sur la DB externe
}
}
function webform_extra_submit($form, &$form_state) {
$external_db = array (
'database' => 'blablabla',
'username' => 'blablabla',
'password' => 'blablabla',
'host' => 'blablabla',
'port' => '',
'driver' => 'mysql',
'prefix' => '',
);
Database::addConnectionInfo('bla', 'default', $external_db);
//On switch sur la DB externe (pour switcher sur la DB drupal, ne rien mettre en param)
db_set_active('bla');
//Création adresse IP et ID de submit
$ip=$_SERVER['REMOTE_ADDR']; //adresse IP d'où vient le submit
$uid ="a".date('Y-m-d')."-".date("H:i:s"); //ajout date et heure à l'ID
$uid .=substr(base64_encode(md5(rand())), 0, 5).""; //ajout valeur aléatoire à l'ID
$civilite = $form_state['values']['civilite'];
$nom = $form_state['values']['nom'];
$prenom = $form_state['values']['prenom'];
$adresse = $form_state['values']['adresse'];
$cp = $form_state['values']['cp'];
$ville = $form_state['values']['ville'];
$portable = $form_state['values']['portable'];
$tel = $form_state['values']['tel'];
$email = $form_state['values']['email'];
db_insert('folders')
->fields(array(
'uid' => $uid,
'ipadress' => $ipadress,
'civilite' => $civilite,
'nom' => $nom,
'prenom' => $prenom,
'adresse' => $adresse,
'cp' => $cp,
'ville' => $ville,
'portable' => $portable,
'tel' => $tel,
'email' => $email,
))
->execute();
db_set_active();
}
Je pense que le problème vient soit de la gestion du module webform soit de ma connection à la DB... mais j'ai essayé avec le settings.php sans succès. Après, peut-être que je fais fausse route dès le départ !
Merci par avance pour votre aide !