Agefoddx/classe/GestionBD/bdExterneLigneGestion.php
2025-03-26 10:22:20 +01:00

49 lines
2.2 KiB
PHP

<?php
namespace Module\Agefoddx\Classe\GestionBD;
use Module\Agefoddx\Classe\Classe\GestionTexte;
class bdExterneLigneGestion {
/**
* @param bdExterneInteraction $bd bd externe qui permet le requêtage sql
* @param string $nomTable nom de la table
* @return array renvoie le nom des colones de la table
*/
public static function getListeLigne (bdExterneInteraction $bd, string $nomTable) {
$pdo = $bd->getPdo();
$list = [];
$resql= $pdo->query("SELECT column_name as 'row_name' FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '$nomTable';");
foreach ($resql as $value){
if (!in_array($value["row_name"], self::getListeFK($bd, $nomTable)))
$list[] = $value["row_name"];
} return $list;
}
/**
* @param bdExterneInteraction $bd bd externe qui permet le requêtage sql
* @param string $nomTable nom de la table
* @param string $nomLigne nom de la colonne
* @return string|null renvoie le type de la colonne
*/
public static function getTypeLigne(bdExterneInteraction $bd, string $nomTable, string $nomLigne) : ?string {
$pdo = $bd->getPdo();
$resql = $pdo->query("SELECT COLUMN_TYPE as 'colType'FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '$nomTable' AND COLUMN_NAME = '$nomLigne';");
foreach ($resql as $value)$result = $value["colType"];
if ($result != '') return $result;
else return null;
}
/**
* @param bdExterneInteraction $bd bd externe qui permet le requêtage sql
* @param string $nomTable nom de la table
* @return array renvoie la liste des clefs étrangères de la table
*/
public static function getListeFK(bdExterneInteraction $bd, string $nomTable) {
$pdo = $bd->getPdo();
$list = [];
$resql= $pdo->query("SELECT COLUMN_NAME as 'NomLigne', REFERENCED_TABLE_NAME AS 'TableReference' FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME = '$nomTable' AND REFERENCED_TABLE_NAME IS NOT NULL;");
foreach ($resql as $value){
$list[] =["row_name" => $value["NomLigne"], "TableReference"=>$value['TableReference']];
}
return $list;
}
}