Ottenere l'elenco delle tabelle dal DBQuesta potrebbe sembrare una pagina di scarsa utilità.
Tuttavia non è così. Ogni tanto occorre avere un elenco completo delle tabelle, dei relativi campi, del numero dei record ivi inseriti. Potremmo anche avere la necessità di vedere la tipologia dei singoli campi, Ma questo lo vedremo in una pagina differente altrimenti dovremmo cambiare impostazione alla pagina per non avere confusione nell'outpu delle informazioni.
Questo è il contenuto del file
show_tables.php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Gestione cerca</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<link href="css/stile.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="container">
<div id="header">
<h1> </h1>
</div>
<div id="navigation"> </div>
<div id="content">
<h1>Elenco della tabelle presenti nel DB</h1>
<?php
include ("res/config_db.php");
include ("res/functions.php");
$Query = "SHOW TABLES FROM $DBName";
$all_tables = show_tables($Query);
$num_tab = count($all_tables);
if ($num_tab != 0) {
echo "<h2>" . $num_tab . " tabelle presenti nel DB in uso</h2>\n";
echo "<div align=\"center\">\n";
echo "<table class=\"table_1\">\n";
echo "<tr>\n";
echo "<th>Nome tabella</th>\n";
echo "<th>N. campi</th>\n";
echo "<th>campi</th>\n";
echo "<th>N. record</th>\n";
echo "</tr>\n";
for ($i = 0; $i < count($all_tables); $i++) {
echo "<tr>\n";
$Query = "SELECT * FROM ".$all_tables[$i];
$num_rec = num_record($Query);
$fields = mostra_campi($all_tables[$i]);
echo "<td>" . $all_tables[$i] . "</td>\n";
echo "<td>" . count($fields) . "</td>\n";
echo "<td>";
echo implode("<br />", $fields);
echo "</td>\n";
echo "<td>" . $num_rec . "</td>\n";
echo "</tr>\n";
}
echo "</table>\n";
echo "</div>\n";
} else {
echo "Nel DB in uso non c'è alcuna tabella<br />\n";
}
?>
</div>
<div id="footer">
<?php
include ("res/link.php");
?>
</div>
</div>
</body>
</html>
Alcune note a questa pagina
Inclusione di due files esterni contenenti sia i dati per la connessione che altre variabili di servizio ed alcune funzioni personali che verranno utilizzate nella pagina
include ("res/config_db.php");
include ("res/functions.php");
Lettura delle tabelle contenute nel DB e rilevamento del loro numeroPer far questo istruiamo la Query usando l'istruzione MYsql SHOW TABLES
$Query = "SHOW TABLES FROM $DBName";
$all_tables = show_tables($Query);
$num_tab = count($all_tables);
Quindi andiano alla mia funzione personale
show_tables()<?php
function show_tables($Query, $pref="") {
global $Host;
global $User;
global $Password;
global $DBName;
if (!$link = mysql_connect($Host, $User, $Password)) {
return FALSE;
}
if (!mysql_select_db($DBName, $link)) {
return FALSE;
}
$result = mysql_query($Query, $link);
if (!$result) {
return FALSE;
} else {
$tab = array();
while ($row = mysql_fetch_row($result)) {
$tab[] = $row[0];
}
}
mysql_close ($Link);
return $tab;
}
?>
Rilevamento dei record inseriti nelle tabelle trovateVerificata la presenza di tabelle nel DB si passa nel controllare se queste tabelle hanno dei record interrogando la mia funzione personale num_record()
$Query = "SELECT * FROM ".$all_tables[$i];
$num_rec = num_record($Query);
La mia funzione:
<?php
function num_record($query) {
global $Host;
global $User;
global $Password;
global $DBName;
if (!$link = mysql_connect($Host, $User, $Password)) {
return FALSE;
}
if (!mysql_select_db($DBName, $link)) {
return FALSE;
}
$result = mysql_query($query, $link);
if (!$result) {
return FALSE;
}
$num_rec = mysql_num_rows($result);
mysql_close ($link);
return $num_rec;
}
?>
Lettura dei campi di ciascuna delle tabelle trovateAnche in questo caso ricorro ad una mia funzione personale per la lettura dei campi. Nella matrice $fields vengono memorizzati i campi restituiti dalla funzione
$fields = mostra_campi($all_tables[$i]);
e questa la relativa funzione:
<?php
function mostra_campi($tabella) {
global $Host;
global $User;
global $Password;
global $DBName;
$Link = mysql_connect ($Host, $User, $Password);
$fields = mysql_list_fields($DBName, $tabella, $Link);
$columns = mysql_num_fields($fields);
for ($i = 0; $i < $columns; $i++) {
$field[] = mysql_field_name($fields, $i);
}
mysql_close ($Link);
return $field;
}
?>
E' tutto per ora.........
Alla prossima