creare una tabella da codice

samurai.sette

Utente Attivo
17 Dic 2015
235
6
18
Ciao a tutti.

Da come avete letto dal titolo della discussione, sto cercando di creare da codice una tabella. Mi spiego meglio: in un form ho diversi input text (5 per la precisione) che l'utente riempie; una volta finito clicca su un bottone e alcuni dati (4 per la precisione) verranno inseriti in una tabella da me creata. Allo stesso tempo deve essere creata una tabella che prende il nome di un input text (il quinto) e in questa tabella inserire il dato del quinto input text.

Come vedete non è nulla di particolare, ma non riesco a capire perché non mi crea la tabella. I dati dei primi 4 input text li inserisci senza problemi, ma la tabella non la crea e non mi genera nessun errore.
Codice:
<!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>
<meta content="it" http-equiv="Content-Language" />
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>SmartStructure</title>
<style type="text/css">
body {
    font-family: "Trebuchet MS";
    text-align: center;
    color: #666666;
}
#TESTATA {
    width: 1000px;
    margin-right: auto;
    margin-left: auto;
    font-size: 45px;
}
#CORPO {
    width: 380px;
    margin-right: auto;
    margin-left: auto;
    background-color: #F7F7F7;
}
</style>
</head>
<body>
<div id="TESTATA">
    SmartStructure</div>
<br />
    Inserisci i dati del nuovo utente
<br />
<br />
    <div id="CORPO">
    <br />
        <form method="post">
            Committente <input name="committente" type="text" style="width: 250px" />
            <br />
            <br />
            Username <input name="username" style="width: 250px" type="text" />
            <br />
            <br />
            Password <input name="password" style="width: 250px" type="text" />
            <br />
            <br />
            Email <input name="email" style="width: 300px" type="text" /><br />
            <br />
            Nome lavoro <input name="lavoro" style="width: 250px" type="text" />
            <br />
            <br />
            <input name="inserisci" style="width: 150px" type="submit" value="Inserisci nuovo utente" />
            <br />
            <br />
        </form>
    <?php
      if (isset ($_POST['inserisci']))
      {
      // definisco i dati per la connessione
      // nome di host
      $host = "localhost";
      // nome del database
      $db = "meco_monitoraggi";
      // username dell'utente in connessione
      $user = "root";
      // password dell'utente
      $password = "";
      // faccio la connessione
        $con = mysql_connect ("$host", "$user", "$password") or die ("Connessione al server fallita! ".mysql_error());
        $db = mysql_select_db ("$db", $con) or die ("Connessione al database meco_monitoraggi fallita! ". mysql_error());
      // leggo i valori degli input (text)
        $mandante = $_POST['committente'];
        $user = $_POST['username'];
        $pass = $_POST['password'];
        $mail = $_POST['email'];
        $work = $_POST['lavoro'];
      // inserisco i valori appena letti nella "tabella utenti" e il valore $work nella tabella "_lavori" del relativo database
        $inserisci = "INSERT INTO utenti (nome_committente,username,password,mail) VALUES ('$mandante', '$user', '$pass', '$mail')";
      // faccio la query
        $result = mysql_query($inserisci);
    // CREO LA TABELLA CHE CONTERRA' L'ELENCO DEI LAVORI DEL NUOVO UTENTE
      // definisco il nome della tabella contenente l'elenco dei lavori del nuovo utente
        $tabella = "$tabella = $mandante.("_").("lavori");";
      // creo la tabella che conterrà l'elenco dei lavori del nuovo utente
        $sql = "CREATE TABLE $tabella
        ( nome VARCHAR(20),
        cognome VARCHAR(20),
        telefono INT(10)
        )";
      // inserito l'utente faccio scrivere un messaggio di avvenuto inserimento o un messaggio di errore
        if ($result)
        {
          echo "Inserimento avvenuto con successo";
        }
        else
        {
          echo "Errore nell'inserimento del dati!";
        }
      }
    ?>
    </div>
</body>
</html>
Secondo voi dove sbaglio. Vi posto il codice che ho scritto. Ciao, grazie.
 
Ciao, la sintassi di questa riga è sbagliata
PHP:
$tabella = "$tabella = $mandante.("_").("lavori");";
controlla meglio gli apici
Non vedo l'esecuzione della query per questo non da errori, devi rimettere mysql_query() dopo $sql = "CREATE ....
 
Ciao Criric, grazie mille per la risposta. Ora funziona ma ti vorrei chiedere una cosa.
Io ho scritto in questo modo:
Codice:
$tabella = "$mandante"."_"."lavori";

$sql = "CREATE TABLE $tabella
  ( id VARCHAR(3),
  lavori VARCHAR(250)
  )";
       
mysql_query($sql);

Se alla voce "id" volessi aggiungere la chiave primaria e l'auto incremento, avevo pensato di scrivere in questo modo:

Codice:
$tabella = "$mandante"."_"."lavori";

$sql = "CREATE TABLE $tabella
  ( id VARCHAR(3) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  lavori VARCHAR(250)
  )";
       
mysql_query($sql);

Facendo in questo modo, però, non mi crea la tabella. Dove pensi che sto sbagliando?
Ciao, grazie mille.
 
non sono un esperto di sql ma credo che le chiavi si dichiarino alla fine dei campi e in più un campo autoincrement cdovrebbe essere un intero, prova cosi
Codice:
CREATE TABLE  $tabella (
  id int(11) AUTO_INCREMENT,
  lavori VARCHAR(250),
  PRIMARY KEY (`id`)
  )
eventualmente usa mysql_rror per trovare gli errori
PHP:
if(!mysql_query($sql) {
    echo  mysql_error();
}
ps:
l'estensione mysql è deprecata ed è stata rimossa dalle ulttime versioni di php ti conviene studiarti la mysqli
 
Ciao Criric. Sono riuscito a risolvere.
Ho scritto in questo modo:
Codice:
$sql = "CREATE TABLE $tabella
  ( id INT(3) AUTO_INCREMENT PRIMARY KEY ,
  lavori VARCHAR(250) NOT NULL
  )";
Grazie mille per l'aiuto!!!
 
  • Like
Reactions: criric

Discussioni simili