Ajouter des données venant de la base de données à un node
Comment ajouter automatiquement des informations tirées de la base de données à un node ?
NB: Les infos ci-dessous sont un aide mémoire pour moi (mais diable j'ai su faire ça, je dois bien savoir le refaire !) et je le mets à la disposition de ceux que cela peut intéresser. Mais je ne suis pas une spécialiste de php/sql. Ne me demandez pas d'adapter mes codes à votre situation, je n'en n'ai ni les compétences ni le temps.Si vous êtes un spécialiste SQL ou PHP et voulez me proposer des corrections en revanche n'hésitez pas !Nombre de téléchargements effectués
Lorsque vous allez sur une page avec un lien vers un classeur à télécharger, vous voyez le nombre de téléchargements effectués.
En cliquant sur le lien, vous ouvrez (sans la voir) une page qui reçoit le nom du classeur en paramètres. Cette page contient un code php qui ajoute +1 au nombre de clics effectués pour ce fichier dans une table de la base de données. Cette table n'est pas incluse dans Drupal, il faut la créer soi même. Deux champs suffisent, l'un contenant le nom du fichier, l'autre le nombre de clics.
<?php
$fichier = ($_GET['fichier']);
$req = MYSQL_QUERY("SELECT * FROM clics WHERE fichier='$fichier'");
$row = mysql_fetch_array($req);
$clics=$row["clics"];
$row[clics]++;
MYSQL_QUERY("UPDATE clics SET clics='$row[clics]' WHERE fichier='$fichier' ");
MYSQL_CLOSE();
$url="blablabla".$fichier.".zip"; //l'adresse du dossier contenant les fichiers à télécharger doit être i
Header("Location:".$url);
?>Comment récupérer le nombre de clics déjà effectués ?
On crée un computed_field avec CCK.
Une fois CCK installé et activé, dans les pages "créer un type de contenu" vous avez un nouvel item : "gérer les champs".
Si vous avez de plus installé Computed_field, vous pouvez créer un champ qui contient du code php qui va faire des calculs à partir des données de votre base de données.
Dans notre exemple, on sélectionne le type de contenu "classeurs" puisque cette info n'est pas pertinente pour les pages astuces.
Dans ajouter un champ, dans le menu déroulant sélectionnez computed_field.
dans computed code, entrez le code php suivant
if (!$node->nid) node_save($node);
$noeud=$node->nid;
// on recherche l'urlalias associé à ce nid
$src="node/".$noeud;
$req = MYSQL_QUERY("SELECT dst FROM url_alias WHERE src='".$src."'");
$row = mysql_fetch_array($req);
$dst=$row['dst'];
$alias=explode("/", $dst);
$fichier=$alias[1];
$req = MYSQL_QUERY("SELECT * FROM clics WHERE fichier='".$fichier."'");
$row = mysql_fetch_array($req);
$clics=$row['clics'];
$affiche= "<a href='../clic?fichier=".$fichier."'>".$fichier."</a> - téléchargé ".$clics. " fois";Enregistrez et testez !
- Vous devez vous identifier ou créer un compte pour écrire des commentaires
