Mini Module last download
Affiche les 5 derniers fichers ajoutés.
Créations de Modules
benpro Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre benpro
- Inscrit le : 28/12/2007
- Site internet
J'ai fait un petit code à la va vite et ce code marche correctement mais il très sale, j'aimerais que l'on m'explique comment le rendre plus propre grâce au framework

Voici le code:
download_mini.php
Code PHP :
<?php //Infos sur la connexion SQL etc... include_once('../includes/begin.php'); if( defined('PHP_BOOST') !== true) exit; //?? //Chargement de la langue du module. @include_once('../download/lang/' . $CONFIG['lang'] . '/download_mini_' . $CONFIG['lang'] . '.php'); //Définition du template header $template->set_filenames(array( 'download_mini_header' => '../templates/' . $CONFIG['theme'] . '/download/download_mini_header.tpl' )); //Définition du titre $template->assign_vars(array( 'TITLE' => $LANG['title'] )); //Parse du template header $template->pparse('download_mini_header'); //Définition du template $template->set_filenames(array( 'download_mini' => '../templates/' . $CONFIG['theme'] . '/download/download_mini.tpl' )); //On récupere les 5 derniers fichiers ajoutés à la BDD. $reponse = mysql_query("SELECT * FROM phpboost_download ORDER BY timestamp DESC LIMIT 0, 5"); while ($donnees = mysql_fetch_array($reponse) ) { //Assignation des variables au template $template->assign_vars(array( 'CAT' => $donnees['idcat'], 'ID' => $donnees['id'], 'NAME' => $donnees['title'] )); //Parse du template $template->pparse('download_mini'); } //Definition du template footer. $template->set_filenames(array( 'download_mini_footer' => '../templates/' . $CONFIG['theme'] . '/download/download_mini_footer.tpl' )); //PArse du footer $template->pparse('download_mini_footer'); ?>
download_mini_header.tpl
Code HTML :
download_mini.tpl
Code HTML :
download_mini_footer.tpl
En gros si on pouvait m'expliquer comment éviter de créer 2 templates pour rien a cause de la boucle de la requete SQL ?
Merci d'avance, et merci pour ce superbe CMS

PS : Pour voir le module, vous pouvez visitez mon site qui est sur mon pc (donc pas toujours accessible...) : http://benpro.hd.free.fr/sites/phpboost/
En screenshot :

D'ailleurs d'où viennent ces barres, dans le css ? rahh cette flemme que j'ai xD
Édité par benpro Le 28/12/2007 à 17h39
Benpro
KONA Membre non connecté
Booster Fusée
-
Booster Fusée
- Voir le profil du membre KONA
- Inscrit le : 21/05/2006
- Site internet
[code=css]border-bottom:1px solid #000000[/code]
Édité par KONA Le 28/12/2007 à 18h30
benpro Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre benpro
- Inscrit le : 28/12/2007
- Site internet
Juste que je venais de finir mon code et j'avais la flemme de chercher dans le CSS.
Benpro
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
- Côté PHP :
[code=php]
while( ... ) //boucle
{
$template->assign_block_vars('nom_bloc', array(
'VAR_1' => $donnee1,
'VAR_2' => $donnee2
));
}
[/code] - Côté fichier tpl :
[code=html]
# START nom_bloc #
la variable 1 vaut <strong>{mon_bloc.VAR_1}</strong> et la 2 vaut <em>{mon_bloc.VAR_2}</em>
# END nom_bloc #
[/code]
L'imbrication de boucles fonctionne plus ou moins pareil, demande si tu veux en savoir plus.
Bon courage, et désolé pour la documentation qui est loin d'être complète.
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
benpro Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre benpro
- Inscrit le : 28/12/2007
- Site internet
Benpro
benpro Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre benpro
- Inscrit le : 28/12/2007
- Site internet

Encore une petite info, quel est la variable qui contient le nom de préfixe des tables mysql ?
Pour ceux que sa intéresserait voici le code php:
[code=php]<?php
/*
Download_mini Module
Par Benpro
Email : benpro82@gmail.com
Date de création : 28/12/07
Version : 1.01B
Dernière MÀJ : 29/12/07
Affiche les 5 derniers fichiers ajoutés dans la base de données des téléchargements.
*/
//Infos sur la connexion SQL etc...
include_once('../includes/begin.php');
//??
if( defined('PHP_BOOST') !== true)exit;
//Chargement de la langue du module.
@include_once('../download/lang/' . $CONFIG['lang'] . '/download_mini_' . $CONFIG['lang'] . '.php');
//Définition du template
$template->set_filenames(array(
'download_mini' => '../templates/' . $CONFIG['theme'] . '/download/download_mini.tpl'
));
//Assignation des variables du template.
$template->assign_vars(array(
'TITLE' => $LANG['title']
));
//On récupere les 5 derniers fichiers ajoutés à la BDD.
$reponse = mysql_query("SELECT * FROM phpboost_download ORDER BY timestamp DESC LIMIT 0, 5");
while ($donnees = mysql_fetch_array($reponse) )
{
//Assignation des variables au template
$template->assign_block_vars('download_mini', array(
'CAT' => $donnees['idcat'],
'ID' => $donnees['id'],
'NAME' => $donnees['title']
));
}
//Parse du template
$template->pparse('download_mini');
?>[/code]
et du tpl:
[code=html]<div class="module_mini_container">
<div class="module_mini_top">
<h5 class="sub_title">{TITLE}</h5>
</div>
# START download_mini #
<div class="module_mini_table">
<a href=../download/download.php?cat={download_mini.CAT}&id={download_mini.ID}>{download_mini.NAME}</a>
</div>
# END download_mini #
<div class="module_mini_bottom">
</div>
</div>
[/code]
Maintenant que j'ai pas trop mal compris le système de template je vais pouvoir m'amuser a faire d'autres mini modules ou modules sympa

Merci et @+
Édité par benpro Le 29/12/2007 à 17h10
Benpro
benpro Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre benpro
- Inscrit le : 28/12/2007
- Site internet

Là je viens de rajouter un truc que j'aime bien aussi, c'est de faire apparaître les 5 fichiers les plus populaires (les plus téléchargés),
Par contre sa rajoute 2 requête SQL en plus, un astuce ?
voici le code (je l'ai rajouté dans le module précédent) :
download_mini.php:
[code=php]<?php
/*
Download_mini Module
Par Benpro
Email : benpro82@gmail.com
Date de création : 28/12/07
Version : 1.01B
Dernière MÀJ : 29/12/07
Affiche les 5 derniers fichiers ajoutés dans la base de données des téléchargements.
*/
//Infos sur la connexion SQL etc...
include_once('../includes/begin.php');
//??
if( defined('PHP_BOOST') !== true)exit;
//Chargement de la langue du module.
@include_once('../download/lang/' . $CONFIG['lang'] . '/download_mini_' . $CONFIG['lang'] . '.php');
//Définition du template
$template->set_filenames(array(
'download_mini' => '../templates/' . $CONFIG['theme'] . '/download/download_mini.tpl'
));
//Assignation des variables du template.
$template->assign_vars(array(
'TITLE' => $LANG['title'],
'TITLE2' => $LANG['title2']
));
//On récupere les 5 derniers fichiers ajoutés à la BDD.
$reponse = mysql_query("SELECT * FROM phpboost_download ORDER BY timestamp DESC LIMIT 0, 5");
while ($donnees = mysql_fetch_array($reponse) )
{
//Assignation des variables au template
$template->assign_block_vars('download_mini', array(
'CAT' => $donnees['idcat'],
'ID' => $donnees['id'],
'NAME' => $donnees['title']
));
}
//On récupere les 5 fichiers les plus populaires.
$reponse = mysql_query("SELECT * FROM phpboost_download ORDER BY compt DESC LIMIT 0, 5");
while ($donnees = mysql_fetch_array($reponse) )
{
//Assignation des variables au template
$template->assign_block_vars('download_mini_pop', array(
'CAT' => $donnees['idcat'],
'ID' => $donnees['id'],
'NAME' => $donnees['title'],
'COMPT' => $donnees['compt']
));
}
//Parse du template
$template->pparse('download_mini');
?>[/code]
download_mini.tpl:
[code=html]<div class="module_mini_container">
<div class="module_mini_top">
<h5 class="sub_title">{TITLE}</h5>
</div>
# START download_mini #
<div class="module_mini_table">
<a href=../download/download.php?cat={download_mini.CAT}&id={download_mini.ID}>{download_mini.NAME}</a>
</div>
# END download_mini #
<div class="module_mini_bottom">
</div>
</div>
<div class="module_mini_container">
<div class="module_mini_top">
<h5 class="sub_title">{TITLE2}</h5>
</div>
# START download_mini_pop #
<div class="module_mini_table">
<a href=../download/download.php?cat={download_mini_pop.CAT}&id={download_mini_pop.ID}>{download_mini_pop.NAME} - {download_mini_pop.COMPT} Téléchargements</a>
</div>
# END download_mini_pop #
<div class="module_mini_bottom">
</div>
</div>
[/code]
et download_mini_french.php:
[code=php]<?php
$LANG['title'] = 'Derniers Fichiers';
$LANG['title2'] = 'Fichiers Pop.';
?>[/code]
Édité par benpro Le 29/12/2007 à 17h27
Benpro
CrowkaiT Membre non connecté
-
Modérateur
- Voir le profil du membre CrowkaiT
- Inscrit le : 17/06/2005
- Site internet
- Groupes :
-
Equipe Historique
Par contre tu n'as pas besoin de cette ligne:
[code=php]include_once('../includes/begin.php');[/code]
Pour éviter ces deux requêtes il faudrait faire un flux rss pour chaque ordonnancement. Après le rss est automatiquement mis en cache il suffirait juste de l'inclure dans le template. Je vais essayer de rédiger la documentation pour le rss.
Sinon chapeau c'est vraiment pas mal
Pas de support par messages privés! Pensez à mettre vos messages en réglé en cliquant sur le bouton réglé!
benpro Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre benpro
- Inscrit le : 28/12/2007
- Site internet
Sinon pour le préfixe de la table j'ai essayé [code=php]mysql_query("SELECT * FROM ".$PREFIX."_download ORDER BY timestamp DESC LIMIT 0, 5");[/code] mais celà ne marche pas. un petit indice
?EDIT: c'est bon j'ai trové, c'était [code=php]".PREFIX."[/code]
Édité par benpro Le 29/12/2007 à 18h40
Benpro
CrowkaiT Membre non connecté
-
Modérateur
- Voir le profil du membre CrowkaiT
- Inscrit le : 17/06/2005
- Site internet
- Groupes :
-
Equipe Historique
De plus tu n'utilises pas les fonctions pour les requêtes, elles ne sont pas comptées et si une erreur survient elle ne sera pas capturé par le gestionnaire d'erreur, il faudrai faire ainsi:
Code PHP :
$result= $sql->query_while("SELECT * FROM ".PREFIX."download ORDER BY timestamp DESC" . $sql->sql_limit(0, 5)); while ($row= $sql->sql_fetch_array($result) ) {
Je t'encourage à lire la documentation sur ce point: http://www.phpboost.com/wiki/class-sql
Elle n'est pas encore rédigé entièrement mais si ça peut t'aider...

Ps: Tu ne cherches pas un poste de développeur PHP par hazard
?
Pas de support par messages privés! Pensez à mettre vos messages en réglé en cliquant sur le bouton réglé!
benpro Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre benpro
- Inscrit le : 28/12/2007
- Site internet

Pour la documentation il semble y a voir un problème : [code=text]Documentation PHPBoost
L'article que vous demandez n'existe pas, si vous le désirez vous pouvez le créer en cliquant ici. [/code]
Et pour un poste de développeur PHP, pourquoi pas j'ai pleins d'idée pour des modules

EDIT : Après modif de mon script avec les functions de phpboost celà ne amrche pas il semblerait que la fonction "$sql->sql_fetch_array" bloque
Sinon celà marche impec comme sa :[code=php]$result= $sql->query_while("SELECT * FROM ".PREFIX."download ORDER BY timestamp DESC" . $sql->sql_limit(0, 5));
//while ($row= $sql->sql_fetch_array($result) )
while ($row = mysql_fetch_array($result) )
{[/code]
Édité par benpro Le 29/12/2007 à 19h22
Benpro
CrowkaiT Membre non connecté
-
Modérateur
- Voir le profil du membre CrowkaiT
- Inscrit le : 17/06/2005
- Site internet
- Groupes :
-
Equipe Historique
[code=php]$sql->sql_fetch_assoc($result)[/code]
Pas de support par messages privés! Pensez à mettre vos messages en réglé en cliquant sur le bouton réglé!
benpro Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre benpro
- Inscrit le : 28/12/2007
- Site internet

Pour ceux qui serait intéressait voici un tar.gz a décompresser à la racine de phpboost, et d'aller faire un tour dans l'administration->contenu>menus
download.tar.gz
Voilà, maintenant je vais m'attaquer à un player mp3 avec gestion de la playlist

A+
EDIT : la requête SQL a effectuer pour le voir apparaître dans les menus
Code SQL :
-- -- Contenu de la table `phpboost_modules_mini` -- INSERT INTO `phpboost_modules_mini` (`id`, `class`, `name`, `code`, `contents`, `side`, `secure`, `activ`, `added`) VALUES ('', 2, 'download', 'include_once(''../download/download_mini.php'');', '', 0, -1, 1, 0);
Édité par benpro Le 30/12/2007 à 14h08
Benpro
Visiteur
Boosteur Inactif
ça serais encore mieux si t'ajoutais un readme au gzip
Parceque là on sais pas trop comment l'ajouter ce mini bloc.
benpro Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre benpro
- Inscrit le : 28/12/2007
- Site internet
Je vous tiens au courant

a+
Benpro
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie
