Aller au contenu

15 derniers sites et 15 sites les plus visités d'un annuaire


Sujets conseillés

Posté

Bonjour,

J'aimerais afficher les :

- 15 derniers sites

- 15 sites les plus visités

de mon annuaire dans une colonne sur l'ensemble du site.

J'y suis arrivé pour les 15 sites les plus visités mais ça coince pour les 15 derniers sites. En effet, l'url affichée renvoit vers mon site ?

Voici mes codes :

Pour le Top clics, ajout de ce bout de code au lieu d'insertion


<span class="date_validation_site_annuaire">
<b>Top 15 des clics</b>
</span>
<br>
<?php
//script permettant d'afficher les meilleurs sites ayant eu le plus de visites

//creation de la requete d'admin
$sql_admin = "SELECT nb_sites_in_topclics, nb_days2benew FROM $T_infos ";
//connexion a la BD
$lk = connection_BD();
//envoi de la requete
$res_admin = send_sql($sql_admin,"trouver le nombre de sites que contiendra le Top clics");

//traitement du resultat
$result_admin = mysql_fetch_array($res_admin,MYSQL_ASSOC);
$nb_sites_top_clics = $result_admin["nb_sites_in_topclics"];
$nb_days2benew = $result_admin["nb_days2benew"];

//creation de la requete pour les sites
$sql = "SELECT s.id, id_cat, titre, description, url, nb_clics, date_validation, cat_name, TO_DAYS(CURRENT_DATE) - TO_DAYS(date_validation) AS dif_days FROM $T_sites AS s, $T_categories AS c WHERE s.id_cat = c.id AND s.activation = 1 AND c.activation = 1 AND nb_clics > 0 ORDER BY nb_clics DESC,titre LIMIT 0,15";
//envoi de la requete
$res = send_sql($sql,"trouver les sites du Top clics");
//fin de la connexion
mysql_close($lk);

?>

<?
if (mysql_num_rows($res))
//si on a des resultats
{
echo "<table border=0 >\n";
$position=1;
while ($resultat = mysql_fetch_array($res))
{
affiche_menu_clics($resultat);
$position++;
}
echo "</table>\n";
}
else //pas de resultat
{

}
?>

Dans functions.php, ajout de ce bout de code :


<span class="date_validation_site_annuaire">
<b>15 Derniers sites</b>
</span>
<br>
<?php
//affichages des resultats
//page affichant les nouveautes de la derniere semaine

//creation de la requete d'admin
$sql_admin = "SELECT nb_days2benew FROM $T_infos ";
//connexion a la BD
$lk = connection_BD();
//envoi de la requete d'admin pour avoir $nb_days2benew
$res_admin = send_sql($sql_admin,"trouver le nombre de jours pour qu'un site soit nouveau");
//traitement du resultat
$result_admin = mysql_fetch_array($res_admin,MYSQL_ASSOC);
$nb_days2benew = $result_admin["nb_days2benew"];
//creation de la requete pour aller chercher les nouveaux sites des X derniers
$sql = "SELECT s.id, titre, description, date_validation, nb_clics, c.id as id_cat, cat_name FROM $T_sites s, $T_categories c WHERE s.id_cat = c.id AND s.activation = 1 AND c.activation = 1 AND date_validation BETWEEN DATE_SUB(CURRENT_DATE,INTERVAL $nb_days2benew DAY) AND DATE_SUB(CURRENT_DATE,INTERVAL 0 DAY) ORDER BY date_validation DESC,niveau ASC,titre ASC limit 0,15";
//envoi de la requete
$res = send_sql($sql,"trouver les nouveaux sites (annuaire)");
//fin de la connexion
mysql_close($lk);
if (mysql_num_rows($res))
//si on a des resultats
{
$date_test = ""; //pour la comparaison dans le while
while ($resultat = mysql_fetch_array($res,MYSQL_ASSOC))
{
//on convertit la date en version francaise
$date_convertie = convert_date_us2fr($resultat["date_validation"]);
if ($date_test != $date_convertie)
//changement de date => on affiche le jour
{
//separateur
if (!empty($date_test))

//conservation de la date pour la prochaine comparaison
$date_test = $date_convertie;
//on affiche la date
?>

<?
}
affiche_menu_nouveau($resultat);
}//fin while
} //fin if
else //pas de resultat
{

}

?>

Dans functions, ajout de :

function affiche_menu_nouveau($resultat)
{
global $PMA_infos,$nb_days2benew,$position;

echo"<a href=\"$resultat[url]\" onmousedown=\"return clk('$resultat[id]')\" title=\"$resultat[titre]\" target=\"_blank\" class=\"titre_site_annuaire\" >$resultat[titre]</a><br>";
}

Pour mieux vous rendre compte : http://www.itinerances.info/

Merci d'avance pour le petit coup de main :wink:

Greg

Posté

Bonjour,

Il manque le champ url dans ton SELECT ;-)

SELECT s.id, titre, description, date_validation, nb_clics, c.id as id_cat, cat_name

Rien à voir :

Quelle est l'utilité de faire 2 fonctions identiques ?

function affiche_menu_clics($resultat) et function affiche_menu_nouveau($resultat) sont sensiblement les memes. Tu devrais faire qu'une fonction.

Posté

Bonjour, je n'ai pas lu tout le code mais il me semble que 2 requêtes + leur afichage devrait suffire : un LIMIT 15 avec un order by id_site DESC pour les 15 derniers, et un simple LIMIT 15 avec l'order by DESC là aussi sur le nb_clics. Ou alors j'ai rien compris :/

Posté (modifié)
Bonjour,

Il manque le champ url dans ton SELECT ;-)

Rien à voir :

Quelle est l'utilité de faire 2 fonctions identiques ?

function affiche_menu_clics($resultat) et function affiche_menu_nouveau($resultat) sont sensiblement les memes. Tu devrais faire qu'une fonction.

Merci Nicolas... C'était bien l'url qui manquait dans la requête sql. Tellement simple

Comment ne faire qu'une fonction avec les deux ?

Je viens aussi de me rendre compte que les clics n'étaient pas pris en compte.... :(

Greg

Modifié par ivoyages
Posté

Ca sert à rien d'avoir 2 fois la meme fonction avec 2 noms différents ;-)

Tu peux appeler ta fonction function affiche_menu(....

Perso je l'aurai appelé affiche_url ;-)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...