giorno settimanamesegiorno

Sono passati 356 giorni dall'inizio dell'anno che corrispondono a 51 settimane

Saremo tutti onesti saremo tutti buoni dicono i manifesti in tempo di elezioni



* Chattina

Aggiorna Storia
  • mar: :resistere:
    Febbraio 15, 2022, 19:44:48
  • mar: Non mi ricordavo di essere un global moderator wauuuu Ok Prof ti lascio restaurare in pace!
    Febbraio 15, 2022, 19:43:56
  • mar: :Cartelli70:
    Febbraio 15, 2022, 19:41:14
  • mar: ad cazzum pure qui?
    Febbraio 15, 2022, 19:41:02
  • mar: ciaoooo sono in perlistrazione
    Febbraio 15, 2022, 19:40:44
  • mar: :okkey:
    Febbraio 15, 2022, 19:40:20
  • Loretta/Nina: ciao a tutti
    Ottobre 04, 2021, 19:23:02
  • Loretta/Nina: :tuffarsi:
    Settembre 21, 2021, 07:08:03
  • Loretta/Nina: Buon autunno a tutti
    Settembre 21, 2021, 07:01:35
  • nuvolotta: avventure testuali
    Luglio 06, 2020, 23:26:08
  • _jan_: ...gli ultimo però....!!
    Gennaio 14, 2019, 14:45:09
  • _jan_: vedi gli ultimi post in fondo.
    Novembre 24, 2018, 19:10:00
  • mar: Trovato :Amm9:
    Novembre 24, 2018, 18:57:51
  • mar: Chi cerca trova non vi trovo! :Cartelli2:
    Novembre 24, 2018, 18:57:05
  • mar: Vado a vedere le cartoline!
    Novembre 24, 2018, 18:52:38
  • mar: :Amore145:
    Novembre 24, 2018, 18:52:21
  • mar: :Amore178:
    Novembre 24, 2018, 18:52:07
  • _jan_: Welcome Visitor.  :Party133:
    Novembre 15, 2018, 10:03:24
  • Loretta/Nina: Benvenuto ligi  :Cartelli37:
    Ottobre 09, 2018, 13:19:25
  • nuvolotta: Cucù...  :Amore20:
    Settembre 16, 2018, 01:16:47
  • Loretta/Nina: :Party133:
    Settembre 01, 2018, 17:05:30
  • _jan_: Ciao ai visitors!!
    Settembre 01, 2018, 17:02:31
  • Loretta/Nina: :fischio: :979:
    Agosto 28, 2018, 16:20:48
  • ketty: ah beh, meno male. ora il tempo e' un po' brutto
    Agosto 26, 2018, 13:27:36
  • _jan_: No, no, soqquà. Ci passo ma....... non c'è mai nessuno. Ammiro Nuvolotta, solitaria e presente.
    Agosto 25, 2018, 10:34:41
  • ketty: ma Jan è andato in vacanza? :Cartelli70:
    Agosto 24, 2018, 20:51:59
  • ketty: ciao a tutti.
    Agosto 24, 2018, 20:50:12
  • nuvolotta: :faccina_fiore: ciao ragazzioli/ole...
    Agosto 19, 2018, 23:03:49
  • Loretta/Nina: :ciao: :Party133:
    Agosto 19, 2018, 20:24:28
  • _jan_: :Felici13:
    Agosto 04, 2018, 15:30:40
  • nuvolotta: Ferie... già fatte....
    Agosto 04, 2018, 09:54:58
  • _jan_: Auguri di buon onomastico a tutti gli Alfonso....
    Agosto 01, 2018, 11:10:21
  • _jan_: chiusp per ferie?
    Luglio 30, 2018, 19:50:58
  • _jan_: Buon onomastico a Donatella Seconda........ e la prima? :Shok145:
    Luglio 30, 2018, 06:59:38
  • _jan_: Buon onomastico a tutte le Marta.  :Amore20:
    Luglio 29, 2018, 07:44:31
  • _jan_: Ci sono altre nuove iscritte viste il 26 luglio 2018..... (mica saranno monache)....  :approva:
    Luglio 26, 2018, 18:39:04
  • _jan_: Oggi, 26 luglio 2018, abbiamo una nuova iscritta "Francesca".....Benvenuta Francesca.  :Party133:
    Luglio 26, 2018, 15:49:24
  • _jan_: Buon onomastico anche a tutte le Anna!!! .....
    Luglio 26, 2018, 10:30:21
  • _jan_: Auguri di Buon Onomastico a TUO..... (ogni giorno, credo)..... :sm269:
    Luglio 26, 2018, 10:28:52
  • ketty: ma.... quando è il tuo?
    Luglio 25, 2018, 19:52:19

* Emoticon aggiuntive e link al portale


Autore Topic: -6- Gestione completa (o quasi) del DB: Elenco delle tabelle  (Letto 3505 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline micdas

  • Administrator
  • Hero Member
  • *****
  • Post: 848
  • Sesso: Maschio
    • sito su Excel ed il suo vba
-6- Gestione completa (o quasi) del DB: Elenco delle tabelle
« il: Dicembre 11, 2010, 22:28:43 »
Ottenere l'elenco delle tabelle dal DB
Questa 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:
Codice: Non sei autorizzato a vedere i links. Registrati o Login
<!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>&nbsp;</h1>
</div>
<div id="navigation">&nbsp;</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
Codice: Non sei autorizzato a vedere i links. Registrati o Login
include ("res/config_db.php");
include ("res/functions.php");

Lettura delle tabelle contenute nel DB e rilevamento del loro numero
Per far questo istruiamo la Query usando l'istruzione MYsql SHOW TABLES
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$Query = "SHOW TABLES FROM $DBName";
$all_tables = show_tables($Query);
$num_tab = count($all_tables);

Quindi andiano alla mia funzione personale show_tables()
Codice: Non sei autorizzato a vedere i links. Registrati o Login
<?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 trovate
Verificata la presenza di tabelle nel DB si passa nel controllare se queste tabelle hanno dei record interrogando la mia funzione personale num_record()
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$Query = "SELECT * FROM ".$all_tables[$i];
$num_rec = num_record($Query);

La mia funzione:
Codice: Non sei autorizzato a vedere i links. Registrati o Login
<?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 trovate
Anche in questo caso ricorro ad una mia funzione personale per la lettura dei campi. Nella matrice $fields vengono memorizzati i campi restituiti dalla funzione
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$fields = mostra_campi($all_tables[$i]);
e questa la relativa funzione:
Codice: Non sei autorizzato a vedere i links. Registrati o Login
<?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    :ciao:
E' stupido pensare di non aver bisogno degli altri

Offline HellDevil

  • Global Moderator
  • Full Member
  • ***
  • Post: 106
  • Sesso: Maschio
Re:-6- Gestione completa (o quasi) del DB: Elenco delle tabelle
« Risposta #1 il: Dicembre 12, 2010, 12:31:15 »
Ciao mic  :Party133:,
giusto per completezza, dato che non ti servono tutti i record nella funzione num_record() ma solo il loro numero, anzichè fare una "select * from table" e poi usare la funzione mysql_num_rows() di php puoi fare semplicemente una count sulla select così: "select count(*) from table".
In questo modo hai due vantaggi, usi una funzione in meno (anche se la sostituiamo con la mysql_fetch_row ma sono due funzioni diverse, una solo di visualizzazione e un'altra di elaborazione dei dati) quindi minor tempo di elaborazione (che su sistemi molto lenti fa la differenza), e non carichi in memoria un recordset che potrebbe essere anche molto grande (molto spesso si lavora su tabelle con milioni di record) ma hai di ritorno un solo record con un solo valore, possiamo quindi modificare la tua funzione in questo modo:
Codice: Non sei autorizzato a vedere i links. Registrati o Login
<?php
$Query 
"SELECT COUNT(*) FROM ".$all_tables[$i];
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_fetch_row($result);
    
mysql_close ($link);
    return 
$num_rec[0];
}
?>


Buona domenica a tutti  :Cartelli37:
Tutti sanno che una cosa é impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa

Offline micdas

  • Administrator
  • Hero Member
  • *****
  • Post: 848
  • Sesso: Maschio
    • sito su Excel ed il suo vba
Re:-6- Gestione completa (o quasi) del DB: Elenco delle tabelle
« Risposta #2 il: Dicembre 12, 2010, 22:13:59 »
Ti ringrazio, Devil
effettivamente questa Query è senz'altro meglio della mia è più veloce. Quanto prima la cambierò nella funzione

Intanto vado avanti con le mie prove   :n045:

E' stupido pensare di non aver bisogno degli altri