Bonjour,
Si ce changement ne doit être utilisé qu'au submit du formulaire, il suffit d'écrire :
$db_name = (!empty($_POST['table'])) ? $_POST['table'] : 'Base_1';
Ceci signifie que si $_POST['table'] existe et qu'il n'est pas vide, on va l'utiliser pour instancier $db_name (ceci est basé sur l'attribut name du <select>)
En réalité, ce code est un trou de sécurité parce que ça veut dire qu'on peut interroger n'importe quelle base de données (attention aux noms des variables et attributs ;-) un fois c'est "db" une fois c'est "table").
Il vraudrait alors mieux définir une liste de DB disponibles et s'assurer que la valeur correspond à ce qui est autorisé :
1 2
| $allowed_bases = ["Base_1", "Base_2", "Base_3"];
$db_name = (!empty($_POST['table']) && in_array($_POST['table'], $allowed_bases)) ? $_POST['table'] : 'Base_1'; |
Si ce changement doit perdurer au-delà de la soumission du formulaire (après un changement de page par exemple); j'utiliserais alors les Sessions PHP
1 2 3 4 5 6 7
| session_start(); // ATTENTION, cette instruction doit être unique et se trouver le plus en haut possible dans le code (donc la première ligne du premier fichier chargé pour bien faire)
$allowed_bases = ["Base_1", "Base_2", "Base_3"];
if (!empty($_POST['table']) && in_array($_POST['table'], $allowed_bases)) {
$_SESSION['db_name'] = $_POST['table'];
}
$db_name = (!empty($_SESSION['db_name']) && in_array($_SESSION['db_name'], $allowed_bases)) ? $_SESSION['db_name'] : 'Base_1'; |
Partager