Connaitre la taille de toutes mes base de données (via table_schema) [Résolu]

Messages postés
140
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 août 2012
- - Dernière réponse : cs_hdh
Messages postés
140
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 août 2012
- 8 oct. 2010 à 11:52
Bonjour
Je piétine sur un script pour calculer le volume occupé par mes bases de données sur mon hébergement.
J'ai en effet plusieurs bases de données contenant plusieurs tables.

Auriez vous des pistes pour corriger mon script ??

en effet dans phpmyadmin quand je tape cette requete cela fonctionne impec
SELECT table_schema, round(sum(data_length+index_length)/1024/1024,4) AS 'Size' FROM information_schema.tables GROUP BY table_schema

mais dès que je l'insère dans ma page php je n'ai qu'un retour sur ma db "premierebase"... c'est pas une surprise car je demande la connexion "premierebase"
mysql_select_db( "premierebase" )        or die ( "Impossible d'ouvrir : ".mysql_error() );

Ma question est : comment autoriser mon script à se connecter à toutes les bases ? (sachant que mon user a bien les droits pour accéder à toutes les bases)

D'avance grand merci pour votre aide !!

si vous avez un script tout fait cela me convient tout autant, lol

H, penaud



le temps n'épargne pas ce que l'ont fait sans lui.. le php non plus
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
140
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 août 2012
3
Merci
non , c'est je regrette c'est moi le roi de la connerie
m'étais trompé de serveur ca marche impec.
Voilà donc le code qui fonctionne tiptop (avec calcul total en Mo utilisé)
merci pour votre aide precieuse :-)

$user     = "uuu";
$pass     = "uuuuu";
$link     =  mysql_connect( "uuu", $user, $pass );
 
if ( ! $link )                die( "Impossible de se connecter à MySQL".mysql_error() );
mysql_select_db( $db )        or die ( "Impossible d'ouvrir : ".mysql_error() );


$query = mysql_query("SELECT table_schema, round(sum(data_length+index_length)/1024/1024,4) AS 'Size' FROM information_schema.tables GROUP BY table_schema ;",$link);
$nbTotal = mysql_num_rows($query);
print "<hr>".$nbTotal."<hr>";

$i=0;
WHILE($nbTotal!=$i)
    {
    $table_schema     = mysql_result($query,$i,"table_schema"); 
    $Size     = mysql_result($query,$i,"Size"); 
    $content .="<tr><td>".$table_schema."</td><td>".$Size."</td></tr>";
    $taille = $Size + $taille;
    $i++;
    }


echo "\".$content.\"----
total, ".$taille."
";
?>







le temps n'épargne pas ce que l'ont fait sans lui.. le php non plus

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 131 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_hdh
Messages postés
2492
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
11
0
Merci
Salut,

Je ne vois pas d'autre solution que de sélectionner chaque base une par une et exécuter la même requête à chaque fois.
Une boucle foreach sur un tableau contenant les noms de chaque base devrait faire l'affaire, avec une variable $total qui s'incrémente à chaque fois...

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
Commenter la réponse de neigedhiver
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
Salut,

Je ne vois pas pourquoi ça ne fonctionnerait pas, ... et je ne vois pas non plus pourquoi du fais un
mysql_select_db( "premierebase" )
au lieu d'un :
mysql_select_db('information_schema')

????

Cordialement,

Kohntark -
Commenter la réponse de kohntark
Messages postés
140
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
20 août 2012
0
Merci
Sniff... pas mieux... chkomprendpas

$db     = "information_schema";
$user     = "aaa";
$pass     = "aaaaaa";
$link     =  mysql_connect( "localhost", $user, $pass );
 
if ( ! $link )      die( "Impossible de se connecter à MySQL".mysql_error() );
mysql_select_db( $db )  or die ( "Impossible d'ouvrir : ".mysql_error() );


$query = mysql_query("SELECT table_schema, round(sum(data_length+index_length)/1024/1024,4) AS 'Size' FROM information_schema.tables GROUP BY table_schema ;",$link);
$nbTotal = mysql_num_rows($query);
print "<hr>".$nbTotal."<hr>";

$i=0;
WHILE($nbTotal!=$i)
    {
    $table_schema     = mysql_result($query,$i,"table_schema"); 
    $Size     = mysql_result($query,$i,"Size"); 
    $content .="<tr><td>".$table_schema."</td><td>".$Size."</td></tr>";
    $i++;
    }


echo "".$content."
";
?>

... et vous ??

le temps n'épargne pas ce que l'ont fait sans lui.. le php non plus
Commenter la réponse de cs_hdh
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
21
0
Merci
Pour éviter de dire une énième connerie j'ai fait le test : ça fonctionne (en local)

Quel est le résultat exact du script ?
Une erreur ?
L'utilisateur est il le même que celui que tu utilises avec phpMyAdmin ?


Cordialement,


Kohntark -
Commenter la réponse de kohntark