IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Changer le script de mes archives [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 7
    Par défaut Changer le script de mes archives
    Salut à vous.
    J'aimerais changer le script de mes archives, qui n'est pas adaptable à mon gout.
    Seuleument j'arrive pas trop à me figurer comment faire!

    Actuellement il fonctionne comme ceci:

    il va chercher dans ma table mysql les articles en les triant par date (seuleument année et mois grace à substr).
    Pour chaque combo Y-m trouvé il crée un lien à partir duquel sont filtrer les articles correspondants, le tout classé par date.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    <?php
     
    function FormatDateArchives($date) 
    	{
    	list($date_year, $date_month) = sscanf($date, "%d-%d");
    	$MyMonths = array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre");
    	$MyDate = $MyMonths[$date_month-1]." ".$date_year;
    	return $MyDate;
    	}
     
    include ("config.php");
     
    $archives_date_query = mysql_query("SELECT DISTINCT date FROM w_blog ORDER BY date DESC");
    $archives_date_num = mysql_num_rows($archives_date_query);
     
    $i=0;
    WHILE($i!=$archives_date_num)
    {
    	$archives_month = substr(mysql_result($archives_date_query,$i),0,7);
    	$archives_formated_month = FormatDateArchives($archives_month);
    	echo "<a href=\"index.php?archive=$archives_month\">$archives_formated_month</a><br />";
    	$i++;
    }
     
     
     
    ?>
    ce qui m'affiche:

    Février 2006
    Janvier 2006
    Décembre 2005
    Novembre 2005
    Septembre 2005
    Aout 2005
    Voilà.
    Ca me convenait assez bien mais j'aimerais améliorer le système.
    En effet un problème se pose: les mois ou aucun articles n'ont été postés ne s'affichent pas dans les archives (cf dans le quote le mois d'octobre). Ce n'est pas grand chose mais j'aimerais y remédier.

    Au final je voudrais pouvoir afficher des statistiques sur ma page d'archives, du style:

    Février 2006 [8 articles]
    Janvier 2006 [17 articles]
    Décembre 2005 [13 articles]
    Novembre 2005 [10 articles]
    Octobre 2005 [aucun article]
    Septembre 2005 [7 articles]
    Aout 2005 [14 articles]
    Si vous avez des idées, suggestions...

  2. #2
    Membre confirmé Avatar de dor_boucle
    Inscrit en
    Juin 2003
    Messages
    147
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 147
    Par défaut
    hmm en sql pur c'est assez difficile à mon avis... je crois meme que c'est impossible car il faudrait que tu lui fasses remplir des trous dans tes mois...
    il faut je pense coupler le php (ou autre langage) avec.
    au lieu de renvoyer des noms de mois, je renverrai juste le numéro du mois et en php un tabelau de 0 à 12 avec les noms des mois qui ferai la correspondance avec ma requete....

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 7
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    include ("config.php");
    $first_date_query = mysql_query("SELECT date FROM w_blog ORDER BY date ASC LIMIT 0,1");
    $contenu = mysql_fetch_array($first_date_query);
    $first_date = $contenu['date'];
     
    $first_year = substr($first_date,0,4);
    $first_month = substr($first_date,5,2);
     
    $this_month = date("m");
    $this_year = date ("Y");
     
    $mois = array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12");
     
    $m = $mois[$first_month-1];
    $y = $first_year;
     
     
    WHILE($y < $this_year || $m <= $this_month)
    {
    	if ($m == 12)
    	{
    		echo ''.$y.'-'.$mois[$m-1].'<br />';
    		$m = 1;
    		$y++;
    	}
    	else
    	{
    		echo ''.$y.'-'.$mois[$m-1].'<br />';
    		$m++;
    	}
    }


    Ok c'est deja mieux!!
    maintenant j'ai un autre soucis:
    j'aimerais faire du tout ca une fonction et stocker les résultats (cad tous les combos yyyy-mm) pour les réutiliser.
    Mais je suis vraiment pas à l'aise avec les array.

    un peu d'aide?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 7
    Par défaut
    hum...

    chuis pas doué, je viens encore pour la 3ème fois en qques heures demander un peu d'aide...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    function SetArchivesLinks()
    {
    	include ("config.php");
    	$first_date_query = mysql_query("SELECT date FROM w_blog ORDER BY date ASC LIMIT 0,1");
    	$contenu = mysql_fetch_array($first_date_query);
    	$first_date = $contenu['date'];
    	$first_year = substr($first_date,0,4);
    	$first_month = substr($first_date,5,2);
    	$this_month = date("m");
    	$this_year = date ("Y");
    	$mois = array("01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12");
    	$m = $mois[$first_month-1];
    	$y = $first_year;
    	$i=0;
    	WHILE($y < $this_year || $m <= $this_month)	{
    		if ($m == 12)	{
    			$archives[$i] = ''.$y.'-'.$mois[$m-1].'';
    			$m = 1;
    			$y++;
    			$i++;	}
    		else {
    			$archives[$i] = ''.$y.'-'.$mois[$m-1].'';
    			$m++;
    			$i++;	}
    	}
    	return($archives);
    }
    avant de transposer ce ptit script en fonction ca marchait niquel, maintenant impossible d'exploiter le tableau $archives...
    j'sais pas trop comment y remedier.

    Ensuite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function DisplayArchivesLinks($archives)
    {	
    	echo "<ul>";
    	foreach ($archives as $valeur)	
    	{
    		echo "<li><a href=\"blabla.php?archive=$valeur\">$valeur</a></li>";
    	}
    	echo "</ul>";
    }
    A priori, une fonction toute bête pour sortir le contenu du tableau $archives précédement créé, mais la aussi ca va pas du tout, ca me renvoit une erreur simplement au parsage de la fonction, avant même que j'ai l'occasion de la lancer....

    Bon.
    jsuis ptet un peu fatigué ce soir, mais j'me sens couillon la j'avance pas.
    Un peu d'aide pour me sortir de la mouise ca serait sympa.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 7
    Par défaut
    hmmm
    ok
    chuis juste bête, ca marche bien:

    j'avais appelé le tout en faisant:

    SetArchivesLinks();
    DisplayArchivesLinks($archives);

    au lieu de:

    $archives = SetArchivesLinks();
    DisplayArchivesLinks($archives);

    je crois que je saisis pas bien l'utilisation de return, m'enfin ca rentrera un jour...

  6. #6
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    Si tu mets un return dans une fonction c'est pour renvoyer une valeur.
    Si à la sortie de la fonction tu ne mets une variable pour attraper ta valeur, ta valeur se perds dans la mémoire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Changer le font de mes pages word office 2007
    Par afrold dans le forum Word
    Réponses: 4
    Dernier message: 15/07/2008, 22h32
  2. GUI pour changer l'ordre de mes données
    Par tristof dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 12/06/2008, 18h21
  3. Comment importer mes emails et mes archives ?
    Par jlassiramzy dans le forum Outlook
    Réponses: 12
    Dernier message: 08/02/2008, 14h42
  4. Changer un Script src
    Par seiferph4 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/09/2007, 09h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo