<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Hotfirenet &#187; Hack</title>
	<atom:link href="http://www.hotfirenet.com/tag/hack/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.hotfirenet.com</link>
	<description>L&#039;espace web d&#039;un passionné</description>
	<lastBuildDate>Wed, 16 May 2012 11:19:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>NPDS &#8211; Connaitre le nombre de MI par membre</title>
		<link>http://www.hotfirenet.com/npds-connaitre-le-nombre-de-mi-par-membre</link>
		<comments>http://www.hotfirenet.com/npds-connaitre-le-nombre-de-mi-par-membre#comments</comments>
		<pubDate>Sun, 26 Oct 2008 20:30:47 +0000</pubDate>
		<dc:creator>Djo</dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Hack]]></category>
		<category><![CDATA[Npds]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.hotfirenet.com/?p=88</guid>
		<description><![CDATA[Cette messagerie est relativement consommatrice en terme de stockage de ces messages interne, surtout lorsque l’on approche les 6000 membres.

Le but de ce script est de savoir donc le nombre de message archivés par le membre, et le nombre de message qu’il a reçu, puis de faire un des messages et de les classer par ordre décroissant.]]></description>
			<content:encoded><![CDATA[<p>Voici la problématique, <a title="Modnpds - Mes modules pour NPDS" href="http://modnpds.tuxfamily.org" target="blank">Oim</a> m’a demandé un peu d’aide pour un module de gestion de la messagerie interne qu’il réalise pour <a title="NPDS - Générateur de portail Php / Mysql en Open Source" href="http://www.npds.org" target="blank">NPDS</a>.</p>
<p>Cette messagerie est relativement consommatrice en terme de stockage de ces messages interne, surtout lorsque l’on approche les 6000 membres.</p>
<p>Le but de ce script est de savoir donc le nombre de message archivés par le membre, et le nombre de message qu’il a reçu, puis de faire un des messages et de les classer par ordre décroissant.</p>
<p>Ce script utilise des fonctions PHP, tel que: array, arsort, reset, key, next …</p>
<p>Voici le résultat :</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
/************************************************************************/
/* Script rélisé par Johan VIVIEN (Hotfirenet)
/* Fini le 24 octobre 2008
/* hotfirenet@gmail.com
/* =======================================================================
/*
/* Ce script permet de connaitre le nombre de message archivé et reçu par membre
/* Sur une idee de Oim ...
/*
/* This program is free software. You can redistribute it and/or modify
/* it under the terms of the GNU General Public License as published by
/* the Free Software Foundation; either version 2 of the License.
/************************************************************************/
$connect = mysql_connect('localhost', 'root', '');
$selectDB = mysql_select_db('lansou', $connect);

$nbreq = 0;

function sql_query($sql) {
	global $nbreq;

	$execQuery = mysql_query($sql);
	$nbreq++;

	return ($execQuery);
}

?&gt;
&lt;html&gt;
    &lt;head&gt;
	&lt;style&gt;
	.rouge {
		color: #ff0000;
	}
	&lt;/style&gt;
    &lt;/head&gt;
    &lt;body&gt;
&lt;?php
//On execute la requete, puis on rempli un tableau assossiatif en utilisant comme index l'id
$selectNbMsgFrom = 'SELECT to_userid, COUNT(*)
					FROM priv_msgs
					WHERE  type_msg = 0
					GROUP BY (to_userid)';
$execNbMsgFrom = sql_query($selectNbMsgFrom);
$tabNbMsgFrom = array();
while($resultNbMsgFrom = mysql_fetch_row($execNbMsgFrom)) {
	$tabNbMsgFrom[$resultNbMsgFrom[0]] = $resultNbMsgFrom[1];
}

//Pareil que plus au mais pour connaitre le nombre de message envoy&amp;amp;eacute;
$selectNbMsgTo = 'SELECT from_userid, COUNT(*)
				  FROM priv_msgs
				  WHERE  type_msg = 1
				  GROUP BY (from_userid)';
$execNbMsgTo = sql_query($selectNbMsgTo);
$tabNbMsgTo = array();
while($resultNbMsgTo = mysql_fetch_row($execNbMsgTo)) {
	$tabNbMsgTo[$resultNbMsgTo[0]] = $resultNbMsgTo[1];
}
//Je liste les membres j'associe l'ui en index et le name en valeur
$selectMembre = sql_query('SELECT uid, uname FROM users');
$tabListeMembre = array();
while($listeMembre = mysql_fetch_row($selectMembre)) {
	$tabListeMembre[$listeMembre[0]] = $listeMembre[1];
}

echo &quot;&amp;lt;br/&amp;gt;nous faisons pour ce resultat $nbreq requetes&lt;br /&gt;&lt;br /&gt;&quot;;

//Je defini mon tableau et ma variable $i a 0
$tabFinal = array();
$i = 0;
// je commence ma boucle, et je creer un tableau avec mes valeurs
foreach($tabListeMembre as $idMembres =&gt; $nomMembres) {
	$total = $tabNbMsgTo[$idMembres] + $tabNbMsgFrom[$idMembres];
	//Si le membre n'a aucun message je passe son tour
	if($total == 0)
		continue;

		//je rempli mon tableau
		$i++;
		$tabFinal['uname'][$i] = $nomMembres;
		$tabFinal['msgFrom'][$i] = $tabNbMsgFrom[$idMembres];
		$tabFinal['msgTo'][$i] = $tabNbMsgTo[$idMembres];
		$tabFinal['total'][$i] = $total;
}

//faisont un tri sur letableau
arsort($tabFinal['total']);

//Maintenant que j'ai realiser tous mes traitements, j'affiche mon tableau en tenant compte de la colonne total en utilisant comme clé cette colonne ...
for(reset($tabFinal['total']); $j = key($tabFinal['total']); next($tabFinal['total'])) {
	$class = $tabFinal['total'][$j] &gt;= 20 ? ' class=&quot;rouge&quot;' : '';

	echo '&lt;p '.$class.'&gt;'.$tabFinal['uname'][$j].' : &amp;amp;agrave; ' . $tabFinal['msgTo'][$j] . ' message(s) re&amp;amp;ccedil;u et &amp;amp;agrave; '. $tabFinal['msgFrom'][$j] . ' archiv&amp;amp;eacute;(s)&amp;lt;br /&amp;gt;';
	echo 'Total de message pour '.$tabFinal['uname'][$j].' : &lt;b&gt;' . $tabFinal['total'][$j] . '&lt;/b&gt;&lt;/p&gt;&lt;hr /&gt;';
}

?&gt;
&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Merci Oim pour ce petit exercice, bien sympa <img src='http://www.hotfirenet.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ….</p>
]]></content:encoded>
			<wfw:commentRss>http://www.hotfirenet.com/npds-connaitre-le-nombre-de-mi-par-membre/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

