Ho... on part de loin : pas de soucis, on va y aller une étape à la fois.
-1- Tu dois commencer par établir une connexion à ta base;
-2- Tu dois exécuter la requête "SHOW TABLES" et récupérer le résultat;
-3- Tu dois initialiser une boucle while() sur ce résultat pour renommer la table trouvée dans la ligne à chaque tour de la boucle.
-4- ... ben en fait il y a pas de 4, c'est fini.
Il reste donc à préciser comment faire tout ça. PHP Pour les nuls n'est pas ma référence, on va y aller autrement, voici le code :
<?php
/**
* Renommage des tables d'un shéma
*/
$serveur = "localhost"; // nom du serveur
$schema = ""; // Nom de la base de données
$user = ""; // Nom de l'utilisateur pour la connexion
$mdp = ""; // Mot de passe de l'utilisateur
$nouveau_prefixe = "prs2"; // Nouveau préfixe à appliquer aux tables
$colonne_result = "Tables_in_". $schema;
/**
* On établit la connexion
*/
$cnx = mysql_connect($serveur, $user, $mdp);
mysql_select_db($schema, $cnx);
/**
* On récupère la liste des tables
*/
$sql1 = "SHOW TABLES";
$exec = mysql_query($sql1);
/**
* Maintenant, on va boucler pour renommer chaque table avec un nouveau préfixe.
*/
while(false !== ($table = mysql_fetch_assoc($exec)))
{
$nom_table = $table[$colonne_result];
/*
echo("<pre>Nom original :\n");
var_dump($nom_table);
echo("</pre>\n");
*/
/**
* Là, on va isoler le préfixe en cours
*/
$aInfosNom = explode("_", $nom_table);
/**
* On renomme le préfixe
*/
if(count($aInfosNom) > 1)
{
$aInfosNom[0] = $nouveau_prefixe;
}
/**
* On reconstruit le nom de la table
*/
$nouveau_nom_table = implode("_", $aInfosNom);
/*
echo("<pre>Nouveau nom de la table :\n");
var_dump($nouveau_nom_table);
echo("</pre>\n");
*/
/**
* On crée la requête pour renommer la table
*/
$sql = "RENAME TABLE `". $nom_table ."` TO `". $nouveau_nom_table ."`";
/*
echo("<pre>Requête générée :\n");
var_dump($sql);
echo("</pre>\n");
*/
$exec2 = mysql_query($sql, $cnx);
}
/**
* Terminé
*/
N'oublie pas de remplacer les valeurs pour les variables appropriées. J'ai largement commenté ce code, tu devrais arriver à suivre sans difficultés.
Je l'ai testé et voici ce que ça fait. J'ai une table «test» sur mon serveur avec les tables suivantes :
mysql> SHOW TABLES;
+-------------------+
| Tables_in_test |
+-------------------+
| test_compta |
| test_departement |
| test_membres_mem |
| test_prefectures |
| test_regions |
| test_test |
| test_utilisateurs |
+-------------------+
7 rows in set (0.00 sec)
Après utilisation de ce code (environ 0.5 seconde) j'ai obtenu ceci :
mysql> SHOW TABLES;
+-------------------+
| Tables_in_test |
+-------------------+
| prs2_compta |
| prs2_departement |
| prs2_membres_mem |
| prs2_prefectures |
| prs2_regions |
| prs2_test |
| prs2_utilisateurs |
+-------------------+
7 rows in set (0.00 sec)
Note : si tu veux voir ce qui se passe, tu peux décommenter les «var_dump» que j'ai mis dans le code. Tu noteras que si une table n'a pas de préfixe et ne comporte qu'un mot sans «_», elle ne sera pas renommée.
Enjoy! ;-)
______________________________________________________________
Une question bien formulée, c'est un problème bien compris : ça représente déjà les 3/4 de la réponse ;)