<?php   
//fr 23/09/04
/*
Correlation entre 2 champs
D'après la saisie d'une valeur dans un champ d'origine
correle au travers d'une table un autre champ
$table= table sur lequel s effectue la recherche
$champOrigine = champ d origine => affectation de la valeur validée
$champCorrel = champ à affecter la valeur validée
$recherche = valeur du champ origine à rechercher
$zoneOrigine = champ de recherche sur la table
$zoneCorrel = champ en relation
$zoneCorrel2 = valeur du champ de selection (clause where)
$champCorrel2 = champ de selection (clause where)
*/
// modifications ===============================================================
//
// version 1.1 : possibilite de parametrage application par include   27/02/05
// include dyn/comboParametre.inc
// include dyn/comboAffichage.inc
// include dyn/comboRetour.inc
// =============================================================================

//include ("../dyn/session.inc");

// classe(s) utilisée(s)
require_once "DB.php";
// parametrage =================================================================
$DEBUG=0;
// debut = 0 recherche sur la chaine
// debut = 1 recherche sur le debut de la chaine
  $debut=0 ;
  $longueurRecherche=1;
  $sql="";
// Recupération de champs
  $table=$_GET['table']; // table sur laquelle se fait la correlation
  $zoneOrigine=$_GET['zorigine']; // zone d'origine de la correlation
  $zoneCorrel= $_GET['zcorrel'];  // zone qui sera mise à jour par la correlation
  $recherche= $_GET['recherche']; // caracteres saisis dans la zone d'origine
  $champOrigine=$_GET['origine']; // valeur affectée à la zone d'origine
  $champCorrel=$_GET['correl'];   // valeur affectée à la zone correllée
// parametres de selection
  $champCorrel2=$_GET['correl2'];
  $zoneCorrel2= $_GET['zcorrel2'];
// =============================================================================

// Parmetre Specifique *********************************************************
// parametrage de $sql = requete de recherche specifique
// $longueurRecherche  = longueur autorise en recherche
// $debut = rrecherche au debut de zone ou compris dans la zone
include ("comboparametre.inc");
//******************************************************************************
include("../dyn/fenetre.css");
include("../dyn/var.inc");
echo "<html>";
echo"<head>";
echo "</head>";
echo "<body>";
//
if($DEBUG==1){
  echo "=>".$champOrigine."<br>";
  echo "=>".$recherche."<br>";
  echo "=>".$table."<br>";
  echo "=>".$zoneOrigine."<br>";
  echo "=>".$zoneCorrel."<br>";
  echo "=>".$champCorrel."<br>";
  echo "=>".$zoneCorrel2."<br>";
  echo "=>".$champCorrel2."<br>";
}

if (strlen($recherche) > $longueurRecherche){
   // dsn
   include ("../dyn/connexion.php");
   $db=& DB :: connect($dsn, $db_option);
   if (DB :: isError($db)) {
    die($db->getMessage());
    }
    else{
        if($DEBUG==1)
        echo "La base ".$dsn['database']." est connectée.<br>";
    }
    If ($sql==""){
        if($debut==0){
            $sql="select * from ".$table." where ".$zoneOrigine." like '%".$recherche."%'";
        }else{
            $sql="select * from ".$table." where ".$zoneOrigine." like '".$recherche."%'";
        }
    }
    if($zoneCorrel2!="") // selection
        $sql=$sql." and ".$champCorrel2." like '".$zoneCorrel2."'";
    if ($DEBUG==1)
       echo $sql;
       $res = $db->query($sql);
       $nbligne=$res->numrows();
       if (DB :: isError($res))
           die("<option>".$res->getMessage()."</option>");
       else{
       if ($nbligne > 1){
       // ==============================
       // il y a  plusieurs lignes
       // ==============================
          if ($DEBUG == 1)
             echo "<option> La requête ".$sql." est exécutée.</option>>";
          echo "<center><br>Vérifiez la correspondance avec ".$champOrigine.".<br>";
          echo "<form name='f2'>";
          echo  "<select size=\"1\" name=\"".$champOrigine."\" class=\"champFormulaire\">";
          while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
              // parametrage standard
              $x=$row[$zoneCorrel];    // dans la zone correllée
              $y=$row[$zoneOrigine];   // dans la zone d'origine
              //$retourUnique= $row[$zoneOrigine];
              $aff=$row[$zoneCorrel]." - ".$row[$zoneOrigine];
              // AFFICHAGE SPECIFIQUE *************************************************
              // defintion du retour  unique d apres la table select = $retourUnique
              // definition affichage en table = $aff
              include ("comboaffichage.inc");
              // **********************************************************************
              //$opt= "<option value=\"".$row[$zoneCorrel]."£".$retourUnique."\">";
              $opt= "<option value=\"".$x."£".$y."\">";
              $opt=$opt.$aff."</option>";
              echo $opt;
          }
          echo "</select>";

          echo "<br><br><br><br><input type='submit' tabindex=70 value='V a l i d e r' onclick='javascript:recup();'  style='".$styleBouton."'></center>";
          echo "</form>";
       }else{
           if ($nbligne==0)
                  echo "<br><br><CENTER> A u c u n e <br> c o r r e s p o n d a n c e</CENTER>";
           else{
           // ====================================
           // il n y a qu une ligne => retour auto
           // ====================================
              while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){
                    $x=$row[$zoneCorrel];    // dans la zone correllée
                    $y=$row[$zoneOrigine];   // dans la zone d'origine
                    // RETOUR SPECIFIQUE =======================================
                    // parametrage des retour dans les champs $x et $y
                    include ("comboretour.inc");
                    //==========================================================

             }
?>
<script language="javascript">
// envoi des donnees dans le formulaire
// 1 seule ligne
opener.document.f1.<?=$champCorrel?>.value = "<?=$x?>";
opener.document.f1.<?=$champOrigine?>.value = "<?=$y?>";
this.close();
</script>
<?
           }
       } }
?>
<script language="javascript">
//recuperation des données apres validation
// plusieurs lignes
function recup()
    {   
    var s = document.f2.<?=$champOrigine?>.value;
    var x = s.split( "£" ); 
    opener.document.f1.<?=$champOrigine?>.value = x[1];
    opener.document.f1.<?=$champCorrel?>.value =x[0];
this.close();
    }
</script>

<?

}else
        echo "<center>Vous devez saisir une valeur d'au moins<br><br> ".($longueurRecherche+1)." caractères<br><br>dans le champ ".$champOrigine."</center>";
echo "<BR><center><a href=# onclick='window.close();'>";
echo "<img src='..\img\fermer.png' border='0'  alt='Fermer cette fenêtre' align='middle'>";
echo "</a></center>";
?>
