PageRenderTime 39ms CodeModel.GetById 12ms app.highlight 5ms RepoModel.GetById 1ms app.codeStats 1ms

/gespac/gestion_inventaire/voir_materiels.php

http://gespac.googlecode.com/
PHP | 764 lines | 466 code | 202 blank | 96 comment | 108 complexity | eaddd631a0df5b10ae96ede929aee4e2 MD5 | raw file
  1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2
  3<?PHP
  4	
  5	/* 
  6		fichier de visualisation de l'inventaire :
  7	*/
  8
  9	
 10	// si le grade du compte est root, on donne automatiquement les droits d'accטs en יcriture. Sinon, on teste si le compte a accטs א la page.
 11	$E_chk = ($_SESSION['grade'] == 'root') ? true : preg_match ("#E-02-01#", $_SESSION['droits']);
 12
 13	if ( !isset($_SESSION['entetes']) ) $_SESSION['entetes'] = "0111001111";	// Cases א cocher par dיfaut			
 14?>
 15
 16
 17
 18<!-- L'ENTETE DE LA PAGE ET SES OPTIONS	-->
 19
 20<div class="entetes" id="entete-materiels">	
 21
 22	<span class="entetes-titre">LES MATERIELS<img class="help-button" src="<?PHP echo ICONSPATH . "info.png";?>"></span><span id='nb_selectionnes'></span>
 23	<div class="helpbox">Cette page permet de gיrer l'ajout, la modification et la suppression des matיriels du parc.<br>On peut aussi modifier ou renommer un lot de matיriels.</div>
 24
 25	<span class="entetes-options">
 26				
 27		<span class="option">	<!-- filtre du matיriels -->
 28			<form>
 29				<small><a href="#" title="Cherchez dans une colonne prיcise avec le sיparateur deux points (CDI:n pour le nom, CDI:t pour tout le tableau) " onclick="alert('Cherchez dans une colonne prיcise avec le sיparateur deux points (CDI:n pour le nom, CDI:s pour la salle, CDI:t pour tout le tableau, ...) \n Le filtre d`exclusion permet de ne pas sיlectionner une valeur particuliטre.\n Ainsi `CDI:n / ecran:n` permet de selectionner tout le matיriel appelי CDI mais pas les יcrans CDI. \n On peut aussi ajouter des champs avec l`opיrateur +. par exemple `cdi:n+fonctionnel:e/ecran:n+d3e:s`.');">[?]</a></small> 
 30				<input placeholder=" filtrer" name="filt" id="filt" onKeyPress="return disableEnterKey(event)" type="text" value=<?PHP echo $_GET['filter']; ?> >
 31				<span id="nb_filtre" title='nombre de matיriels affichיs'></span>
 32			</form>
 33		</span>
 34		
 35		<span class="option">	<!-- Crיer CSV -->
 36			<?PHP echo "<span><a href='#' onclick=\"AffichePage('target','gestion_inventaire/post_export_filtre.php?filtre=" . urlencode($filtre) . "');\" title='gיnיrer CSV'> <img src='" . ICONSPATH . "csv.png'></a></span>";	?>
 37		</span>
 38		
 39		<span class="option">	<!-- Ajout Matיriel -->
 40		<?PHP if ( $E_chk ) {echo "<span><a href='gestion_inventaire/form_materiels.php?height=600&width=640&action=add' rel='slb_mat' title='ajout d un matיriel'> <img src='" . ICONSPATH . "add.png'></a></span>";} ?>
 41		</span>
 42		
 43		<span class="option">	<!-- Modifier le lot -->
 44			<?PHP if ( $E_chk ) {echo "<span id='modif_selection'><a href='gestion_inventaire/form_materiels.php?height=300&width=640&action=modlot' rel='slb_mat' title='modifier selection'> <img src='" . ICONSPATH . "modif1.png'></a></span>";}?>
 45		</span>
 46		
 47		<span class="option">	<!-- renommer le lot -->
 48		<?PHP if ( $E_chk ) {echo "<span id='rename_selection'><a href='gestion_inventaire/form_materiels.php?height=280&width=640&action=renomlot' rel='slb_mat' title='renommer selection'> <img src='" . ICONSPATH . "pen.png'></a> </span>";} ?>
 49		</span>
 50		
 51		<span class="option">	<!-- affecter une salle au lot -->
 52			<?PHP if ( $E_chk ) { ?>
 53				<span id='affect_selection'><a href='#' onclick='toggle_affectsalle();'><img src="<?PHP echo ICONSPATH . "refresh.png";?>" title="Affectation directe א une salle"></a></span>
 54				<div id='affect_box'>
 55					<form action="gestion_inventaire/post_materiels.php?action=affect" method="post" name="post_form" id="post_form" >
 56						<input type=hidden name='materiel_a_poster' id='materiel_a_poster' value=''>	
 57
 58					<?PHP 
 59						echo "<select name=salle_select id=salle_select>";
 60				
 61						// Pour le remplissage de la combobox des salles pour l'affectation
 62							
 63						// stockage des lignes retournיes par sql dans un tableau nommי combo_des_salles
 64						$combo_des_salles = $con_gespac->QueryAll ( "SELECT salle_id, salle_nom FROM salles ORDER BY salle_nom;" );
 65						
 66						foreach ($combo_des_salles as $combo_option ) {
 67						
 68							$option_id 		= $combo_option['salle_id'];
 69							$option_salle 	= $combo_option['salle_nom'];
 70							
 71							//On colle par dיfaut la salle STOCK, donc ID = 1
 72							$defaut = $option_id == 1 ? "selected" : "";
 73							
 74							echo "<option value=$option_id $defaut> $option_salle </option>";
 75						}
 76					
 77						echo "</select>";
 78						echo "<input type=submit value='Affecter' >";
 79					?>
 80
 81					</form>
 82				</div>
 83			<?PHP } ?>
 84		</span>
 85						
 86		<span class="option">	<!-- Affichage des colonnes -->		
 87			<a href='#' onclick='showhide_options();'><img src="<?PHP echo ICONSPATH . "eye.png";?>" title="colonnes א montrer ou א cacher"></a>
 88			<div id="options_colonnes">
 89				<input type="checkbox" class="opt_entete" id="chk_pret" onclick="hidethem('.td_pret', this.checked);post_modif_entete();"><label for="chk_pret">Prךt</label><br>
 90				<input type="checkbox" class="opt_entete" id="chk_dsit" onclick="hidethem('.td_dsit', this.checked);post_modif_entete();"><label for="chk_dsit">DSIT</label><br>
 91				<input type="checkbox" class="opt_entete" id="chk_serial" onclick="hidethem('.td_serial', this.checked);post_modif_entete();"><label for="chk_serial">Serial</label><br>
 92				<input type="checkbox" class="opt_entete" id="chk_etat" onclick="hidethem('.td_etat', this.checked);post_modif_entete();"><label for="chk_etat">Etat</label><br>
 93				<input type="checkbox" class="opt_entete" id="chk_type" onclick="hidethem('.td_type', this.checked);post_modif_entete();"><label for="chk_type">Famille</label><br>
 94				<input type="checkbox" class="opt_entete" id="chk_stype" onclick="hidethem('.td_stype', this.checked);post_modif_entete();"><label for="chk_stype">Sous Famille</label><br>
 95				<input type="checkbox" class="opt_entete" id="chk_modele" onclick="hidethem('.td_modele', this.checked);post_modif_entete();"><label for="chk_modele">Modטle</label><br>
 96				<input type="checkbox" class="opt_entete" id="chk_marque" onclick="hidethem('.td_marque', this.checked);post_modif_entete();"><label for="chk_marque">Marque</label><br>
 97				<input type="checkbox" class="opt_entete" id="chk_salle" onclick="hidethem('.td_salle', this.checked);post_modif_entete();"><label for="chk_salle">Salle</label><br>
 98				<input type="checkbox" class="opt_entete" id="chk_origine" onclick="hidethem('.td_origine', this.checked);post_modif_entete();"><label for="chk_origine">Origine</label>
 99			</div>
100		</span>
101	
102	</span>
103</div>
104
105
106<div class=spacer></div>
107
108
109<?PHP
110
111	// cnx א la base de donnיes GESPAC
112	$con_gespac	= new Sql ($host, $user, $pass, $gespac);
113	
114	// stockage des lignes retournיes par sql dans un tableau nommי liste_des_materiels
115	$liste_des_materiels = $con_gespac->QueryAll ( "SELECT mat_nom, mat_dsit, mat_serial, mat_etat, marque_marque, marque_model, marque_type, marque_stype, mat_id, salle_nom, salles.salle_id, mat_origine, user_nom FROM materiels, marques, salles, users WHERE (materiels.user_id=users.user_id AND materiels.marque_id=marques.marque_id and materiels.salle_id=salles.salle_id) ORDER BY mat_nom" );
116
117	$tri_nom 	 = "nom_asc";
118	$tri_pret 	 = "pret_asc";
119	$tri_dsit 	 = "dsit_asc";
120	$tri_serial  = "serial_asc";
121	$tri_etat 	 = "etat_asc";
122	$tri_type 	 = "type_asc";
123	$tri_stype 	 = "stype_asc";
124	$tri_marque  = "marque_asc";
125	$tri_modele  = "modele_asc";
126	$tri_salle   = "salle_asc";
127	$tri_origine = "origine_asc";
128	
129	
130	if (isset($_GET['tri'])) {
131		
132		switch ($_GET['tri']) {
133			
134		case "nom_asc"	    : 	$orderby = "ORDER BY mat_nom asc";			$tri_nom = "nom_desc";			$img_nom = "<img src=\"./img/down.png\" />";		break;
135		case "nom_desc"     :	$orderby = "ORDER BY mat_nom desc";											$img_nom = "<img src=\"./img/up.png\" />";			break;
136		//case "pret_asc"     :	$orderby = "ORDER BY user_nom asc";			$tri_pret = "pret_desc";		$img_pret = "<img src=\"./img/down.png\" />";		break;
137		//case "pret_desc"    :	$orderby = "ORDER BY user_nom desc";										$img_pret = "<img src=\"./img/up.png\" />";			break;
138		case "dsit_asc"     :	$orderby = "ORDER BY mat_dsit asc";			$tri_dsit = "dsit_desc";		$img_dsit = "<img src=\"./img/down.png\" />";		break;
139		case "dsit_desc"    :	$orderby = "ORDER BY mat_dsit desc";										$img_dsit = "<img src=\"./img/up.png\" />";			break;
140		case "serial_asc"   :	$orderby = "ORDER BY mat_serial asc";		$tri_serial = "serial_desc";	$img_serial = "<img src=\"./img/down.png\" />";		break;
141		case "serial_desc"  :	$orderby = "ORDER BY mat_serial desc";										$img_serial = "<img src=\"./img/up.png\" />";		break;
142		case "etat_asc"     :	$orderby = "ORDER BY mat_etat asc";			$tri_etat = "etat_desc";		$img_etat = "<img src=\"./img/down.png\" />";		break;
143		case "etat_desc"    :	$orderby = "ORDER BY mat_etat desc";										$img_etat = "<img src=\"./img/up.png\" />";			break;
144		case "type_asc"     :	$orderby = "ORDER BY marque_type asc";		$tri_type = "type_desc";		$img_type = "<img src=\"./img/down.png\" />";		break;
145		case "type_desc"    :	$orderby = "ORDER BY marque_type desc";										$img_type = "<img src=\"./img/up.png\" />"; 		break;
146		case "stype_asc"    :	$orderby = "ORDER BY marque_stype asc";		$tri_stype = "stype_desc";		$img_stype = "<img src=\"./img/down.png\" />";		break;
147		case "stype_desc"   :	$orderby = "ORDER BY marque_stype desc";									$img_stype = "<img src=\"./img/up.png\" />";		break;
148		case "marque_asc"   :	$orderby = "ORDER BY marque_marque asc";	$tri_marque = "marque_desc";	$img_marque = "<img src=\"./img/down.png\" />";		break;
149		case "marque_desc"  :	$orderby = "ORDER BY marque_marque desc";									$img_marque = "<img src=\"./img/up.png\" />";		break;
150		case "modele_asc"   :	$orderby = "ORDER BY marque_model asc";		$tri_modele = "modele_desc";	$img_modele = "<img src=\"./img/down.png\" />";		break;
151		case "modele_desc"  :	$orderby = "ORDER BY marque_model desc";									$img_modele = "<img src=\"./img/up.png\" />";		break;
152		case "salle_asc"    :	$orderby = "ORDER BY salle_nom asc";		$tri_salle = "salle_desc";		$img_salle = "<img src=\"./img/down.png\" />";		break;
153		case "salle_desc"   :	$orderby = "ORDER BY salle_nom desc";										$img_salle = "<img src=\"./img/up.png\" />";		break;
154		case "origine_asc"  :	$orderby = "ORDER BY mat_origine asc";		$tri_origine = "origine_desc";	$img_origine = "<img src=\"./img/down.png\" />";	break;
155		case "origine_desc" :	$orderby = "ORDER BY mat_origine desc";										$img_origine = "<img src=\"./img/up.png\" />";		break;
156			
157		default 			:	$orderby = "ORDER BY mat_nom asc";	break;
158		
159		}
160		
161	} else {
162		
163		$orderby = "ORDER BY mat_nom asc";
164	}
165	
166
167	// cnx א la base de donnיes GESPAC
168	$con_gespac	= new Sql ($host, $user, $pass, $gespac);
169	
170	$filtre = $_GET['filter'];
171	$filter_explode_exclusion = @explode ("/", $filtre);
172	$value_like_tab 	= $filter_explode_exclusion[0];	// Pour le filtre d'inclusion
173	$value_notlike_tab 	= $filter_explode_exclusion[1]; // Pour le filtre d'exclusion
174
175
176	/**************************
177	* 	PARTIE INCLUSION
178	***************************/
179	
180	$filter_explode_like = @explode ("+", $value_like_tab);
181	$curseur_like = 1;
182	
183	
184	foreach ( $filter_explode_like as $value_like) {
185	
186		// Si la valeur du champ est renseignיe on l'intטgre א la requךte
187		if ( $value_like <> "" ) {
188			
189			$value_like_explode = @explode (":", $value_like);
190			$value_inc 			= trim($value_like_explode[0]);
191			$champ_inc 			= trim($value_like_explode[1]);
192			
193			
194			// Si le champ numיrique n'est pas renseignי, on lui affecte une valeur bidon pour tomber dans le cas "default"
195			if ( !isset($champ_inc)  || $champ_inc == "") $champ_inc = -1;
196			
197			switch ($champ_inc) {
198				case "t" :	$like .= "(mat_nom LIKE '%$value_inc%' OR user_nom LIKE '%$value_inc%' OR mat_dsit LIKE '%$value_inc%' OR mat_serial LIKE '%$value_inc%' OR mat_origine LIKE '%$value_inc%' OR mat_etat LIKE '%$value_inc%' OR marque_type LIKE '%$value_inc%' OR marque_stype LIKE '%$value_inc%' OR marque_marque LIKE '%$value_inc%' OR marque_model LIKE '%$value_inc%' OR salle_nom LIKE '%$value_inc%')";	break;
199				case "n" :	$like .= "mat_nom LIKE '%$value_inc%'";			break;
200				case "p" :	$like .= "user_nom LIKE '%$value_inc%'";		break;
201				case "d" :	$like .= "mat_dsit LIKE '%$value_inc%'";		break;
202				case "s" :	$like .= "mat_serial LIKE '%$value_inc%'";		break;
203				case "e" :	$like .= "mat_etat LIKE '%$value_inc%'";		break;
204				case "f" :	$like .= "marque_type LIKE '%$value_inc%'";		break;
205				case "sf" :	$like .= "marque_stype LIKE '%$value_inc%'";	break;
206				case "m" :	$like .= "marque_marque LIKE '%$value_inc%'";	break;
207				case "mo" :	$like .= "marque_model LIKE '%$value_inc%'";	break;
208				case "sa" :	$like .= "salle_nom LIKE '%$value_inc%'";		break;
209				case "o" :	$like .= "mat_origine LIKE '%$value_inc%'";		break;
210				default :	$like .= "mat_nom LIKE '%$value_inc%'";			break;
211			}
212			
213			// Si ce n'est pas le dernier יlיment du tableau on rajoute " AND " sinon on ne rajoute rien			
214			if ( $curseur_like <> count($filter_explode_like) ) {
215				$like .= " AND ";
216			}
217			
218			$curseur_like++;
219		}
220			
221	}
222	
223	
224	/**************************
225	* 	PARTIE EXCLUSION
226	***************************/
227	
228	$filter_explode_notlike = @explode ("+", $value_notlike_tab);
229	$curseur_notlike = 1;
230		
231		
232	foreach ( $filter_explode_notlike as $value_notlike) {
233	
234		// Si la valeur du champ est renseignיe on l'intטgre א la requךte
235		if ( $value_notlike <> "" ) {
236			
237			$value_notlike_explode = @explode (":", $value_notlike);
238			$value_exc 			= trim($value_notlike_explode[0]);
239			$champ_exc 			= trim($value_notlike_explode[1]);
240			
241			
242			// Si le champ numיrique n'est pas renseignי, on lui affecte une valeur bidon pour tomber dans le cas "default"
243			if ( !isset($champ_exc)  || $champ_exc == "") $champ_exc = -1;
244			
245			switch ($champ_exc) {
246				case "t" :	$notlike .= "(mat_nom NOT LIKE '%$value_exc%' OR user_nom NOT LIKE '%$value_exc%' OR mat_dsit NOT LIKE '%$value_exc%' OR mat_serial NOT LIKE '%$value_exc%' OR mat_origine NOT LIKE '%$value_exc%' OR mat_etat NOT LIKE '%$value_exc%' OR marque_type NOT LIKE '%$value_exc%' OR marque_stype NOT LIKE '%$value_exc%' OR marque_marque NOT LIKE '%$value_exc%' OR marque_model NOT LIKE '%$value_exc%' OR salle_nom NOT LIKE '%$value_exc%')";	break;
247				case "n" :	$notlike .= "mat_nom NOT LIKE '%$value_exc%'";			break;
248				case "p" :	$notlike .= "user_nom NOT LIKE '%$value_exc%'";			break;
249				case "d" :	$notlike .= "mat_dsit NOT LIKE '%$value_exc%'";			break;
250				case "s" :	$notlike .= "mat_serial NOT LIKE '%$value_exc%'";		break;
251				case "e" :	$notlike .= "mat_etat NOT LIKE '%$value_exc%'";			break;
252				case "f" :	$notlike .= "marque_type NOT LIKE '%$value_exc%'";		break;
253				case "sf" :	$notlike .= "marque_stype NOT LIKE '%$value_exc%'";		break;
254				case "m" :	$notlike .= "marque_marque NOT LIKE '%$value_exc%'";	break;
255				case "mo" :	$notlike .= "marque_model NOT LIKE '%$value_exc%'";		break;
256				case "sa" :	$notlike .= "salle_nom NOT LIKE '%$value_exc%'";		break;
257				case "o" :	$notlike .= "mat_origine NOT LIKE '%$value_exc%'";		break;
258				default :	$notlike .= "mat_nom NOT LIKE '%$value_exc%'";			break;
259			}
260		}
261		
262		// Si ce n'est pas le dernier יlיment du tableau on rajoute " AND " sinon on ne rajoute rien			
263		if ( $curseur_notlike <> count($filter_explode_notlike) ) {
264			$notlike .= " AND ";
265		}
266		
267		$curseur_notlike++;
268			
269	}
270	
271	
272	/**************************
273	* 		PARTIE JONCTION
274	***************************/
275	
276	// permet de mettre la particule "AND" dans le cas ou le filtre d'exclusion existe
277	if ( $value_like_tab <> "" && $value_notlike_tab <> "" ) $jonction = " AND ";
278
279	
280	//echo $like . $jonction . $notlike;
281	
282		
283	if ( $_GET['filter'] <> '' ) {
284		$liste_des_materiels = $con_gespac->QueryAll ( "SELECT mat_nom, mat_dsit, mat_serial, mat_etat, marque_marque, marque_model, marque_type, marque_stype, mat_id, salle_nom, salles.salle_id, mat_origine, user_nom FROM materiels, marques, salles, users WHERE (materiels.user_id=users.user_id AND materiels.marque_id=marques.marque_id and materiels.salle_id=salles.salle_id AND $like $jonction $notlike) $orderby" );
285		echo "<script>$('nb_filtre').innerHTML = ' <small>[" . count($liste_des_materiels) . "]</small>';</script>";
286	}
287	else {
288		$liste_des_materiels = $con_gespac->QueryAll ( "SELECT mat_nom, mat_dsit, mat_serial, mat_etat, marque_marque, marque_model, marque_type, marque_stype, mat_id, salle_nom, salles.salle_id, mat_origine, user_nom FROM materiels, marques, salles, users WHERE (materiels.user_id=users.user_id AND materiels.marque_id=marques.marque_id and materiels.salle_id=salles.salle_id) $orderby" );
289		echo "<script>$('nb_filtre').innerHTML = ' <small>[" . count($liste_des_materiels) . "]</small>';</script>";
290	}
291	
292?>
293	
294	
295
296	
297	
298	<center>
299	
300	<table class="tablehover" id="mat_table">
301		<!-- Entךtes du tableau des matיriels. On gטre ici le tri.-->
302		<?PHP if ( $E_chk ) echo "<th> <input type=checkbox id=checkall onclick=\"checkall('mat_table');\" > </th>"; ?>
303		
304		<th title="n : le nom de la machine">
305			<a href="#" onclick="order_by('<?PHP echo $tri_nom; ?>', $('filt').value);">
306			Nom<sup>n</sup> <?PHP echo $img_nom; ?></a></th>
307			
308		<th class="td_pret" style='display:none' title="p : le nom du professeur א qui le matיriel est prךtי">Prךtי א<sup>p</sup></th>
309		
310		<th class="td_dsit" title="d : le numיro de sיrie de la DSIT">
311			<a href="#" onclick="order_by('<?PHP echo $tri_dsit; ?>', $('filt').value);">
312			DSIT<sup>d</sup><?PHP echo $img_dsit; ?></a></th>
313			
314		<th class="td_serial" title="s : le numיro de sיrie de la machine">
315			<a href="#" onclick="order_by('<?PHP echo $tri_serial; ?>', $('filt').value);">
316			Serial<sup>s</sup><?PHP echo $img_serial; ?></a></th>
317			
318		<th class="td_etat" title="e : L'יtat gיnיral de la machine">
319			<a href="#" onclick="order_by('<?PHP echo $tri_etat; ?>', $('filt').value);">
320			Etat<sup>e</sup><?PHP echo $img_etat; ?></a></th>
321			
322		<th class="td_type" style='display:none' title="f : Famille du matיriel">
323			<a href="#" onclick="order_by('<?PHP echo $tri_type; ?>', $('filt').value);">
324			Famille<sup>f</sup><?PHP echo $img_type; ?></a></th>
325			
326		<th class="td_stype" style='display:none' title="sf : Sous Famille du matיriel">
327			<a href="#" onclick="order_by('<?PHP echo $tri_stype; ?>', $('filt').value);">
328			Sous-famille<sup>sf</sup> <?PHP echo $img_stype; ?></a></th>
329			
330		<th class="td_marque" title="m : Marque du matיriel">
331			<a href="#" onclick="order_by('<?PHP echo $tri_marque; ?>', $('filt').value);">
332			Marque<sup>m</sup> <?PHP echo $img_marque; ?></a></th>
333			
334		<th class="td_modele" title="mo : Modטle du matיriel">
335			<a href="#" onclick="order_by('<?PHP echo $tri_modele; ?>', $('filt').value);">
336			Modטle<sup>mo</sup> <?PHP echo $img_modele; ?></a></th>
337			
338		<th class="td_salle"  title="sa : Salle oש est affectי le matיriel">
339			<a href="#" onclick="order_by('<?PHP echo $tri_salle; ?>', $('filt').value);">
340			Salle<sup>sa</sup> <?PHP echo $img_salle; ?></a></th>
341			
342		<th class='td_origine' title="o : Propriיtaire et annיe d'achat du matיriel">
343			<a href="#" onclick="order_by('<?PHP echo $tri_origine; ?>', $('filt').value);">
344			Origine<sup>o</sup> <?PHP echo $img_origine; ?></a></th>
345	
346	<?PHP 
347	
348	if ( $E_chk ) {
349		echo "<th>&nbsp</th>
350		<th>&nbsp</th>";
351	}
352	
353		
354
355			$compteur = 0;
356			// On parcourt le tableau
357			foreach ( $liste_des_materiels as $record ) {
358				// On יcrit les lignes en brut dans la page html
359
360				// alternance des couleurs
361				$tr_class = ($compteur % 2) == 0 ? "tr1" : "tr2";
362
363				$nom 		= $record['mat_nom'];
364				$dsit 		= $record['mat_dsit'];
365				$serial 	= $record['mat_serial'];
366				$etat 		= $record['mat_etat'];
367				$marque		= $record['marque_marque'];
368				$model 		= $record['marque_model'];
369				$type 		= $record['marque_type'];
370				$stype		= $record['marque_stype'];
371				$id 		= $record['mat_id'];
372				$salle 		= $record['salle_nom'];
373				$salle_id 	= $record['salle_id'];
374				$origine 	= $record['mat_origine'];
375				$user	 	= $record['user_nom'];
376			
377				
378				// test si la machine est prיtיe ou pas
379				$rq_machine_pretee = $con_gespac->QueryOne ( "SELECT mat_id FROM materiels WHERE user_id<>1 AND mat_id=$id" );
380				$mat_id = @$rq_machine_pretee;	// crado : le @ permet de ne pas afficher d'erreur si la requete ne renvoie rien. A modifier, יvidement
381						
382				if ( !isset($mat_id) ) {	// la machine n'est pas prךtיe ($mat_id n'existe pas)
383						$id_pret = 0;
384					} else {	// la machine est prךtיe ($mat_id existe)
385						$id_pret = 1;
386					}
387				
388				if ($salle == 'PRETS') {
389					if ($user == 'ati') {
390						$font_color = "#18c900";
391						$pret = "Disponible";
392					} else {
393						$font_color = "#0BAFF0";
394						$pret = "$user";
395					}
396				} else {
397					$font_color = "#FF0000";
398					$pret = "Indisponible";
399				}
400				
401				echo "<tr id=tr_id$id class=$tr_class>";
402				
403					/*	chckbox	*/	if ( $E_chk ) echo "<td> <input type=checkbox name=chk indexed=true value='$id' onclick=\"select_cette_ligne('$id', $compteur) ; \"> </td>";	
404					/*	nom		*/	echo "<td> <a href='gestion_inventaire/voir_fiche_materiel.php?height=500&width=640&mat_nom=$nom&mat_ssn=$serial' rel='slb_mat' title='Nom du matיriel : $nom'>$nom</a> </td>";
405					/*	pret	*/	echo "<td class='td_pret' style='display:none'><font color=$font_color> $pret </font></td>";
406					/*	dsit	*/	echo "<td class='td_dsit'> $dsit </td>";
407					/*	serial	*/	echo "<td class='td_serial'> $serial </td>";
408					/*	etat	*/	echo "<td class='td_etat'> <a href='gestion_inventaire/voir_membres_etat.php?height=480&width=640&etat=$etat' rel='slb_mat' title='Liste des materiels $etat'>$etat</a> </td>";
409					/*	type	*/	echo "<td class='td_type' style='display:none'> <a href='gestion_inventaire/voir_membres-marque_type.php?height=480&width=720&marque_type=$type' rel='slb_mat' title='Liste de la famille $type'>$type</a></td>";
410					/*	stype	*/	echo "<td class='td_stype' style='display:none'> <a href='gestion_inventaire/voir_membres-marque_stype.php?height=480&width=720&marque_stype=$stype' rel='slb_mat' title='Liste de la sous famille $stype'>$stype</a></td>";
411					/*	marque	*/	echo "<td class='td_marque'> <a href='gestion_inventaire/voir_membres-marque_marque.php?height=480&width=720&marque_marque=$marque' rel='slb_mat' title='Liste de la marque $marque'>$marque</a></td>";
412					/*	modele	*/	echo "<td class='td_modele' > <a href='gestion_inventaire/voir_membres-marque_model.php?height=480&width=720&marque_model=$model' rel='slb_mat' title='Liste du modטle $model'>$model</a></td>";
413					/*	salle	*/	echo "<td class='td_salle'> <a href='gestion_inventaire/voir_membres_salle.php?height=480&width=640&salle_id=$salle_id' rel='slb_mat' title='Liste du matיriel dans la salle $salle'>$salle</a> </td>";
414					/*	origine	*/	echo "<td class='td_origine'> <a href='gestion_inventaire/voir_membres_origine.php?height=480&width=640&origine=$origine' rel='slb_mat' title='Liste du matיriel ayant pour origine $origine'>$origine</a> </td>";
415					
416					if ( $E_chk ) {
417						/*	modif	*/	echo "<td class='buttons'><a href='gestion_inventaire/form_materiels.php?height=500&width=640&action=mod&id=$id&mat_ssn=$serial' rel='slb_mat' title='Formulaire de modification du matיriel $nom'><img src='" . ICONSPATH . "edit.png'> </a></td>";
418						/*	suppr	*/	echo "<td class='buttons'><a href='#' onclick=\"javascript:validation_suppr_materiel('$id', '$model', '$nom', this.parentNode.parentNode.rowIndex, $id_pret);\">	<img src='" . ICONSPATH . "delete.png' title='supprimer $nom'>	</a> </td>";
419					}
420					
421				echo "</tr>";
422				
423				$compteur++;
424			}
425		?>		
426		
427	</table>
428	</center>
429	<!--	Ancre bas de page	-->
430	<a name="basdepage"></a>
431
432	<br>
433
434</body>
435
436
437<script type="text/javascript">	
438
439	window.addEvent('domready', function(){
440	
441		// activation des slb
442		SexyLightbox = new SexyLightBox({color:'black', dir: 'img/sexyimages', find:'slb_mat'});
443	
444	
445		// fonction de filtrage
446		function filter (phrase) {
447			document.location.href='index.php?page=materiels&filter=' + encodeURIComponent(phrase);
448		};
449			
450
451		// Tamporisation du filtre + envoi
452		$('filt').addEvent('keyup', function(el)  {
453			 el.stop();
454			 if($defined(this.timer))
455				 $clear(this.timer);
456			 this.timer = (function() { filter($('filt').value); }).delay(1000);
457		});
458		
459
460		// AJAX		
461		$('post_form').addEvent('submit', function(e) {	//	Pour poster un formulaire
462			new Event(e).stop();
463			new Request({
464
465				method: this.method,
466				url: this.action,
467
468				onSuccess: function(responseText, responseXML, filt) {
469					$('targetback').setStyle("display","block"); $('target').setStyle("display","block");
470					$('target').set('html', responseText);
471					window.setTimeout("document.location.href='index.php?page=materiels&filter=" + $('filt').value + "'", 1500);			
472				}
473			
474			}).send(this.toQueryString());
475		}); 
476
477		
478	});
479	
480		
481	// *********************************************************************************
482	//
483	//			Fonction de validation de la suppression d'un matיriel
484	//
485	// *********************************************************************************
486		function validation_suppr_materiel (id, model, nom, row, id_pret) {
487		
488		if (id_pret == 0) {
489		
490			var valida = confirm('Voulez vous supprimer le matיriel ' + nom + ' de modטle ' + model + " ?");
491			
492			// si la rיponse est TRUE ==> on lance la page post_materiels.php
493			if (valida) {
494				
495				/* On dיselectionne toutes les coches */
496				select_cette_ligne ( id, row, 0 );
497				
498				$('targetback').setStyle("display","block"); $('target').setStyle("display","block");
499				$('target').load("gestion_inventaire/post_materiels.php?action=suppr&id=" + id);
500				window.setTimeout("document.location.href='index.php?page=materiels&filter=" + $('filt').value + "'", 1500);
501				
502			}
503			
504		} else {
505			
506			alert('Cette machine est prךtיe ! Rendez-la avant la suppression !');
507		}
508	}
509
510
511			
512	// *********************************************************************************
513	//
514	//				Selection/dיselection de toutes les rows
515	//
516	// *********************************************************************************	
517	
518	function checkall(_table) {
519		var table = document.getElementById(_table);	// le tableau du matיriel
520		var checkall_box = document.getElementById('checkall');	// la checkbox "checkall"
521		
522		for ( var i = 1 ; i < table.rows.length ; i++ ) {
523
524			var lg = table.rows[i].id					// le tr_id (genre tr115)
525			
526			if (checkall_box.checked == true) {
527				document.getElementsByName("chk")[i - 1].checked = true;	// on coche toutes les checkbox
528				select_cette_ligne( lg.substring(5), i, 1 )					//on selectionne la ligne et on ajoute l'index
529			} else {
530				document.getElementsByName("chk")[i - 1].checked = false;	// on dיcoche toutes les checkbox
531				select_cette_ligne( lg.substring(5), i, 0 )					//on dיselectionne la ligne et on la retire de l'index
532			}
533		}
534	}
535	
536
537	
538	
539	// *********************************************************************************
540	//
541	//				Ajout des index pour postage sur clic de la checkbox
542	//
543	// *********************************************************************************	
544	 
545	function select_cette_ligne( tr_id, num_ligne, check ) {
546
547		var chaine_id = $('materiel_a_poster').value;
548		var table_id = chaine_id.split(";");
549				
550		var nb_selectionnes = $('nb_selectionnes');
551		
552		var ligne = "tr_id" + tr_id;	//on rיcupטre l'tr_id de la row
553		var li = document.getElementById(ligne);	
554		
555		if ( li.style.display == "" ) {	// si une ligne est masquיe on ne la selectionne pas (pratique pour le filtre)
556		
557			switch (check) {
558				case 1: // On force la selection si la ligne n'est pas dיjא cochיe
559					if ( !table_id.contains(tr_id) ) { // la valeur n'existe pas dans la liste
560						table_id.push(tr_id);
561						li.className = "selected";
562						nb_selectionnes.innerHTML = "[" + (table_id.length-1) + "] sיlectionnי(s)";	// On entre le nombre de machines sיlectionnיes	
563					}
564				break;
565				
566				case 0: // On force la dיselection
567					if ( table_id.contains(tr_id) ) { // la valeur existe dans la liste on le supprime donc le tr_id de la liste
568						table_id.erase(tr_id);
569						nb_selectionnes.innerHTML = " [" + (table_id.length-1) + "] sיlectionnי(s)";	 // On entre le nombre de machines sיlectionnיes			
570						// alternance des couleurs calculיe avec la paritי
571						if ( num_ligne % 2 == 0 ) li.className="tr1"; else li.className="tr2";
572					}
573				break;
574				
575				
576				default:	// le check n'est pas prיcisי, la fonction dיtermine si la ligne est selectionnיe ou pas
577					if ( table_id.contains(tr_id) ) { // la valeur existe dans la liste on le supprime donc le tr_id de la liste
578						table_id.erase(tr_id);
579						
580						nb_selectionnes.innerHTML = " [" + (table_id.length-1) + "] sיlectionnי(s)";	 // On entre le nombre de machines sיlectionnיes			
581
582						// alternance des couleurs calculיe avec la paritי
583						if ( num_ligne % 2 == 0 ) li.className="tr1"; else li.className="tr2";
584					
585					} else {	// le tr_id n'est pas trouvי dans la liste, on crיי un nouvel tr_id א la fin du tableau
586						table_id.push(tr_id);
587						li.className = "selected";
588						nb_selectionnes.innerHTML = " [" + (table_id.length-1) + "] sיlectionnי(s)";	// On entre le nombre de machines sיlectionnיes	
589					}
590				break;			
591			}
592	
593			// on concatטne tout le tableau dans une chaine de valeurs sיparיes par des ;
594			$('materiel_a_poster').value = table_id.join(";");
595			
596
597			if ( $('materiel_a_poster').value != "" ) {
598				$('modif_selection').setStyle("display","inline");
599				$('rename_selection').setStyle("display","inline");
600				$('affect_selection').setStyle("display","inline");
601				nb_selectionnes.setStyle("display","inline");
602			} else { 
603				$('modif_selection').setStyle("display","none");
604				$('rename_selection').setStyle("display","none");
605				$('affect_selection').setStyle("display","none");
606				nb_selectionnes.setStyle("display","none");
607			}
608		}
609	}
610
611		
612	// *********************************************************************************
613	//
614	//			Modifie א la volיe l'affectation dans la salle
615	//
616	// *********************************************************************************	
617	 	
618	function change_affectation_salle ( salleid ) {
619		var table = document.getElementById("mat_table");
620		
621		var salle_selected_id = document.getElementById('salle_select').selectedIndex;
622		var salle_selected_text = document.getElementById('salle_select').options[salle_selected_id].text;	
623
624
625		for (var r = 1; r < table.rows.length; r++){
626			if ( document.getElementsByName("chk")[r-1].checked == true ) {
627				
628				var lg = "<a href='gestion_inventaire/voir_membres_salle.php?height=480&width=640&salle_id=" + salleid + "' rel='slb_mat' title='Membres de la salle " + salle_selected_text + "'>" + salle_selected_text + "</a>";
629				// On change le texte de la salle par la nouvelle affectation
630				document.getElementById('mat_table').rows[r].cells[6].innerHTML = lg;
631			}
632		}
633	}
634	
635
636	
637	// *********************************************************************************
638	//
639	//			Montre ou masque des colonnes
640	//
641	// *********************************************************************************	
642	
643	function hidethem (col_name, show) {
644	
645		if ( show == true)
646			var state = "";
647		else var state = "none";
648	
649		$$(col_name).each(function(item) {
650			item.style.display = state;
651		})
652		
653		// On ajuste la taille de la barre d'entךte
654		//$("entete-materiels").style.width = $("contenu").getStyle('width');
655	}
656	
657	
658	function post_modif_entete () {
659		$('target').load("gestion_inventaire/post_materiels.php?action=entetes&value=" + etat_entetes() );
660	}
661	
662	// *********************************************************************************
663	//
664	//			Montre ou masque les options d'affichage de la page
665	//
666	// *********************************************************************************	
667	
668	function showhide_options() {
669		if ( $('options_colonnes').style.display == 'block' ) {
670			$('options_colonnes').style.display = 'none'; 
671		} else {
672			$('options_colonnes').style.display = 'block';
673		}
674	}
675	
676	// *********************************************************************************
677	//
678	//			Montre ou masque l'affecation directe א une salle
679	//
680	// *********************************************************************************	
681	
682	function toggle_affectsalle() {
683		if ( $('affect_box').style.display == 'block' ) {
684			$('affect_box').style.display = 'none'; 
685		} else {
686			$('affect_box').style.display = 'block';
687		}
688	}	
689	
690	
691	// *********************************************************************************
692	//
693	//			Tri ORDERBY
694	//
695	// *********************************************************************************	
696	
697	function order_by (tri, phrase) {
698		document.location.href="index.php?page=materiels&tri=" + tri + "&filter=" + phrase;
699	}
700	
701	
702	// *********************************************************************************
703	//
704	//		On retourne la liste des יtats des entךtes (colonne montrיe ou masquיe)
705	//
706	// *********************************************************************************	
707	
708	function etat_entetes () {
709		
710		var liste = "";
711	
712		$$('.opt_entete').each(function(item) {
713			if ( item.checked )
714				liste += "1";
715			else 
716				liste += "0";
717		});	
718				
719		return liste;
720	}
721	
722	// *********************************************************************************
723	//
724	//		initialisation des cases א cocher et de l'יtat des colonnes (hide/show)
725	//
726	// *********************************************************************************	
727	
728	function init_entetes (value) {
729		
730		if (value.substr(0, 1) == "1") {$('chk_pret').checked = true; hidethem('.td_pret', true);} 
731		else {$('chk_pret').checked = false; hidethem('.td_pret', false);}
732		
733		if (value.substr(1, 1) == "1") {$('chk_dsit').checked = true; hidethem('.td_dsit', true);} 
734		else {$('chk_dsit').checked = false; hidethem('.td_dsit', false);}
735		
736		if (value.substr(2, 1) == "1") {$('chk_serial').checked = true; hidethem('.td_serial', true);} 
737		else {$('chk_serial').checked = false; hidethem('.td_serial', false);}
738		
739		if (value.substr(3, 1) == "1") {$('chk_etat').checked = true; hidethem('.td_etat', true);} 
740		else {$('chk_etat').checked = false; hidethem('.td_etat', false);}
741		
742		if (value.substr(4, 1) == "1") {$('chk_type').checked = true; hidethem('.td_type', true);} 
743		else {$('chk_type').checked = false; hidethem('.td_type', false);}
744		
745		if (value.substr(5, 1) == "1") {$('chk_stype').checked = true; hidethem('.td_stype', true);} 
746		else {$('chk_stype').checked = false; hidethem('.td_stype', false);}
747		
748		if (value.substr(6, 1) == "1") {$('chk_modele').checked = true; hidethem('.td_modele', true);} 
749		else {$('chk_modele').checked = false; hidethem('.td_modele', false);}
750		
751		if (value.substr(7, 1) == "1") {$('chk_marque').checked = true; hidethem('.td_marque', true);} 
752		else {$('chk_marque').checked = false; hidethem('.td_marque', false);}
753		
754		if (value.substr(8, 1) == "1") {$('chk_salle').checked = true; hidethem('.td_salle', true);} 
755		else {$('chk_salle').checked = false; hidethem('.td_salle', false);}
756	
757		if (value.substr(9, 1) == "1") {$('chk_origine').checked = true; hidethem('.td_origine', true);} 
758		else {$('chk_origine').checked = false; hidethem('.td_origine', false);}
759	}
760	
761	// On initialise tout le bazar d'entךte en cochant les checkbox et en cachant/montrant les colonnes
762	init_entetes ('<?PHP echo $_SESSION['entetes'];?>');
763		
764</script>