p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Invité de passage
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 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
    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
    Dev indep
    Inscrit en
    mars 2004
    Messages
    3 709
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 3 709
    Points : 8 669
    Points
    8 669

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Inscrit en
    juillet 2005
    Messages
    23 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : juillet 2005
    Messages : 23 951
    Points : 35 216
    Points
    35 216

    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
    Consultant E-Business
    Inscrit en
    février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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
    Consultant E-Business
    Inscrit en
    février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    5 688
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France

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

    Informations forums :
    Inscription : avril 2007
    Messages : 5 688
    Points : 10 988
    Points
    10 988

    Par défaut

    Si $cache_categories est un tableau, tu peux le découper pour ne conserver que les 10ers éléments :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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]

Discussions similaires

  1. [JTextArea] limiter le nombre de caractères
    Par spoutyoyo dans le forum Textuels
    Réponses: 5
    Dernier message: 14/09/2007, 15h45
  2. Limiter le nombre de Ligne d'un RichEdit
    Par Seboubou86 dans le forum C++Builder
    Réponses: 2
    Dernier message: 06/07/2004, 10h16
  3. [MFC] Limitation du nombre de fichiers...
    Par chronos dans le forum MFC
    Réponses: 5
    Dernier message: 02/06/2004, 10h40
  4. Limiter le nombre d'enregistrement
    Par BXDSPORT dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/04/2004, 16h26
  5. [débutant] Limitation du nombre d'enregistrement renvoyé
    Par tmcgrady dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/11/2003, 09h41

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