giorno settimanamesegiorno

Sono passati 79 giorni dall'inizio dell'anno che corrispondono a 12 settimane

PASQUA, voglia o non voglia non fu mai senza foglia.



* 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: -4- Gestione completa (o quasi) del DB: Creazione di una tabella  (Letto 1894 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
Creazione di una tabella
Per questa operazione uso due files:
* crea_tables.php
* crea_tables_crea.php


Questo il codice del file crea_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>Creazione di una tabella</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>Creazione di una nuova tabella</h1>
    <h2>creazione di una nuova tabella</h2>
    <p>Da questa pagina è possibile creare una tabella se questa non esiste</p>
<?php
include ("res/config_db.php");
include (
"res/functions.php");
$Query "SHOW TABLES FROM $DBName";
$all_tables show_tables($Query);
if (
in_array($table$all_tables)) {
    echo 
"La tabella " $table " esiste<br />\n";
    echo 
"Non necessaria la sua creazione<br />\n";
} else {
    echo 
"La tabella " $table " non esiste<br />\n";
    echo 
"<a href=\"crea_tables_crea.php?tabella=".$table."\">Per creare la tabella " $table "</a><br />\n";
}
?>

    </div>
    <div id="footer">
<?php
include ("res/link.php");
?>

    </div>
</div>
</body>
</html>

In questo file non si nota nulla di particolare, ma diamo lo stesso alcune note:

La funzione PHP include ()
Si parte con l'inclusione di due files che contengono alcune variabili comuni a tutto il settore (il primo file incluso) ed alcune funzioni a cui faremo spesso riferimento (il secondo file incluso):
Codice: Non sei autorizzato a vedere i links. Registrati o Login
include ("res/config_db.php");
include ("res/functions.php");

La funzione personale show_tables()
Subito dopo notiamo la prima Query con la quale adremo ad interrogare la nostra funzione personale, show_tables().
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$Query = "SHOW TABLES FROM $DBName";
$all_tables = show_tables($Query);

Questa la funzione creata per leggere le tabelle nel nostro DB:
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;
}
?>

La query SHOW TABLES FROM $DBName fa leggere tutte le tabelle presenti nel Data Base attivo
Nella funzione show_tables() le tabelle, se trovate, vengono poste in una matrice e restituite alla pagina richiedente.
L'esistenza della tabella viene accertata usando la funzione PHP in_array() usando l'istruzione condizionale:
Codice: Non sei autorizzato a vedere i links. Registrati o Login
if (in_array($table, $all_tables)) {
................
} else {
................
}

Se la tabella esiste viene visualizzato il messaggio "La tabella esiste", altrimenti viene mostrato un link che porterà alla seconda pagina che provvederà alla sua creazione.


Questo il codice del file crea_tables_crea.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>Creazione di una tabella</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>Creazione di una nuova tabella</h1>
    <h2>creazione di una nuova tabella</h2>
    <p>In questo proveremo a creare una tabella se questa non esiste</p>
<?php
include ("res/config_db.php");
include (
"res/functions.php");
$tabella $_REQUEST['tabella'];
$Query "SHOW TABLES FROM $DBName";
$all_tables show_tables($Query);
if (
in_array($table$all_tables)) {
    echo 
"La tabella " $table " esiste<br />\n";
    echo 
"Non necessaria la sua creazione<br />\n";
} else {
    echo 
"La tabella " $table " non esiste<br />\n";
    echo 
"Creazione della tabella " $tabella "<br />\n";
//    $Query .= " (id mediumint unsigned NOT NULL auto_increment, ";
    
$Query "CREATE TABLE " $tabella;
    
$Query .= " (id INT(10) NOT NULL AUTO_INCREMENT, ";
    
$Query .= implode(", "$tipi_campi);
    
$Query .= ", PRIMARY KEY (id)) ENGINE = MyISAM";
    echo 
"La query<br />\n" $Query "<br /><br />\n";
    if (
execute_query($Query)) {
        echo 
"La tabella è stata creata con successo<br />\n";
    } else {
        echo 
"Si sono verificati dei problemi nella procedura<br />\n";
    }
}

?>

    </div>
    <div id="footer">
<?php
include ("res/link.php");
?>

    </div>
</div>
</body>
</html>

Anche qui pochissime note in quanto il codice non è eccessivamente complesso.

La funzione PHP include ()
Si parte con la solita inclusione dei files comuni
Codice: Non sei autorizzato a vedere i links. Registrati o Login
include ("res/config_db.php");
include ("res/functions.php");

La funzione personaòe show_tables()
Quindi si controlla se la tabella esiste tramite la mia funzione 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;
}
?>


Se tutto procede come previsto il restante codice viene scritto nella else della if.

Questo controllo si rende necessario in questa fase solo per evitare il tentativo di creare nuovamente la tabella che causerebbe un errore se si fa refresh sulla pagina.
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$Query = "SHOW TABLES FROM $DBName";
$all_tables = show_tables($Query);
if (in_array($table, $all_tables)) {
...................
} else {
...............
}

Creazione della Query per creare la tabella
Per le Query io uso scriverle partendo dalle matrici.

Per questo nel file config_db.php ho messo questa matrice:
Codice: Non sei autorizzato a vedere i links. Registrati o Login
<?php
$tipi_campi 
= array (
    
"cognome varchar(100)",
    
"nome varchar(100)",
    
"nato DATE NOT NULL DEFAULT '0000-00-00'",
    
"indirizzo varchar(100)",
    
"cap varchar(10)",
    
"citta varchar(100)",
    
"prov varchar(10)",
    
"tel1 varchar(20)",
    
"tel2 varchar(20)",
    
"tel3 varchar(100)"
);
/*
    ASSEGNAZIONE DEI TIPI DI DATI AI VARI CAMPI:
    in questo caso abbiamo assegnato a tutti i campi 
    il tipo varchar(xxx) di lunghezza variabile a seconda 
    del tipo di dati che che ci aspettiamo 
    solo il campo "nato" ha un tipo DATE
    nel formato '0000-00-00'
*/
?>


Nella pagina dove mi serve agisco in questo modo:

creo la prima e la seconda parte della Query concatenando nella variabile $Query i primi due segmenti di quella che deve essere la stringa finale:
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$Query = "CREATE TABLE " . $tabella;
$Query .= " (id INT(10) NOT NULL AUTO_INCREMENT, ";

sempre nella stessa variabile, $Query, concateno il terzo segmento della stringa usando la funzione PHP implode() sulla matrice $tipi_campi usando la virgola ed uno spazio come caratteri separatori:
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$Query .= implode(", ", $tipi_campi);

termino concatenando nella variabile $Query l'ultimo segmento di stringa:
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$Query .= ", PRIMARY KEY (id)) ENGINE = MyISAM";
Alla fine ottengo la Query desiderata:

Codice: Non sei autorizzato a vedere i links. Registrati o Login
CREATE TABLE rubrica (id INT(10) NOT NULL AUTO_INCREMENT, cognome varchar(100), nome varchar(100), nato DATE NOT NULL DEFAULT '0000-00-00', indirizzo varchar(100), cap varchar(10), citta varchar(100), prov varchar(10), tel1 varchar(20), tel2 varchar(20), tel3 varchar(100), PRIMARY KEY (id)) ENGINE = MyISAM
Funzione personale execute_query()
Ottenuta la Query finale possiamo far lavorare il DB. Chiamo in causa la mia funzione personale che non ritorna alcun valore.
Codice: Non sei autorizzato a vedere i links. Registrati o Login
if (execute_query($Query)) {
..................
} else {
..............
}

Questa la funzione chiamata:
Codice: Non sei autorizzato a vedere i links. Registrati o Login
<?php
function execute_query($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;
    }
    
mysql_close ($link);
    return 
TRUE;
}
?>



Queste le due pagine che servono per creare una tabella.
La prossima volta vedremo la procedura, altrettanto semplice per eliminare una tabella

Ciao e buon lavoro.
« Ultima modifica: Dicembre 05, 2010, 11:24:51 da micdas »
E' stupido pensare di non aver bisogno degli altri