bonjour,
j’ai crée un nouveau type de contenu avec cck sur mon instance drupal 5.7.
le nouveau type de contenu s’appelle article ,et porte 3 champs titre ,body,et intro.j’aimerais pouvoir recuperer la date du noeud à partir d’un select depuis la base de donnée.
ce code :
$resul=db_query("select field_intro_value,field_titre_value,field_lecorps_value ,nid
from {content_type_article}
");
while($ligne=db_fetch_array($resul)){
....les instructions
}
?>
permet de recuperer le titre,l’intro et le corps.mais comment recuperer la date de création du noeud(le champs created ne pas reconnu pour ce type de contenu dans le requete) ?
merci d’avance
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

L’information sur la création du node est stockée dans la table node, il faut donc que tu fasse une jointure et que tu aille chercher la colonne created.
Quelque chose comme ca devrait marcher :
<?php$resul=db_query("
SELECT field_intro_value, field_titre_value, field_lecorps_value , nid, created
FROM {content_type_article} as cta, {node} as n
WHERE cta.nid = n.nid
"
);?>
zmove
319
(pour la ref… http://drupalfr.org/node/3782)
Quelques remarques concernant la réponse de zmove :
Quand tu fais une jointure, prefixe tes champs par le nom de la table ou son raccourcis, il me semble que sinon suivant la configuration SQL tu vas avoir une belle erreur car la requête portera à confusion (ici nid se trouve dans les 2 tables).
Ensuite niveau écriture, les jointures s’écrivent plutôt comme ça :
<?php$query = "SELECT "
. "cta.field_intro_value,"
. "cta.field_titre_value,"
. "cta.field_lecorps_value,"
. "n.nid,"
. "n.created "
. "FROM {content_type_article} as cta "
. "LEFT JOIN {node} as n ON n.nid = cta.nid"; $result = db_query($query);
?>
Après, je ne suis pas un expert SQL, si ta méthode est meilleure, je suis open pour que tu m’en expliques les raisons ;)
Pour revenir à la question originale, «created» contient le timestamp de la date de création et «changed» sa date de dernière modification.
Pour les obtenir ensuite de manière lisible, utilise quelque chose comme ça :
<?phpwhile ($row = db_fetch_object($result)) {
print $row->field_intro_value;
print $row->field_titre_value;
print $row->field_lecorps_value;
print format_date($row->created, 'custom', 'd/m/Y H:i:s');
}
?>
Mais ce qui me chiffonne dans la question initiale, c’est que tu semble faire une requête pour charger les infos de ton node alors qu’il y a des fonctions d’API…
<?php$nid = 1;// C'est l'id du node $node = node_load($nid);
print
$node->field_intro[0]['value'];print $node->field_titre[0]['value'];
print $node->field_lecorps[0]['value'];
print $node->created;
?>
Si je vais plus loin dans mon raisonnement, pourquoi des champs CCK quand tu as $node->title et $node->body ?
Et surtout pourquoi écrire des requêtes si tu ne te débrouilles pas trop en SQL alors qu’il y a le module views ?
webastien
131