Allora sto cercando di creare un database e di crearvi al suo interno un paio di tabelle, ma mi blocco gia alla prima tabella con il seguente errore 1049 : Unknown database 'nomelistino'
Cerco di spiegarmi meglio e scusate per il codice schifoso ma sto solo abbozzando delle idee
ho una pagina admin.php che si trova in una cartella admin, in radice ho il mio solito index.php
file admin.php
<html>
<head><title>Pagina Amministrazione Listino</title></head>
<body>
<?php
$nomedatabase = "listino";
include "../common_db.inc"; // file che dopo spiego
error_reporting(0);
$link_id = db_connect($nomedatabase); // la funzione presente nel file common_db.inc
// ora abbiamo 3 possibilità, la funzione restituisce 2 se non esiste il database con il nome riportato nella funzione
// la funzione restituisce 1 se non è stato passato nessun valore alla funzione
// la funzione restituisce 0 se i parametri di connessione all'host sono sbagliati
// altrimenti restituisce un puntatore valido al database
if ($link_id <= '1') die(sql_error());
else if ($link_id == '2') {
echo "meglio creare il database '$nomedatabase' prima di lavorarci, non credi ?
";
// da qui procederemo richiamando la funzione creadatabase presente in common_db.inc
$databasecreato = creadatabase($nomedatabase);
}else{
echo "Connesso con successo al database in $dbhost. $link_id
";
}
?>
</body>
</html>
File common_db.inc
<?php
// Script che si occupa di controllare o meno l'esistenza dei database citati in basso
$dbhost='localhost'; // nome dell'host dove si trova il nostro database SQL
$dbusername='root'; // nome utente accesso database
$dbuserpassword='password'; // password accesso database
// $default_dbname= 'mysql'; // nome standard per il database in caso non ne esistano altri
//Inizializziamo le variabili di segnalazione errore
$MYSQL_ERRNO = '';
$MYSQL_ERROR = '';
// per prima cosa inizializziamo la nostra funzione per la connessione al server che ci fornirà eventualmente
// l'errore che non ha permesso la sua corretta inizializzazione
function db_connect($dbname){
global $dbhost, $dbusername, $dbuserpassword, $default_dbname; // dichiariamo le variabili globali
global $MYSQL_ERRNO, $MYSQL_ERROR;
$link_id = mysql_connect($dbhost, $dbusername,$dbuserpassword); // creiamo una connessione con il database
if (!$link_id){
$MYSQL_ERRNO = 0;
$MYSQL_ERROR = "Connessione fallita all'host $dbhost."; // viene visualizzato un errore impossibilità connettersi
//al database
return 0;
}
Else if(empty($dbname)){ //se il nome passato alla funzione è vuoto restituisce 1
$MYSQL_ERRNO = mysql_errno();
$MYSQL_ERROR = mysql_error();
return 1;
}
else if(!empty($dbname) && !mysql_select_db($dbname)) { // se il database non esiste restituisce 2
$MYSQL_ERRNO = mysql_errno();
$MYSQL_ERROR = mysql_error();
return 2;
}
else return $link_id; // altrimenti restituisce un puntatore
}
// funzione che restituisce l' errore relativo al database
function sql_error() {
global $MYSQL_ERRNO, $MYSQL_ERROR;
if(empty($MYSQL_ERRNO)){
$MYSQL_ERRNO = mysql_errno();
$MYSQL_ERROR = mysql_error(); // altro errore generico
}
if(empty($MYSQL_ERROR)){
$MYSQL_ERRNO = mysql_errno();
$MYSQL_ERROR = "Non hai specificato il nome del database !";
}
return "$MYSQL_ERRNO : $MYSQL_ERROR";
}
// funzione che si occupa di creare lo scheletro del database del listino
function creadatabase($dbname){
global $dbhost, $dbusername, $dbuserpassword, $default_dbname; // dichiariamo le variabili globali
// creazione tabella LISTINI
// INIZIO
$listini_tablename = 'listini'; // definizione nome tabella
$listini_table_def = "id_annomese MEDIUMINT(10) NOT NULL AUTO_INCREMENT, "; //definizione array valori
$listini_table_def .= "annomese VARCHAR(14) NOT NULL";
$listini_table_def .= "PRIMARY KEY (id_annomese)"; // nota che l'ultimo non ha la virgola finale
// FINE LISTINI
if(!mysql_query("CREATE DATABASE $dbname")) die (sql_error());
echo "Creato con successo nell' $dbhost il database $dbname
";
if(!mysql_select_db($dbname)) die (sql_error());
///////////////// QUI GENERA L'ERRORE //////////////////////////////////////////////////////////
if (!mysql_query("CREATE TABLE $listini_tablename ($listini_table_def)")) die (sql_error());
/////////////////////////////////////////////////////////////////////////////////////////////////////
echo "Creato con successo nell'database $dbname la tabella $listini_tablename
";
return 0;
}
?>
Se tolgo la voce AUTO_INCREMENT l'errore sparisce e la tabella viene creata correttamente, dove sbaglio ??? Non riesco a capirlo e ogni vostro suggerimento mi sarà utlissimo, grazie in anticipo.