Subversion Repositories eFlore/Projets.eflore-projets

Compare Revisions

Ignore whitespace Rev 338 → Rev 339

/trunk/scripts/modules/bdtfx/Bdtfx.php
138,7 → 138,7
}
}
}
 
private function genererChpFamille() {
$this->initialiserGenerationChamps();
$this->preparerTablePrChpFamille();
146,32 → 146,69
$famille = array();
$noms = array();
$introuvables = array();
foreach ($resultats as $nom) {
$introuvablesSyno = array();
foreach ($resultats as $id => $nom) {
$nn = $nom['num_nom'];
$nnr = $nom['num_nom_retenu'];
$nts = $nom['num_tax_sup'];
$rg = $nom['rang'];
if ($rg == '180') {
$famille[$nn] = $nom['nom_sci'];
} else {
if (isset($noms[$nts])) {
$noms[$nn] = $noms[$nts];
} else if (isset($famille[$nts])) {
$noms[$nn] = $famille[$nts];
if ($nnr != '') {
if ($rg == '180') {
$famille[$nn] = $nom['nom_sci'];
} else {
$introuvables[] = $nn;
if ($nn == $nnr) {// nom retenu
if (isset($noms[$nts])) {
$noms[$nn] = $noms[$nts];
} else if (isset($famille[$nts])) {
$noms[$nn] = $famille[$nts];
} else {
$introuvables[] = $nn;
}
} else {// nom synonyme
if (isset($noms[$nnr])) {
$noms[$nn] = $noms[$nnr];
} else {
$introuvablesSyno[] = $nom;
}
}
}
}
unset($resultats[$id]);
$this->afficherAvancement("Attribution de leur famille aux noms en cours");
if ($this->stopperLaBoucle($this->getParametre('t'))) break;
}
echo "\n";
if ($introuvables != 0) {
$introuvables = implode(', ', $introuvables);
echo "Parent introuvable pour les noms : $introuvables\n";
 
foreach ($introuvablesSyno as $id => $nom) {
$nn = $nom['num_nom'];
$nnr = $nom['num_nom_retenu'];
if (isset($noms[$nnr])) {
$noms[$nn] = $noms[$nnr];
} else {
$introuvables[] = $nn;
}
unset($introuvablesSyno[$id]);
$this->afficherAvancement("Attribution de leur famille aux synonymes en cours");
}
echo "\n";
 
if (count($introuvables) != 0) {
$introuvablesNbre = count($introuvables);
echo "Famille introuvable pour $introuvablesNbre noms ! Voir le log.\n";
 
$logContenu = implode(", \n", $introuvables);
$logFichier = realpath(dirname(__FILE__)).'/log/famille_introuvable.log';
echo $logFichier."\n";
file_put_contents($logFichier, $logContenu);
}
if (count($introuvablesSyno) != 0) {
//$introuvablesSyno = implode(', ', $introuvablesSyno);
$introuvablesSyno = count($introuvablesSyno);
echo "Synonyme avec nom retenu introuvable : $introuvablesSyno\n";
}
$this->lancerRequeteModificationPrChpFamille($noms);
}
 
private function preparerTablePrChpFamille() {
$requete = "SHOW COLUMNS FROM {$this->table} LIKE 'famille' ";
$resultat = $this->getBdd()->recuperer($requete);
182,17 → 219,17
$this->getBdd()->requeter($requete);
}
}
 
private function recupererTuplesPrChpFamille() {
$requete = 'SELECT num_nom, num_tax_sup, rang, nom_sci '.
$requete = 'SELECT num_nom, num_nom_retenu, num_tax_sup, rang, nom_sci '.
"FROM {$this->table} ".
"WHERE rang >= 180 ".
" AND num_tax_sup != '' ".
"ORDER BY rang ASC,num_tax_sup ASC ";
"ORDER BY rang ASC, num_tax_sup ASC , num_nom_retenu DESC ";
//echo $requete."\n";
$resultat = $this->getBdd()->recupererTous($requete);
return $resultat;
}
 
private function lancerRequeteModificationPrChpFamille($noms) {
foreach ($noms as $id => $famille) {
$famille = $this->getBdd()->proteger($famille);