<?php
require "control_auth";
/*				Programme :		admin_corresp_cd_oeuvre_detail.php
				Description : 	Permet d'administrer la table corresp_cd_oeuvre_detail.
				Une fois une oeuvre choisie dans admin_cd, ce programme affiche tous les détails
				disponibles. On choisit avec des cases à cocher les détails à associer et l'interprète
				de chaque détail au moyen d'une liste déroulante.
*/

$id_oeuvre=$_GET['id_oeuvre'];
$action=$_GET['action'];
$id_corresp_cd_oeuvre=$_GET['id_corresp_cd_oeuvre'];

require "fonctions";
require "codbfile";
switch ($action)
{
	case ("show"):	//On affiche la liste des détails disponibles pour l'oeuvre en cochant ceux qui sont rattachés
	{
		//On contruit l'entête de la page en récupérant le nom de l'oeuvre, le cd
		$sql="select o.nom_oeuvre, cd.nom_cd from oeuvre o, corresp_cd_oeuvre c, cd
			where o.id_oeuvre=c.id_oeuvre
			and cd.id_cd=c.id_cd
			and c.id_corresp_cd_oeuvre=$id_corresp_cd_oeuvre";
		$result=mysql_query($sql)
				or die ("Impossible de charger les informations concernant l'oeuvre et le cd.");
		$ligne=mysql_fetch_array($result);
		extract($ligne);
		echo "<div align='center'><h2>$nom_oeuvre sur le cd $nom_cd</h2><hr></div>\n";

		// On contruit le formulaire
		echo "
		<form action='admin_corresp_cd_oeuvre_detail.php?action=sql&id_corresp_cd_oeuvre=$id_corresp_cd_oeuvre&id_oeuvre=$id_oeuvre'  method='post'>\n";

		//On charge la liste des détails disponibles pour cette oeuvre


		//On test la présence de détail
		$sql="select id_detail_oeuvre from detail_oeuvre
		      where id_oeuvre=$id_oeuvre";


		$result=mysql_query($sql)
				or die ("Impossible de tester la présence de détails dans cette oeuvre");
		$nb_ligne=mysql_num_rows($result);
		if ($nb_ligne<1) // Il n'y a aucun résultat
		{echo "Il n'y a aucun détail renseigné pour cette oeuvre.";break;} // On arrête le programme
		else

		//On cherche le plus bas niveau de détail
		$sql="select max(niveau_detail_oeuvre) as niveau_detail_oeuvre from detail_oeuvre
		where id_oeuvre=$id_oeuvre";

		$result=mysql_query($sql)
			or die ("Impossible de récupérer le plus bas niveau de détail de l'oeuvre");
		$ligne=mysql_fetch_array($result);
		extract($ligne);
		$max_niveau_detail=$niveau_detail_oeuvre;




		//On contruit le début du tableau pour afficher les détails
		echo "<table align='left'>";

		//On affiche les détails

		for ($i=1;$i<=$max_niveau_detail;$i++)
		{
			If ($i==1)
			{	$sql="select * from detail_oeuvre where id_oeuvre='$id_oeuvre'
				and niveau_detail_oeuvre='$i'
				order by nom_detail";
			}
			else
			{	$j=$i-1;
				$sql="select * from detail_oeuvre where id_oeuvre='$id_oeuvre'
				and niveau_detail_oeuvre='$i' and id_detail_oeuvre_sup=$id_detail_oeuvre_traite[$j]
				order by nom_detail";
			}

			$result=mysql_query($sql)
				or die ("Impposible d'exécuter le chargement des données");

			echo "<form action='admin_corresp_cd_oeuvre_detail.php?action=sql&id_oeuvre=$id_oeuvre&
			id_corresp_cd_oeuvre=$id_corresp_cd_oeuvre' method='post'>";

			while($ligne=mysql_fetch_array($result))
			{	extract($ligne);
				if ($nom_detail>$nom_detail_oeuvre_traite[$i])
				{	$niveau_detail_cree=$i+1; //Permet de déterminer le niveau de détail du "sous-détail"
					echo "<tr><td colspan='$i'></td>
					<td><input type='checkbox' name='tableau_detail_a_rattacher[]'
					value='$id_detail_oeuvre'";
					// On regarde si le détail est déjà rattaché à ce cd et cette oeuvre
					$sql_corresp_cd_oeuvre_detail="select id_corresp_cd_oeuvre_detail
					from corresp_cd_oeuvre_detail
					where id_corresp_cd_oeuvre=$id_corresp_cd_oeuvre
					and id_detail_oeuvre=$id_detail_oeuvre";
					$result_corresp_cd_oeuvre_detail=mysql_query($sql_corresp_cd_oeuvre_detail)
														or die ("Impossible de vérifier si ce détail
														est déjà rattaché à ce couple cd/oeuvre.");
					$nb_ligne_corresp_cd_oeuvre_detail=mysql_num_rows($result_corresp_cd_oeuvre_detail);
					if ($nb_ligne_corresp_cd_oeuvre_detail>0)
					{ 
					echo "checked";
					}


					echo"
					>&nbsp;
					<a href='admin_corresp_cd_oeuvre_detail_interprete.php?action=show&id_oeuvre=$id_oeuvre&id_corresp_cd_oeuvre=$id_corresp_cd_oeuvre&id_detail_oeuvre=$id_detail_oeuvre'>$nom_detail</a>&nbsp;<a href='admin_fichier_musique.php?action=show&id_corresp_cd_oeuvre=$id_corresp_cd_oeuvre&id_detail_oeuvre=$id_detail_oeuvre' target='_blank'><img src='../images/note.jpg' border='0' height='15' width='15' title='Cliquez ici pour administrer le fichier musical'></a>";

					//On regarde s'il y a des interprètes rattachés à ce détail
					$sql_interprete_detail="select id_corresp_cd_oeuvre_detail_interprete
					from corresp_cd_oeuvre_detail_interprete
					where id_corresp_cd_oeuvre=$id_corresp_cd_oeuvre
					and id_detail_oeuvre=$id_detail_oeuvre";
					$result_interprete_detail=mysql_query($sql_interprete_detail)
							or die ("Impossible de vérifier s'il y a des interprètes rattachés à ce détail.<br>$sql_interprete_detail");
					$nb_ligne_interprete_detail=mysql_num_rows($result_interprete_detail);
					if ($nb_ligne_interprete_detail>0)
					{
						echo "&nbsp;Il y a des interprètes rattachés";

					}
					$id_corresp_cd_oeuvre_detail=0; //on efface la valeur pour le détail suivant
					$nb_ligne_interprete_detail=0; 	//On repasse à 0 pour ne pas garder la valeur pour le
														//prochain détail
					echo "

					</td>";
					$nom_detail_oeuvre_traite[$i]=$nom_detail;
					$id_detail_oeuvre_traite[$i]=$id_detail_oeuvre;



					//On regarde s'il y a un détail de niveau inférieur
					$sql="select id_detail_oeuvre from detail_oeuvre
							where id_oeuvre=$id_oeuvre
							and id_detail_oeuvre_sup=$id_detail_oeuvre";
					$result_test=mysql_query($sql)
								or die ("Impossible de tester s'il y a un niveau inférieur.");
					$nb_ligne=mysql_num_rows($result_test);

					if ($nb_ligne<>0)
					{	//Il y a un détail de niveau inférieur lié à ce détail
						$niveau_inf="oui";
						break;
					}
					else
					{ $niveau_inf="non";
					}
				}

			} //Fin du while

			if ($niveau_inf=="non")
			{
				$i=$i-2; //Pour traiter le niveau inférieur après le +1 de la boucle "For"
				//echo "$i<br>";
				if ($i<0)
				{	break;
				}
			}


		}
			$nb_max_colonne=$max_niveau_detail+1;
			
			
			echo "<tr><td colspan='$nb_max_colonne'>
			<a href='' onClick='document.forms[0].row.checked = true; for(i=0; i<document.forms[0].row.length; i++) { document.forms[0].row[i].checked = true; } return false'>Tout sélectionner</a>
			
			</td></tr>
			<tr><td colspan='$nb_max_colonne'><hr><input type='submit' value='Sauvegarder'></td></tr></form></table>";
	break;
	} //Fin du case show

	case ("sql"):
	{
		$tableau_detail_a_rattacher=$_POST['tableau_detail_a_rattacher'];


		// On supprime les details existant de la table corresp_cd_oeuvre_detail
		$sql="delete from corresp_cd_oeuvre_detail where id_corresp_cd_oeuvre=$id_corresp_cd_oeuvre";
		$result=mysql_query($sql)
				or die ("Impossible de supprimer les détails existants.");

		//On ajoute les détails mis à jour
		foreach ($tableau_detail_a_rattacher as $clé => $id_detail_oeuvre)
		{
			$sql="insert into corresp_cd_oeuvre_detail
					(id_corresp_cd_oeuvre, id_detail_oeuvre)
					values ($id_corresp_cd_oeuvre, $id_detail_oeuvre)";

			require "codbfile";
			$result=mysql_query($sql)
					or die ("Impossible d'ajouter le nouveau détail.");

		}



	redirection ("admin_corresp_cd_oeuvre_detail.php?action=show&id_oeuvre=$id_oeuvre&id_corresp_cd_oeuvre=$id_corresp_cd_oeuvre");
	} // Fin du case sql





} // Fin du switch
