Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Invité de passage
    Homme Profil pro Jason
    Consultant E-Business
    Inscrit en
    février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Nom : Homme Jason
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Communication - Médias

    Informations forums :
    Inscription : février 2013
    Messages : 7
    Points : 0
    Points
    0

    Par défaut Limiter le nombre de catégorie.

    Bonsoir le forum,

    Je suis nouveau ici car j'ai une petite question et/ou plutôt besoin d'aide.

    J'ai un site de petite annonce dont l'adresse http://www.latrouvaille.be. Comme vous pourrez le voir sur l'index en bas de page on voit toute les catégories du site, Mais j'aimerais bien afficher que deux rangées de 5 blocs.

    Seulement je n'arrive pas à modifier le code php j'ai essayé avec $query = "SELECT nom_cat FROM PAG_categories LIMIT 0,10"; mais cela ne fonctionne toujours pas.

    Donc je vous mais le code ci-dessous pour voir si vous serez m'apporter de l'aide...

    Code :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    /// ----- LIENS CATEGORIE INDEX-----  ///
     
    function htm_categories()
    {   
    	global $language, $cache_categories;
     
    ?>
     
    <div id="bloc_categories_1">
    <div id="bloc_categories_2">
     
    <?php
     
     
     
     
     
    	$a1 = 0;
    	$a2 = 1;
     
    	foreach ($cache_categories as $row)
    	{	
    		$id_cat = (int) $row['id_cat'];
    		$par_cat = (int) $row['par_cat'];
    		$nom_cat = stripslashes(htmlspecialchars($row['nom_cat'], ENT_QUOTES));
     
    		if($a1%5 == 0) echo '<div style="clear: both;">';
     
    		if($par_cat == 0)
    		{
     
     
    			echo '<ul class="ul_categories">';
     
    			if($a2 != 1 && $a2%5 == 0) echo '<li class="li_title_categories_2">'. $row['nom_cat'] .'</li>';
     
    			else echo '<li class="li_title_categories">'. $row['nom_cat'] .'</li>';
    		}
     
    		$sous_categories = $cache_categories;
     
    		foreach ($sous_categories as $row)
    		{
    			$id_sous_cat = (int) $row['id_cat'];
    			$par_sous_cat = (int) $row['par_cat'];
    			$nom_sous_cat = stripslashes(htmlspecialchars($row['nom_cat'], ENT_QUOTES));
     
    			if($par_sous_cat == $id_cat) 
    			{
    				// Url rewriting
     
    				$accent = array('à', 'á', 'â', 'ã', 'ä', 'å', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'ç', 'Ç', 'é', 'è', 'ê', 'ë', 'È', 'É', 'Ê', 'Ë', 'ì', 'í', 'î', 'ï', 'Ì', 'Í', 'Î', 'Ï', 'ò', 'ó', 'ô', 'õ', 'ö', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'ù', 'ú', 'û', 'ü', 'Ú', 'Ù', 'Û', 'Ü', 'Ý', 'ý', 'ÿ', 'ñ');
    				$sans_accent = array('a', 'a', 'a', 'a', 'a', 'a', 'A', 'A', 'A', 'A', 'A', 'A', 'c', 'C', 'e', 'e', 'e', 'e', 'E', 'E', 'E', 'E', 'i', 'i', 'i', 'i', 'I', 'I', 'I', 'I', 'o', 'o', 'o', 'o', 'o', 'O', 'O', 'O', 'O', 'O', 'u', 'u', 'u', 'u', 'U', 'U', 'U', 'U', 'y', 'y', 'y', 'n');      
     
    				$url_cat = $row['nom_cat'];
    				$url_cat = str_replace($accent, $sans_accent, $url_cat);
     
    				$url = array();
     
    				for ($i = 0; $i < strlen($url_cat); $i++) 
    				array_push($url, $url_cat[$i]);
     
    				$url_aff = '';
     
    				foreach($url as $url_cat)
    				{
    					if(preg_match('#^[a-zA-Z0-9]$#', $url_cat) != true)
    					$url_cat = str_replace($url_cat, '-', $url_cat);
     
    					$url_aff .= $url_cat;
    				} 
     
    				echo '<li class="li_categories"><a href="Categorie-'. $id_sous_cat .'-'. $url_aff .'.htm">'. $nom_sous_cat .'</a></li>';
    			}
    		}
    		if($par_cat == 0) echo '</ul>';
    		if($a1%5 == 0) echo '</div>';
    		$a1++; 
    		$a2++;
    	}
    ?>
     
    </div>
    </div>
    J'espère que vous serez m'aider Bien à vous, Jason

  2. #2
    Modérateur
    Avatar de rawsrc
    Homme Profil pro Martin
    Dev indep
    Inscrit en
    mars 2004
    Messages
    3 134
    Détails du profil
    Informations personnelles :
    Nom : Homme Martin
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 3 134
    Points : 7 287
    Points
    7 287

    Par défaut

    Salut,

    simple, tu dois juste compter le nombre de catégories rendues et dès que tu atteins 11, tu t'arrêtes. Tu n'as besoin que de ceci :
    Code :
    1
    2
    3
    4
    5
    6
    7
    $categ_index = 0;
    foreach ($cache_categories as $row) {
        if (++$categ_index > 10) {
            break;
        }
        // ... //
    }
    Tu devrais quand même revoir ton code. Il y a moyen de le rendre plus propre, plus structuré et surtout plus lisible.
    Fais attention : tu envoies un charset UTF-8 alors que tu utilises pour générer ton code des fonctions qui ne gèrent pas le multibyte : stripslashes(); str_replace()
    # Dans la Création, tout est permis mais tout n'est pas utile...

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro Vincent
    Inscrit en
    juillet 2005
    Messages
    19 845
    Détails du profil
    Informations personnelles :
    Nom : Homme Vincent

    Informations forums :
    Inscription : juillet 2005
    Messages : 19 845
    Points : 26 124
    Points
    26 124

    Par défaut

    D'ou vient $cache_categories ?
    Si ça vient d'une base de donnée, il suffit de limiter le nombre de résultats.

  4. #4
    Invité de passage
    Homme Profil pro Jason
    Consultant E-Business
    Inscrit en
    février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Nom : Homme Jason
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Communication - Médias

    Informations forums :
    Inscription : février 2013
    Messages : 7
    Points : 0
    Points
    0

    Par défaut

    Si je comprend bien les catégories s'affiche dans la base de donnée et s'inscrivent dans un fichier fichier cache que je dois mettre à jour manuellement ou faire une " taches automatisée " ce qui permet de réduire le nombre de connexion et de requête à la base de données.

    Justement j'aimerais savoir ou je pourrais limiter ce nombre sans toucher à la base de donnée car j'ai fait un lien avec le même code source qui ne sera pas limiter et ou toutes les catégories s'afficheront.

    Depuis 5 jours je suis bloquer sur cette fonction :$

  5. #5
    Invité de passage
    Homme Profil pro Jason
    Consultant E-Business
    Inscrit en
    février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Nom : Homme Jason
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant E-Business
    Secteur : Communication - Médias

    Informations forums :
    Inscription : février 2013
    Messages : 7
    Points : 0
    Points
    0

    Par défaut

    Citation Envoyé par rawsrc Voir le message
    Salut,

    simple, tu dois juste compter le nombre de catégories rendues et dès que tu atteins 11, tu t'arrêtes. Tu n'as besoin que de ceci :
    Code :
    1
    2
    3
    4
    5
    6
    7
    $categ_index = 0;
    foreach ($cache_categories as $row) {
        if (++$categ_index > 10) {
            break;
        }
        // ... //
    }
    Tu devrais quand même revoir ton code. Il y a moyen de le rendre plus propre, plus structuré et surtout plus lisible.
    Fais attention : tu envoies un charset UTF-8 alors que tu utilises pour générer ton code des fonctions qui ne gèrent pas le multibyte : stripslashes(); str_replace()
    Bonjour,

    Je viens d'essayé de mettre votre code PHP celui-ci apparemment fait sont effet dans le script j'ai actuellement plus qu'une catégorie qui s'affiche et j'ai aussi une message d'erreur " Notice: Undefined variable: PAG_categories in /public_html/includes/functions_html.php on line 667 "

    Donc en gros il me reste plus cas avoir 10 catégories et ne plus avoir de message d'erreur..

    Je vous remercie de votre aide en tout cas

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    avril 2007
    Messages
    4 885
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : avril 2007
    Messages : 4 885
    Points : 9 566
    Points
    9 566

    Par défaut

    Si $cache_categories est un tableau, tu peux le découper pour ne conserver que les 10ers éléments :
    Code :
    1
    2
    $cache_categories_10 = array_slice($cache_categories, 0, 10);
    foreach ($cache_categories_10 as $row)
    Mais bon, ce serait sans doute mieux de faire au niveau de la requête (comme tu l'as d'ailleurs suggéré)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

    Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [CODEINLINE=php][/CODEINLINE]

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •