LORETTA B. nel-web forum

Linguaggi di programmazione => Php e MySql (data base) => Topic aperto da: micdas - Dicembre 05, 2010, 13:52:06

Titolo: -5- Gestione completa (o quasi) del DB: Eliminare una tabella
Inserito da: micdas - Dicembre 05, 2010, 13:52:06
Eliminare una tabella
Dopo la creazione della tabella è ovvio che dovremmo avere la possibilità di eliminarla.
Anche in questo caso useremo due files:
* cancella_tabella.php
* cancella_tabella_canc.php
Il primo mostra lo stato della tabella (esistente ed eventualmente quanti record contiene
Il secondo esegue l'operazione di eliminazione


Come il solito il primo file (cancella_tabella.php) verifica l'esistenza della tabella ed eventualmente ne mostra alcuni contenuti.
Questo il codice del file cancella_tabella.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>Eliminazione della tabella</h1>
<h2>Inizia la procedura di eliminazione della tabella</h2>
    <p>La tabella verrà eliminata se 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)) {
$Query "SELECT * FROM ".$table;
$num_rec num_record($Query);
if ($num_rec != 0) {
echo $num_rec " record per la tabella " .$table"<br />\n";
echo "Eliminando la tabella i dati andranno persi<br />\n";
} else {
echo "Nessun record nella tabella ".$table."<br />\n";
}
echo "<a href=\"cancella_tabella_canc.php?tabella=".$table."\">elimina la tabella</a><br />\n";
} else {
echo "La tabella " $table " non esiste ne DB<br />\n";
echo "Impossibile la sua eliminazione<br />\n";
}
?>

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

    </div>
</div>
</body>
</html>
In questo file notiamo, più o meno le stesse caratteristiche del primo file mostrato per la creazione della tabella (crea_tables.php).
Quindi passiamo al secondo file che esegue l'operazione


Questo il codice del file cancella_tabella_canc.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");
$tabella $_REQUEST['tabella'];
$Query "SHOW TABLES FROM $DBName";
$all_tables show_tables($Query);
if (
in_array($tabella$all_tables)) {
echo "Cancellazione della tabella " $tabella "<br />\n";
$Query "DROP TABLE " $tabella;
echo "La query:<br />" $Query "<br />";
if (execute_query($Query)) {
echo "La tabella " $table " è stata cancellata correttamente<br />";
} else {
echo "Non è stato possibile cancellare la tabella " $table "<br />";
}
} else {
echo "La tabella " $table " non esiste ne DB<br />\n";
echo "Impossibile la sua eliminazione<br />\n";
}
?>

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

    </div>
</div>
</body>
</html>
Le note per questa pagina.
Inclusione dei soliti files esterni contenenti i dati e le funzioni usati nella gestione
Codice: Non sei autorizzato a vedere i links. Registrati o Login
include ("res/config_db.php");
include ("res/functions.php");

Eseguiamo un ulteriore controllo nel DB usando la mia funzione personale show_tables() per verificare che la tabella esista. Questo controllo ci permetterà di salvaguardarci dall'effetto di un eventuale refresh eseguito sulla pagina dopo l'eliminazione della tabella. Cercando di eliminare una tabella che non esiste causerebbe un errore nella procedura di cancellazione.
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 {
..................
}

La procedura di eliminazione verrà chiamata con la seguente Query invocando la mia funzione personale execute_query() se la tabella esiste.
Codice: Non sei autorizzato a vedere i links. Registrati o Login
$Query = "DROP TABLE " . $tabella;
e questa è la mia funzione
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;
}
?>


Penso che questo, per ora, possa bastare...Alla prossima

 :n031: