<?php
/*******************************************************************************
// =============================================================================
// Affichage d'un enregistrement.
// Tous le champs sont en sortie. Aucun champ n'est en saisie
// =============================================================================
// -----------------------------------------------------------------------------
// affichage du formulaire "Liste de choix de la table"
// -----------------------------------------------------------------------------
// recherche des tables de la base
// et affichage d'une liste à choix multiple pour le choix de la table à modifier.
// affichage automatique de la page $goto_page lorsqu'il y a un changement de valeur de ce champ.
//@	in	: $tableName ; nom de la table si déjà sélectionnée avant
//@ in	: $varList ; liste des valeurs locales : connexion à la base, ...
//@ out	:	aucune sortie, affichage direct
//
*******************************************************************************/
// =============================================================================
// récup de la liste des champs clés (non utilisé)
// =============================================================================
/*
function getPrimaryKey($tableName, $var_list) {
	$fieldList=getFieldList($tableName, $var_list);
	for ($i=0;$i<sizeof($fieldList);$i++) {
		if ($filedList[$i][5]=='PRI') $keyList[$j]=$filedList[$i][0];
		return (array) $keyList;
	}
}
*/
// =============================================================================
// récup de la description d'un enreg dans une table (pour les champs référencés)
// =============================================================================
function getRefValue($refTableName, $refFieldName, $value, $var_list) {
  			include ('library/dbDicTable.inc');   // description des tables
				include	('library/dbReferences.inc'); // description des champs référencés
  			include ('library/dbDicFields.inc');   // description des champs, valeurs par défaut
						if (is_array($dicTable[$refTableName]['descField'])) 
							$selectedFields=implode(", ", $dicTable[$refTableName]['descField']);
						else
							$selectedFields=$dicTable[$refTableName]['descField'];
						$refSql="select ".$selectedFields;
						$refSql.=" from ".$refTableName;
						$refSql.=" where ".$refFieldName."='".$value."' ;";
						//echo $refSql;
						$refSql_Id=ouvrirRequete($refSql, $var_list['connectId']);
						//echo mysql_errno().mysql_error();
						$refRecord = lireTable($refSql_Id);
						if ($refRecord)
							$refRecordAsString=implode(" ", $refRecord);
						else
							$refRecordAsString="";
						return $refRecordAsString;
						//echo "<br>dbg3 : ";foreach ($refRecord as $key =>$value) echo "<br>refRecord($key)=$value" ;
}
// -----------------------------------------------------------------------------

//==============================================================================
// Main
//==============================================================================
				
				// début de la liste des champs de l'enreg
				echo "<table align=center>";
				echo "<tr><th>field desc
						<th>Value
					 	<th>field name
			 			<th>field format
						<th>ref
						<th>key
						<th>Message
						\n";			 			
				
				// recup la liste des champs de la table
				$fieldList=DB_getFieldList($tableName, $connexion);
				//$fieldList=getFieldList($tableName, $connectId);
				
				// ajouter les messages d'erreur si'il y en a
				if (isset($fieldMessage))
					foreach($fieldList as $i => $field) 
						if (isset($fieldMessage[$i])) 
							$fieldList[$i]['message']=$fieldMessage[$i];
				
				
				// Si on n'est pas en mode ajout, récupérer les valeurs de l'enreg
				if ($mode!="add") {
					// recup la liste des valeurs de l'enreg !!! CLE PRIMAIRE + UN SEUL CHAMP
					$sql="";
					$sql="select * from ".$tableName;
					$sql.=" where ";
					/*
					for ($i=0;$i<sizeof($keyFieldNames);$i++)
							$sql.=$keyFieldNames[$i]." = '".$KeyFieldValues[$i];
					*/
					for ($i=0;$i<sizeof($keyFields);$i++) {
						if ($i>0)
							$sql.=" and ";
						$sql.=$keyFields[$i];
					}
					$sql.=" ;";
//dbg				echo "<br>sql=$sql";
					$sql_Id=DB_ouvrirRequete($sql, $connexion);
					$record = DB_lireLigneT($sql_Id);
					//$record = mysql_db_query($varList['login_db'], $sql, $varList['connectId']);
					//$sqlQuery = "Select * from ".$varList['tableName']." where ";
//dbg				echo mysql_errno().mysql_error();
//dbg				echo "<br>result=".$record;
					
				} else {
					// si on est en mode ajout, créer un enregistrement virtuel initialisé avec les valeurs par défaut
					foreach($fieldList as $key => $field) $record[$key]=$field['dftValue'];
				}
				
				// Note, la colonne référence contient la valeur descriptive de l'enregistrement de la table référencée par une clé étrangère.

				// afficher la liste des champs de l'enreg
				$i=0;
				$rowType=1;
//dbg				foreach($fieldList as $key => $field) echo "field($key)=".$field['name']."=".$record[$key].'/';
				
				foreach($fieldList as $key => $field) {
					// créer les champs affichés
					// récup de la liste des caractéristiques du champ et la valeur
					//$field=$fieldList[$key];
					// si on est pas en mode copie ou que (on est entre autre en mode copie) le champ n'est pas clé primaire, 
					// 		alors, on récupère sa valeur
					if ($mode!='copy' || $field['key']!='PRI') {
						$field['value']=stripslashes($record[$key]);
					} else
						$field['value']="";
//					echo $field['value'];
					
					// nom du champ + desc
					$fieldName=$field['name'];
					// description du champ
					$fieldDesc=$field['desc'];
					// type du champ
					$fieldType=$field['type'];
					// longeur du champ
					$fieldLength="N/A";
					if (isset($field['long']))
						$fieldLength=$field['long'];
					// mention clé primaire
					$primaryKey= $field['key'];
					// message pour le champ
					$fieldMsg="&nbsp;";
					if (isset($field['message']))
						$fieldMsg=$field['message'];
					
					// valeur descriptive du champ si c'est une clé étrangère (pas la peine de le faire si on est en ajout)
					$reference="";
					if ($mode!='add' && isset($field['refField'])) {
						$reference=getRefValue($field['refField'][0], $field['refField'][1], $field['value'], $varList);
					}
					
					// définir la couleur de fond de la ligne
					if ($rowType == 0) $rowType=1;
					else $rowType = 0;

					// afficher la ligne
					echo "<tr class=tabRow".$rowType.">"; // début de ligne
					echo "<td>$fieldName"; // nom du champ
					echo "<td>$fieldDesc"; // description du champ
					DSP_displayField($tableName, $field, $connexion, $backUrl); // contenu du champ
					echo "<td>$fieldType ($fieldLength)"; // type de champ
					echo "<td>$reference"; // valeur référencée (vide ou non)
					echo "<td>$primaryKey"; // valeur référencée (vide ou non)
					echo "<td>$fieldMsg"; // message éventuel (d'erreur)
					
				}
				// fin de la liste des champs
				echo "</table>";
?>

