giorno settimanamesegiorno

Sono passati 289 giorni dall'inizio dell'anno che corrispondono a 42 settimane

Gatti e bambini - più belli da piccini



* Chattina

Aggiorna Storia
  • mar: Passo per un saluto, so che ci siete sempre tutti da qualsiasi postazione e io da qui vi abbraccio forte! :grazieJ:
    Dicembre 21, 2025, 13:03:46
  • mar: Che bella la dedica per Gianni mi ha commosso,è pieno di speranza il tuo messaggio prof! :abbraccio:
    Dicembre 01, 2025, 19:53:23
  • mar: Buona sera piccini vi saluto da qua!
    Dicembre 01, 2025, 19:51:50
  • mar: :Amore8:
    Novembre 13, 2025, 17:35:20
  • mar: Vi voglio beneeeeee per sempre!:Amore8:
    Novembre 13, 2025, 17:34:06
  • mar: Uffa pero' il Natale da bambini e' cosi' bello, da adulti ti spessa il cuore! :n044:
    Novembre 12, 2025, 13:39:23
  • mar: Mi mancate tanto  ma quando vengo qui ci siete ancora ed e' come se il tempo non fosse passato! :Amore8:
    Novembre 12, 2025, 13:36:44
  • mar: E ciao piccola Ketty :baci_baci:
    Novembre 12, 2025, 13:35:03
  • mar: Mi piace passare di qui perche' qui ci siete ancora tutti vero? Ciao Gianni lo so che mi leggi e ciao Louise! Vi voglio sempre bene! :abbraccio:
    Novembre 12, 2025, 13:33:44
  • mar: :tuffarsi:
    Novembre 12, 2025, 09:54:11
  • mar: :ciao:
    Novembre 12, 2025, 09:53:15
  • mar: Buon giorno se qualcuno passa vi mando i baci dalla bassa!:tuffarsi:
    Novembre 12, 2025, 09:52:30
  • mar: Ora vado a nanna,ho anche aggiornato il profilo!Buona notte piccini :ciao:
    Ottobre 27, 2025, 21:29:54
  • mar: Mi sono rimaste aperte tutte le emoticon non so come chiuderle!
    Ottobre 27, 2025, 21:25:05
  • mar: Buona notte anche da qui...tra me e me! :baci_baci: :abbraccio:
    Ottobre 27, 2025, 21:23:34
  • mar: Ma ci ero g'a passata nel 2022! Mo' non lo mollo anche se ci passo solo io!
    Ottobre 27, 2025, 19:08:34
  • mar: E' bellissimo ripassare di qui!
    Ottobre 27, 2025, 19:05:54
  • 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

* Emoticon aggiuntive e link al portale


Autore Topic: -6- Gestione completa (o quasi) del DB: Elenco delle tabelle  (Letto 6847 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