Submitted by glenouve on
Bonjour,
Comment peut-on faire en php pour récuperer les champs, les informations du content profile associé à un utilisateur dans un computed_field;
J'ai voulu passer par la $user mais cela ne contient pas les champs du content profile.
Je recupere bien l'id de l'utilisateur son nom etc...
Je ne vois plus trop comment faire.
Merci
Bonjour, Je me permets de
Permalien Soumis par bthomas le 13 Décembre, 2010 - 15:23
Bonjour,
Je me permets de relancer ce sujet car je cherche aussi à accéder aux informations de content_profile. Mais je ne les trouve même pas dans la BDD... Est-ce que quelqu'un saurait où sont cachées les données utilisateurs enregistrées via ce module ?
Merci d'avance !
Hello, Content Profile
Permalien Soumis par mdupont@drupal.org le 13 Décembre, 2010 - 15:50
Hello,
Content Profile n'ajoute pas directement des informations à l'utilisateur, il associe un node de type Profile à chaque utilisateur. L'auteur d'un node de type Profile détermine à quel utilisateur les infos du node sont associées (chaque utilisateur ne peut créer qu'un node de type Profile).
Il faut donc, via PHP, récupérer les données du node de type Profile dont l'auteur correspond à l'utilisateur dont on veut avoir les informations.
Bonjour, En approfondissant
Permalien Soumis par Aya le 13 Décembre, 2010 - 16:02
Bonjour,
En approfondissant les recherches j'ai trouvée 2 table qui sont les tables de stockage de ces données.
Table Profile_fields et profile_values.
la jointure avec l'utilisateur est faite sur le uid dans la table profile_values.
Cordialement,
Aya
Edit: Sinon il y a aussi cette fonction là qui est inclus dans profile:
function profile_load_profile(&$user) {
$result = db_query('SELECT f.name, f.type, v.value FROM {profile_fields} f INNER JOIN {profile_values} v ON f.fid = v.fid WHERE uid = %d', $user->uid);
while ($field = db_fetch_object($result)) {
if (empty($user->{$field->name})) {
$user->{$field->name} = _profile_field_serialize($field->type) ? unserialize($field->value) : $field->value;
}
}
}
Elle permet de récupérer les valeur des champs profile dans la variable $user.
Voila en espérant que sa aide.
Edit2:
je ne pense pas que profile crée un node (aucune valeur dans node quand on ajout un nouvel utilisateur avec des contenu de profile) et de plus la table node_type ne contient aucune occurrence concernant le type profile donc impossible de créer un node de ce type.
Donc il vaut mieux utiliser les fonctions définit dans le module profile afin de récupérer les valeur voulues ou l'autre solution est de le refaire a la main.
On parle ici du module
Permalien Soumis par mdupont@drupal.org le 13 Décembre, 2010 - 16:05
On parle ici du module Content Profile (infos de profil stockées dans un node) et non du module Profile présent dans le coeur de Drupal (infos de profil stockées à part).
Autant pour moi
Permalien Soumis par Aya le 13 Décembre, 2010 - 16:10
Autant pour moi
Merci ! Tes explications
Permalien Soumis par bthomas le 13 Décembre, 2010 - 17:53
Merci ! Tes explications claires et précises m'éclairent beaucoup pour mon projet. :)
Merci aussi à Aya d'avoir approfondi les recherches pour moi, même si ce n'était pas sur le bon sujet ^^'
Bonjour, Avez-vous réussi à
Permalien Soumis par fouinette le 30 Août, 2011 - 17:19
Bonjour,
Avez-vous réussi à récupérer les données des nodes content profil ? Si, oui comment ? Merci.
Tu as essayé avec cette
Permalien Soumis par underq le 31 Août, 2011 - 09:36
Tu as essayé avec cette fonction "profile_load_profile(&$user)" ?
Bonjour, Du coup, j’ai
Permalien Soumis par fouinette le 31 Août, 2011 - 09:44
Bonjour,
Du coup, j'ai modifié avec ce que tu m'as dit :
function totofonc() {
profile_load_profile(&$user);
$date=$user->profile_date;
return '
Vous êtes sur la page Toto.
Votre nom d\'utilisateur est : ' .$GLOBALS['user']->name. '
Votre mail :' .$GLOBALS['user']->mail. '
Date echeance :'.$date.'
';
}
Mais ça ne fonctionne pas, il ne m'affiche pas le champ date.
Essaye ça : function
Permalien Soumis par underq le 31 Août, 2011 - 09:59
Essaye ça :
function totofonc() {
global $user;
profile_load_profile($user) ;
$date=$user->profile_date ;
return '
Vous êtes sur la page Toto.
Votre nom d'utilisateur est : ' .$user->name. '
Votre mail :' .$user->mail. '
Date echeance :'.$date.';
}
ça m’affiche sur ma page de
Permalien Soumis par fouinette le 31 Août, 2011 - 10:04
ça m'affiche sur ma page de résultat : Date echeance :Array
Je viens d’ajouter un autre
Permalien Soumis par fouinette le 31 Août, 2011 - 10:08
Je viens d'ajouter un autre champ mais de type texte et là avec ton code ça s'affiche bien, le problème est l'affichage du champ date.
Si ça affiche Array, c’est
Permalien Soumis par Numerizen le 31 Août, 2011 - 10:11
Si ça affiche Array, c'est que c'est un tableau, donc il faut dumper ce tableau (par exemple en faisant un print_r($date)) et voir où se trouvent les données intéressantes pour l'affichage dans ledit tableau.
Merci, ça fonctionne.
Permalien Soumis par fouinette le 31 Août, 2011 - 10:23
Merci, ça fonctionne.