Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/04/2011, 11h57   #1
Invité de passage
 
Inscription : avril 2005
Messages : 22
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

Informations forums :
Inscription : avril 2005
Messages : 22
Points : 3
Points : 3
Envoyer un message via MSN à spectrom
Par défaut Interdire categorie de s'afficher

Bonjour,
on ma developpé un systeme d'actu qui marche tres bien
Dans le script d'affichage sur la page d'accueil des news j'ai un systeme qui permet de selectionné une categorie de news

Néanmoins je n'arrive pas a faire en sorte dafficher toute les actus des categorie en interdisant une categorie de s'afficher

exemple actuellement j'ai :

categorie : generale, nouveauté etc...
je peux faire en sorte d'afficher que "generale" (voir ci dessous)
Se que je cherche a faire est d'inversé, c'est a dire afficher toute es categorie sauf "generale"

Si quelqu'un peux m'aider voici le de qui affiche q'une categorie :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
					setlocale(LC_TIME, 'fr_FR');
					require_once('includes/xxxxx.lib.php');

					$i_limit = 3;

					$news_headers = get_news_headers($i_limit, NULL, "generale");
					$current_date = '';
					foreach ( $news_headers as $id_news => $news_header )
					{
						$tmp_date = date('Y-m-d', strtotime($news_header['date']));
						if ( $tmp_date != $current_date )
						{
							$current_date = $tmp_date;
spectrom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2011, 12h31   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Dans ta fonction get_news_headers() tu dois avoir une requête du genre
Code :
WHERE categorie = $categorie
L'inverse est simplement
Code :
WHERE categorie != $categorie
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2011, 13h52   #3
Membre du Club
 
Inscription : février 2008
Messages : 152
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : février 2008
Messages : 152
Points : 54
Points : 54
Faudrait que l'on voie la fonction "get_news_headers(x, x, x)" pour pouvoir t'aider au mieux.

Mais si tu a une requête comme dit Sabotage, tu remplace "générale" par $categorie pour dynamiser la catégorie à exclure de l'affichage avec WHERE categorie != $categorie.

Tu pourrais ajouter aussi dans la fonction un 4 eme argument, avec true ou false pour dire si tu exclu ou pas $categorie, ce qui te permet de dynamiser le critère de sélection de ta requête (= ou !=) et ainsi de pouvoir faire ce que tu veux.
dad72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2011, 14h28   #4
Invité de passage
 
Inscription : avril 2005
Messages : 22
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

Informations forums :
Inscription : avril 2005
Messages : 22
Points : 3
Points : 3
Envoyer un message via MSN à spectrom
voici le code complet de la page index qui affiche les actus:
ce modele affiche la totalité et non juste une categorie.

le probleme c'est que je ne peux pas touché au fichier includes, car il est utilisé également par le code ci dessous pour afficher la totalité.

en faite sur ma page je vais d'un coté affiché les actu moins une catégorie qui elle sera egalement sur la page index mais a un autre endroit

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
 
<?php
					setlocale(LC_TIME, 'fr_FR');
					require_once('includes/xxxx.lib.php');
 
					$i_limit = 14;
 
					$news_headers = get_news_headers($i_limit, null, null, 0);
					$current_date = '';
					foreach ( $news_headers as $id_news => $news_header )
					{
						$tmp_date = date('Y-m-d', strtotime($news_header['date']));
						if ( $tmp_date != $current_date )
						{
							$current_date = $tmp_date;
					//print '';
					$i_limit -= 0;
						}
 
						print 'code html d'affichage ';
						$i_limit--;
 
						if ( $i_limit <= 0 )
						{
							break;
						}
					}
				?>
spectrom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2011, 17h31   #5
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Citation:
le probleme c'est que je ne peux pas touché au fichier includes, car il est utilisé également par le code ci dessous pour afficher la totalité.
dad72 t'a dit exactement ce que tu pouvais faire.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2011, 20h21   #6
Invité de passage
 
Inscription : avril 2005
Messages : 22
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

Informations forums :
Inscription : avril 2005
Messages : 22
Points : 3
Points : 3
Envoyer un message via MSN à spectrom
cela donne ceci : ?
désolé je suis un naze en php

Code :
1
2
3
4
5
6
7
8
 
<?php
					setlocale(LC_TIME, 'fr_FR');
					require_once('includes/xxxx.lib.php');
 
					$i_limit = 14;
 
					$news_headers = get_news_headers(WHERE generale != $categorie);
spectrom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2011, 20h36   #7
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Non pas du tout.
Si tu es nul en PHP, lis au moins avec attention ce qu'on t'écris.

Citation:
Faudrait que l'on voie la fonction "get_news_headers(x, x, x)" pour pouvoir t'aider au mieux.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2011, 20h38   #8
Invité de passage
 
Inscription : avril 2005
Messages : 22
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

Informations forums :
Inscription : avril 2005
Messages : 22
Points : 3
Points : 3
Envoyer un message via MSN à spectrom
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
<?php
 
require_once('xxx.lib.php');
 
function get_news_headers($num = 30, $date = NULL, $category = NULL, $offset = 0)
{
	get_db_link();
	$news = array();
 
	$wheres = '';
	if ( ! is_null($date) )
	{
		$wheres .= ' AND `date` LIKE \'' . $date . '%\'';
	}
	if ( ! is_null($category) )
	{
		$wheres .= ' AND `category` = \'' . $category . '\'';
	}
 
	$sql = 	'SELECT `id`, `title`, `bold`, `before_title`, `source`, `url`,`thumbnail`, `logo`, `date`, `description`, `category`, `categoryr`, `category2`, `author`, `produitx`, `produity`, `tagg1`, `tagg2`, `tagg3`, `tagg4`, `images`' .
			' FROM `news_news`' .
			' WHERE' .
				' `date` <= NOW()' .
				' AND `date` > 0' .
				$wheres .
			' ORDER BY `date` DESC' .
			( $num > 0 ? ' LIMIT ' . $offset . ', ' . $num . ';' : '' );
	$result = mysql_query($sql);
 
	while ( $row = mysql_fetch_assoc($result) )
	{
		$row['url'] = news_format_url($row['url']);
		$news[$row['id']] = $row;
	}
 
	return $news;
}
 
function get_news($news)
{
	get_db_link();
 
	$sql = 	'SELECT *' .
			' FROM `news_news`' .
			' WHERE `' . ( is_numeric($news) ? 'id' : 'url' ) . '` = \'' . $news . '\'' .
			' LIMIT 1;';
	$result = mysql_query($sql);
 
	if ( ! $row = mysql_fetch_assoc($result) )
	{
		return false;
	}
 
	$row['url'] = news_format_url($row['url']);
 
	return $row;
}
 
function news_format_url($page)
{
	return '/actualite/' . $page . '.html';
}
 
function news_get_url_page_name($url)
{
	return substr($url, 11, -5);
}
 
function news_print_get_url_page_name($url)
{
	return substr($url, 7, -5);
}
 
function delete_news($id)
{
	get_db_link();
 
	$sql = 'DELETE FROM `news_news` WHERE `id` = \'' . $id . '\' LIMIT 1;';
	$result = mysql_query($sql);
}
 
function quote_replace($string)
{
	return str_replace(array('"', '\''), array('\"', '\\\''), $string);
}
 
function get_formatted_news_headers($pattern, $num = 30, $date = NULL, $category = NULL)
{
	$news_formatted = '';
 
	preg_match_all('/##([^#]+)##/', $pattern, $matches);
 
	$news_headers = get_news_headers($num, $date, $category);
	foreach ( $news_headers as $id => $news_header )
	{
		$tmp_pattern = $pattern;
		foreach ( $matches[1] as $id => $match )
		{
			if ( 'date' === substr($match, 0, 4) )
			{
				list($match, $date_format) = explode('@', $match);
				$news_header['date'] = date($date_format, strtotime($news_header['date']));
			}
			elseif ( 'title' === substr($match, 0, 5) )
			{
				list($match, $limit) = explode('@', $match);
 
				if ( $limit > 0 && strlen($news_header['title']) > $limit )
				{
					$news_header['title'] = substr($news_header['title'], 0, ($limit - 3)) . '...';
				}
			}
 
			$tmp_pattern = str_replace($matches[0][$id], $news_header[$match], $tmp_pattern);
		}
		$news_formatted .= $tmp_pattern;
	}
 
	return $news_formatted;
}
 
//================================= Ajouté
function get_news_headers2($num = 30, $date = NULL, $category2 = NULL, $offset = 0)
{
	get_db_link();
	$news = array();
 
	$wheres = '';
	if ( ! is_null($date) )
	{
		$wheres .= ' AND `date` LIKE \'' . $date . '%\'';
	}
	if ( ! is_null($category2) )
	{
		$wheres .= ' AND `category2` = \'' . $category2 . '\'';
	}
 
	$sql = 	'SELECT `id`, `title`, `bold`, `before_title`, `url`,`thumbnail`, `logo`, `date`, `description`, `category2`, `categoryr`, `category2`, `author`, `produitx`, `produity`, `tagg1`, `tagg2`, `tagg3`, `tagg4`' .
			' FROM `news_news`' .
			' WHERE' .
				' `date` <= NOW()' .
				' AND `date` > 0' .
				$wheres .
			' ORDER BY `date` DESC' .
			( $num > 0 ? ' LIMIT ' . $offset . ', ' . $num . ';' : '' );
	$result = mysql_query($sql);
 
	while ( $row = mysql_fetch_assoc($result) )
	{
		$row['url'] = news_format_url($row['url']);
		$news[$row['id']] = $row;
	}
 
	return $news;
}
 
 
function get_formatted_news_headers2($pattern, $num = 30, $date = NULL, $category2 = NULL)
{
	$news_formatted = '';
 
	preg_match_all('/##([^#]+)##/', $pattern, $matches);
 
	$news_headers = get_news_headers2($num, $date, $category2);
	foreach ( $news_headers as $id => $news_header )
	{
		$tmp_pattern = $pattern;
		foreach ( $matches[1] as $id => $match )
		{
			if ( 'date' === substr($match, 0, 4) )
			{
				list($match, $date_format) = explode('@', $match);
				$news_header['date'] = date($date_format, strtotime($news_header['date']));
			}
			elseif ( 'title' === substr($match, 0, 5) )
			{
				list($match, $limit) = explode('@', $match);
 
				if ( $limit > 0 && strlen($news_header['title']) > $limit )
				{
					$news_header['title'] = substr($news_header['title'], 0, ($limit - 3)) . '...';
				}
			}
 
			$tmp_pattern = str_replace($matches[0][$id], $news_header[$match], $tmp_pattern);
		}
		$news_formatted .= $tmp_pattern;
	}
 
	return $news_formatted;
}
function getCouleur($i) {
	return ( $i%2 > 0 ) ? 'odd' : 'even';
}
?>
spectrom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2011, 20h54   #9
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
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
function get_news_headers($num = 30, $date = NULL, $category = NULL, $offset = 0)
{
	get_db_link();
	$news = array();
 
	$wheres = '';
	if ( ! is_null($date) )
	{
		$wheres .= ' AND `date` LIKE \'' . $date . '%\'';
	}
	if ( is_array($category) )
	{
		$wheres .= ' AND category ' . $category['operateur'] .  '"'  . $category['nom'] . '"';
	}
 
	$sql = 	'SELECT `id`, `title`, `bold`, `before_title`, `source`, `url`,`thumbnail`, `logo`, `date`, `description`, `category`, `categoryr`, `category2`, `author`, `produitx`, `produity`, `tagg1`, `tagg2`, `tagg3`, `tagg4`, `images`' .
			' FROM `news_news`' .
			' WHERE' .
				' `date` <= NOW()' .
				' AND `date` > 0' .
				$wheres .
			' ORDER BY `date` DESC' .
			( $num > 0 ? ' LIMIT ' . $offset . ', ' . $num . ';' : '' );
	$result = mysql_query($sql);
 
	while ( $row = mysql_fetch_assoc($result) )
	{
		$row['url'] = news_format_url($row['url']);
		$news[$row['id']] = $row;
	}
 
	return $news;
}
Et tu appelles comme ça en mettant soit = soit != selon ce que tu veux
Code :
1
2
3
 
$category = array('nom'=>'generale', 'operateur'=>'=');
$news_headers = get_news_headers($i_limit, NULL, $category);
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2011, 22h57   #10
Invité de passage
 
Inscription : avril 2005
Messages : 22
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

Informations forums :
Inscription : avril 2005
Messages : 22
Points : 3
Points : 3
Envoyer un message via MSN à spectrom
hum a la limite pour simplifié, etant donner que j'ai que 3 categories, il serait pas plus simple d'en autorisé 2. je sais pas trop comment mais a mon avis cela serait dans cette ligne non ?

Code :
$news_headers = get_news_headers($i_limit, NULL, "generale");
spectrom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2011, 23h12   #11
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Qu'est ce qui ne te va pas dans ce que je t'ai proposé ?
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2011, 23h30   #12
Invité de passage
 
Inscription : avril 2005
Messages : 22
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

Informations forums :
Inscription : avril 2005
Messages : 22
Points : 3
Points : 3
Envoyer un message via MSN à spectrom
sa fait toucher au fichier includes, et si je modifie celui ci cela affectera ce meme script installé a plusieurs endroit sur la page mais qui fonctionne avec des restriction de categorie et d'autre non
spectrom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 15h33   #13
Membre du Club
 
Inscription : février 2008
Messages : 152
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : février 2008
Messages : 152
Points : 54
Points : 54
bon, même si ta fonction est utiliser ailleurs sa ne la modifie pas tant que ca, une fonction est sensée être portable.

Vue que les arguments sont renseigner par défaut dans ta fonction, cela n'affectera pas ce même script installé a plusieurs endroit.

J'ai mis un commentaire dans le code ce qui te permettras de comprendre. J'ai pas changer grand chose a ta fonction et j'ai retirer quelque inutilité.

La fonction :
Code PHP :
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 get_news_headers($num = 30, $date = NULL, $category = NULL, $offset = 0, $signe = false)
{
	get_db_link();
	$news = array(); 
	$wheres = null;
 
	if($signe == false) $Signe = ' = ';
	else $Signe = ' != ';	
	if (!is_null($date))	$wheres .= ' AND `date` LIKE \'' . $date . '%\'';	
	if (!is_null($category))	$wheres .= ' AND `category` '.$Signe.' \'' . $category . '\''; // $Signe est = ou != suivant si true ou false (false est par defaut)	
 
	$sql =	'SELECT `id`, `title`, `bold`, `before_title`, `source`, `url`,`thumbnail`, `logo`, `date`, `description`, `category`, `categoryr`, `category2`, `author`, `produitx`, `produity`, `tagg1`, `tagg2`, `tagg3`, `tagg4`, `images`' .
			' FROM `news_news`' .
			' WHERE' .
				' `date` <= NOW()' .
				' AND `date` > 0' .
				$wheres .
			' ORDER BY `date` DESC' .
			( $num > 0 ? ' LIMIT ' . $offset . ', ' . $num . ';' : '' );
	$result = mysql_query($sql);
 
	while ($row=mysql_fetch_assoc($result))	{
		$row['url'] = news_format_url($row['url']);
		$news[$row['id']] = $row;
	}
 
	return $news;
}

L'appel de la fonction :
Code PHP :
1
2
$category = "generale";
$news_headers = get_news_headers($i_limit, NULL, $category, 0, true); // true dit que category doit être différant de $category (!=), false lui dit qu'il est égale (=)

Ainsi cela te donneras exactement ce que tu veux pour tes news sans toucher au autre page et sans les affecter. Il y a que l'appel de fonction sur ton Index qui seras compléter comme si dessus.
dad72 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/04/2011, 16h15   #14
Invité de passage
 
Inscription : avril 2005
Messages : 22
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

Informations forums :
Inscription : avril 2005
Messages : 22
Points : 3
Points : 3
Envoyer un message via MSN à spectrom
t'est un vrai dieu, sa marche nickel
que du bonheur.
spectrom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/04/2011, 18h06   #15
Membre du Club
 
Inscription : février 2008
Messages : 152
Détails du profil
Informations personnelles :
Âge : 35
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : février 2008
Messages : 152
Points : 54
Points : 54
Et bien tu peut résoudre dans ce cas.
dad72 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2011, 19h38   #16
Invité de passage
 
Inscription : avril 2005
Messages : 22
Détails du profil
Informations personnelles :
Âge : 33
Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

Informations forums :
Inscription : avril 2005
Messages : 22
Points : 3
Points : 3
Envoyer un message via MSN à spectrom
hum avant de resoudre, dans l'eventualité de filtrer non pas une mais 2 categorie le code change beaucoup ?
spectrom est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web