Page 1 sur 1
Savoir le poids d'une table en PDO
Posté : 01 nov. 2014, 21:00
par eljeronimooo
Salut à tous

: )
Voilà mon problème, je fais le back-office de mon site et j'aimerai bien afficher la taille ou le poids (en mo ou autre.. ) de chaque table de ma base de donnée.
Je sais bien que le plus simple c'est d'aller dans phpmyadmin, mais j'aimerai vraiment avoir ces infos sur le site.
Alors si vous avez des idées en PDO ce serai vraiment cool

Re: Savoir le poids d'une table en PDO
Posté : 01 nov. 2014, 21:20
par moogli
salut,
Une petite demande à
google et le premier lien te fournit la solution =>
http://sql.sh/1999-mysql-taille-base-de-donnees
bonne lecture
@+
Re: Savoir le poids d'une table en PDO
Posté : 01 nov. 2014, 21:51
par eljeronimooo
Merci mais cette page ne correspond pas à ma demande. Je rappel je suis en PDO

Re: Savoir le poids d'une table en PDO
Posté : 01 nov. 2014, 22:25
par Nestecha
Je vois pas en quoi le fait d'être en PDO t'empêche d'afficher des requêtes SQL ?
Re: Savoir le poids d'une table en PDO
Posté : 01 nov. 2014, 22:45
par eljeronimooo
Oui c'est ce que je pensai aussi, mais là visiblement...
J'ai tester :
$G_bdd = new PDO('mysql:host='.$G_bdd_info['serveur'].';dbname='.$G_bdd_info['nom'].'', ''.$G_bdd_info['pseudo'].'', ''.$G_bdd_info['mdp'].'');
echo $G_bdd->query(" SELECT TABLE_NAME, CONCAT(ROUND(((DATA_LENGTH + INDEX_LENGTH - DATA_FREE) / 1024 / 1024), 2), 'Mo') AS TailleMo FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'base_v2' ");
Où base_v2 est le nom de ma base mais la valeur retournée est systématiquement 1.

J'en ai tester d'autre mais même résultat...
Re: Savoir le poids d'une table en PDO
Posté : 02 nov. 2014, 01:14
par xTG
Remontes les informations indépendamment dans un premier temps pour tenter de comprendre.
- DATA_LENGTH
- INDEX_LENGTH
- DATA_FREE
Re: Savoir le poids d'une table en PDO
Posté : 02 nov. 2014, 03:11
par moogli
Oui c'est ce que je pensai aussi, mais là visiblement...
J'ai tester :
$G_bdd = new PDO('mysql:host='.$G_bdd_info['serveur'].';dbname='.$G_bdd_info['nom'].'', ''.$G_bdd_info['pseudo'].'', ''.$G_bdd_info['mdp'].'');
echo $G_bdd->query(" SELECT TABLE_NAME, CONCAT(ROUND(((DATA_LENGTH + INDEX_LENGTH - DATA_FREE) / 1024 / 1024), 2), 'Mo') AS TailleMo FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'base_v2' ");
Où base_v2 est le nom de ma base mais la valeur retournée est systématiquement 1.

J'en ai tester d'autre mais même résultat...
peux être que si tu lisais un peu plus la doc avant de répondre tu aurais compris que ce que tu fait ne peux pas afficher le résultat ainsi.
La méthode
query retourne un objet
PDOStatement qui te fournira les données en itérant dessus.
tu as un exemple dans la doc de la fonction query.
Quand à la requête teste la avec un client sql avant de l'utiliser dans ton code. C'est le meilleur moyen d'être certain qu'elle fonctionne (ce qui est le cas de celle fournit par mon premier lien).
@+
Re: Savoir le poids d'une table en PDO
Posté : 02 nov. 2014, 10:55
par xTG
Je suis en train de me demander comment tu fais pour pas être encore plus fatigué que moi à 2h du mat' Moogli... =D>
Re: Savoir le poids d'une table en PDO
Posté : 02 nov. 2014, 11:41
par sirakawa
Surtout que le lien est extrêmement clair et facile à suivre:
Dans n'import quel script PHP tu teconnectes et tu sélectionnes la basede dolnnées vouluecomme ceci qu'il m'a fallu taper, ce qui a été le plus long
<?PHP
$mysqli = mysqli_init();
$mysqli->real_connect("localhost", "root", "", "corregidor");
$requete = "SELECT
table_schema AS NomBaseDeDonnees,
ROUND(SUM( data_length + index_length ) / 1024 / 1024, 2) AS BaseDonneesMo
FROM information_schema.TABLES
GROUP BY TABLE_SCHEMA;";
$resultat = $mysqli->query($requete);
while($obj = $resultat->fetch_object()){
$nombase = $obj->NomBaseDeDonnees;
$taille = $obj->BaseDonneesMo;
print "<br>Nom $nombase $taille";
}
?>
Re: [RESOLU] Savoir le poids d'une table en PDO
Posté : 06 mars 2015, 12:55
par eljeronimooo
Merci beaucoup : )