Afficher des informations concernant les tables d'une base MySQL

Afficher des informations concernant les tables d'une base MySQL - PHP - Programmation

Marsh Posté le 28-04-2006 à 14:25:16    

Bonjour :)  
 
Je cherche à afficher un tableau avec une ligne par table SQL et dedans des infos telles que:
 

  • Nom de la table
  • Nombre d'enregistrements
  • Taille occupée par l'index et par les données


... Sauriez-vous comment faire ? :whistle:  
 
P.S: J'avais pensé à faire:

Code :
  1. if ($sql_tables = $MySQLi->query('SHOW TABLES'))
  2. {
  3.   $i = 0;
  4.   while($table = $sql_tables->fetch_row())
  5.   {
  6.     $data[$i] = array('name' => $table['name'],
  7.                        'rows' => $table['rows'],
  8.                        'Data_length' => $table['Data_length'],
  9.                        'Index_length' => $table['Index_length']
  10.                       );
  11.     $i++;
  12.   }
  13.   print_r($data);
  14. }

Mais ça ne marche pas :(


Message édité par MS-DOS_1991 le 28-04-2006 à 14:26:23

---------------
Viendez sur le Newbie-Project et essayez le Newbie-Directory (nouveau)
Reply

Marsh Posté le 28-04-2006 à 14:25:16   

Reply

Marsh Posté le 28-04-2006 à 15:34:37    

fetch_row, ce n'est pas fetch_array plutot ? car le row ne renvoit pas de nom met juste le numéro de la colone.


---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 28-04-2006 à 15:46:34    

Citation :

fetch_row, ce n'est pas fetch_array plutot ? car le row ne renvoit pas de nom met juste le numéro de la colone.

Exact en fait dans mon script j'ai essayé fetch_row et $table[0], $table[1], etc ET fetch_array/fetch_assoc et $table['name'], $table['rows'], etc
 
Ca ne marche toujours pas :( Plus exactement, seul le nom des tables s'affiche.


Message édité par MS-DOS_1991 le 28-04-2006 à 15:47:45

---------------
Viendez sur le Newbie-Project et essayez le Newbie-Directory (nouveau)
Reply

Marsh Posté le 28-04-2006 à 15:50:40    

SHOW TABLES ça renvoit juste la liste des tables dans une colone se nomant Tables_in_nomdelabase
c'est plutot un SHOW TABLE STATUS qu'il te faut non ?


---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 28-04-2006 à 15:58:09    

chaced a écrit :

SHOW TABLES ça renvoit juste la liste des tables dans une colone se nomant Tables_in_nomdelabase
c'est plutot un SHOW TABLE STATUS qu'il te faut non ?


D'accord, mais comment je peux l'utiliser :whistle:  
le script n'affiche rien si je fait $MySQLi->query('SHOW TABLE STATUS')


---------------
Viendez sur le Newbie-Project et essayez le Newbie-Directory (nouveau)
Reply

Marsh Posté le 28-04-2006 à 16:16:08    

a ton fetch array faut lui passer $sql_tables
 

Code :
  1. $link=mysql_connect('localhost', 'root', '') or die(mysql_error());
  2.       mysql_select_db('test',$link) or die(mysql_error());
  3. if ($sql_tables = mysql_query('SHOW TABLE STATUS'))
  4. {
  5.  while($table = mysql_fetch_array($sql_tables))
  6.  {
  7.   $data[] = array('name' => $table['Name'],
  8.   'rows' => $table['Rows'],
  9.   'Data_length' => $table['Data_length'],
  10.   'Index_length' => $table['Index_length']
  11.   );
  12.  }
  13.  print_r($data);
  14. }

Message cité 1 fois
Message édité par chaced le 28-04-2006 à 16:17:09

---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 28-04-2006 à 16:26:57    

chaced a écrit :

a ton fetch array faut lui passer $sql_tables


Non, car je code en POO avec MySQLimproved donc ce sont des méthodes qu'il faut utiliser :non:  
 
Ce que je ne comprend pas, c'est que j'ai déjà essayé ces codes, mais ça ne reconnait pas "SHOW TABLE STATUS" :cry:  :cry:


---------------
Viendez sur le Newbie-Project et essayez le Newbie-Directory (nouveau)
Reply

Marsh Posté le 28-04-2006 à 17:00:50    

mon code sous php4 (oui je sais) et MySql 4.1 fonctionne bien pourtant...


Message édité par chaced le 28-04-2006 à 17:01:18

---------------
CPU-Z | Timespy | Mes bd
Reply

Marsh Posté le 28-04-2006 à 17:04:38    

Si tu es en MYSQL 5, utilise plutôt la DB 'INFORMATION_SCHEMA'. Elle permet d'accéder à toutes les info via des SELECT

Reply

Marsh Posté le 28-04-2006 à 17:22:54    

smaragdus a écrit :

Si tu es en MYSQL 5, utilise plutôt la DB 'INFORMATION_SCHEMA'. Elle permet d'accéder à toutes les info via des SELECT


Merci [:flity] je n'avais jamais regardé cette base de près  [:flity]  
 
je vous tiens au courant ;)


---------------
Viendez sur le Newbie-Project et essayez le Newbie-Directory (nouveau)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed