Précédent   Forum du club des développeurs et IT Pro > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 08/02/2013, 22h41   #1
Djayson
Invité de passage
 
Homme Jason
Consultant E-Business
Inscription : 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
Djayson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2013, 11h48   #2
rawsrc
Modérateur
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 2 588
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 36
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 2 588
Points : 6 053
Points : 6 053
Envoyer un message via Skype™ à rawsrc
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...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2013, 11h50   #3
sabotage
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 16 483
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 16 483
Points : 21 301
Points : 21 301
D'ou vient $cache_categories ?
Si ça vient d'une base de donnée, il suffit de limiter le nombre de résultats.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2013, 14h51   #4
Djayson
Invité de passage
 
Homme Jason
Consultant E-Business
Inscription : 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
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 :$
Djayson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2013, 15h06   #5
Djayson
Invité de passage
 
Homme Jason
Consultant E-Business
Inscription : 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
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
Djayson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2013, 11h39   #6
Celira
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 4 265
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 28
Localisation : France

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

Informations forums :
Inscription : avril 2007
Messages : 4 265
Points : 8 375
Points : 8 375
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]
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h14.


 
 
 
 
Partenaires

Hébergement Web