Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

gsilva23

Inserir automaticamente Id em nova tabela criada dinamicamente

Recommended Posts

gsilva23

Bom dia, será que alguém me pode ajudar?

Tenho a seguinte dúvida/pergunta: Eu Criei um programa onde o utilizador pode criar tabelas com os respetivos fieldname e data types, E gostaria que quando ele submete-se a tabela, o Id com auto increment fosse gerado automaticamente como primeira linha da nova tabela criada.obrigado.

Cumprimentos, Gonçalo 

r>
<?php	
$self = $_SERVER['PHP_SELF'];
$fields = null;
$db = null;

if(isset($_POST['field_submit'])) {
  $fields = $_POST['fields'];
}
else if(isset($_POST['db_submit'])) {
  $db =     $_POST['db'];
  $name =   $_POST['name'];
  $table =  $_POST['table'];
  $type =   $_POST['type'];
  $size =   $_POST['size'];
  $Descritivo = $_POST['Descritivo'];
}

if( !$fields and !$db )
{ //
  $form ="<form action=\"$self\" method=\"post\">";
  $form.="<br><br><br><br><br><br><br><br><br><center><b>Quantos fields deseja na sua nova tabela?</b></center><br><br>";
  $form.="<center><input type=\"text\" name=\"fields\" size=\"5\"class='botao'></center";
  $form.="<center><input type=\"submit\" name=\"field_submit\" value=\"Submeter\"class='botao'></center>";
  echo($form);
}
else if( !$db )
{  //dá ao user a opção de escolher em que base de dados quer inserir a nova tabela e pede o nome da respetiva.
  $form ="<form action=\"$self\" method=\"post\">";
  $form.="Escreve a Base de dados onde deseja criar:     <input type=\"text\" name=\"db\"><br>";
  $form.="<b>NOME DA TABELA:</b><input type=\"text\" name=\"table\" size=\"\"><br> ";
  for ($i = 0 ; $i <$fields; $i++) 
  {
	  //fase onde o user insere o nome do campo com o respetivo datatype e número de "caracteres".
    $form.="<br>Nome de Coluna:<input type=\"text\" name=\"name[$i]\" size=\"50\"><br>";
    $form.="<br>Tipo de dados: <select name=\"type[$i]\">";
    $form.="<option value=\"char\">Letras</option>";	
    $form.="<option value=\"varchar\">Letras e simbolos</option>";
    $form.="<option value=\"int\">Numero sem Virgula</option>";
    $form.="<option value=\"float\">Numeros com casa decimais</option>";
    $form.="</select> ";
    $form.="Size:<input type=\"text\" name=\"size[$i]\" size=\"5\"><br>";
    $form.="Descritivo:<input type=\"text\" name=\"Descritivo[$i]\" size=\"50\"><br>";
  }
  $form.=" <br><input type=\"submit\" name=\"db_submit\" value=\"Submeter\"></form>";
  echo($form);
}
else
{
  $conn = mysqli_connect("127.0.0.1", "root", "", "")
	or die("Could not connect.");

  $rs = mysqli_select_db($conn, $db)
	or die("Could not select database.");
	
  $num_columns = count($name);

  $sql = "create table $table (";
  for ($i = 0; $i < $num_columns; $i++) 
  {
    $sql .= "$name[$i] $type[$i]";
    if(($type[$i] =="char") or ($type[$i] =="varchar"))
    {
      if($size[$i] !="" ){ $sql.= "($size[$i])"; }
    }
	//insere numa tabela auxiliar todos os campos para mais tarde se puder ver informação
    if(($i+1) != $num_columns){ $sql.=","; }
	$sql_interno = "insert into descritivoscampos(Tabela,Campo,Descritivo) values ('$table', ";
	$sql_interno .="'$name[$i]', '$Descritivo[$i]');";
  $resultado = mysqli_query($conn, $sql_interno) or die("Could not execute SQL query");
	
  }
  $sql .= ")";

 

  $result = mysqli_query($conn, $sql)
	or die("Could not execute SQL query");
	//erro ao executar Query//

  if ($result) {     
	echo("RESULT: table \"$table\" foi criada na sua Base de Dados");
  }
}
// Inicia a sessao
session_start();
 
//vê se o user está on senão redireciona para a página de login
if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){
    header("location: login.php");
    exit;
}
?>

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.