Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rosalvo

MySQL / PHP Criar tabela usando dados enviado pelo $_GET

Recommended Posts

Bom Dia!
Estou com dificuldades para criar uma tabela no MySQL usando dados que retornam de um formulário.
Usando um "foreach" eu consigo ver todos os dados do formulário com seus valores:

foreach($_POST as $nome_campo => $valor)
{
$comando = $nome_campo . " int(11) NOT NULL," ;
echo "<pre>".($comando);
}

Com esse comando obtenho um resultado parecido com esse:

CODIGO_OS int(11) NOT NULL,
LABORATORIO int(11) NOT NULL,
FREQUENCIA int(11) NOT NULL,
ID int (11) NOT NULL,
OSSEQ int(11) NOT NULL,
DATA int(11) NOT NULL,
HORA int(11) NOT NULL,
MINUTO int(11) NOT NULL,
item_1_1 int(11) NOT NULL,
item_1_2 int(11) NOT NULL,
item_1_3 int(11) NOT NULL,
item_1_4 int(11) NOT NULL,
item_15_6 int(11) NOT NULL,
...

Queria usar esses dados para criar uma tabela no BD, Ex.:

$sql="
CREATE TABLE IF NOT EXISTS TESTE
(
CODIGO int(11) NOT NULL AUTO_INCREMENT,
DATACAD datetime DEFAULT NULL,
".print $comando."
PRIMARY KEY (`CODIGO`)
)

ENGINE=MyISAM DEFAULT CHARSET=latin1;
";

Sei que assim não funciona, é só uma ideia, já tentei de várias maneiras, procurei nos fóruns e não encontrei nada relativo.
É possível criar essa tabela usando dados do $_GET?
Precisaria disto porque dependendo do serviço o cliente pode inserir mais campos no formulário, aí minha tabela seria alterada ou criada uma nova.
Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Foi só erro de digitação aqui no fórum, o importante é que essa lista eu não consigo passar para o CREATE TABLE

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Estou retornando só agora...

 

Consegui solucionar esse problema da seguinte forma:

 

////////////////////////// Cria a tabela no Banco de dados se não existe //////////////////////////////

include "conexão.php";

 

$sql = '';

$comando='';

 

foreach($_POST as $nome_campo => $valor)

{

 

if ($nome_campo=='ITEM') $nome_campo=$nome_campo.'°1';

if ($nome_campo=='LABORATORIO') $nome_campo=$nome_campo.'°1';

if ($nome_campo=='DATA') $nome_campo=$nome_campo.'°6';

if ($nome_campo=='HORA') $nome_campo=$nome_campo.'°1';

if ($nome_campo=='MINUTO') $nome_campo=$nome_campo.'°1';

if ($nome_campo=='ID') $nome_campo=$nome_campo.'°1';

if ($nome_campo=='OS') $nome_campo=$nome_campo.'°1';

if ($nome_campo=='CODOS') $nome_campo=$nome_campo.'°1';

 

$expl = explode('°',$nome_campo);

$nome_campo2=$expl[0];

 

 

if ($nome_campo2.'°1'==$nome_campo){$comando = $nome_campo2.' int(11) DEFAULT NULL,';}

else if ($nome_campo2.'°2'==$nome_campo){$comando = $nome_campo2.' decimal(12,2) DEFAULT NULL,';}

else if ($nome_campo2.'°3'==$nome_campo){$comando = $nome_campo2.' text DEFAULT NULL,';}

else if ($nome_campo2.'°4'==$nome_campo){$comando = $nome_campo2.' char(1) DEFAULT NULL,';}

else if ($nome_campo2.'°5'==$nome_campo){$comando = $nome_campo2.' char(1) DEFAULT NULL,';}

else if ($nome_campo2.'°6'==$nome_campo){$comando = $nome_campo2.' date DEFAULT NULL,';}

else if ($nome_campo2.'°9'==$nome_campo){$comando = $nome_campo2;}

else $comando = $nome_campo2.' char(6) DEFAULT NULL,';

 

$sql = $sql.$comando.' ' ;

 

}

//echo $sql;

mysqlexecuta($id_conexao,$sql); // A função mysqlexecuta faz a conexão com o BD

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

esse código acima me gerou um banco de dados perfeitamente funcional, possuindo uma média de 140 itens extraídos do formulário*.

 

*Esse formulário é criado a partir do banco de dados, e que posso alterar os campos de acordo com minha necessidade (se existe um serviço novo ou diferente do atual eu gero um formulário + banco para criar,inserir ou alterar sem precisar montar todas as páginas novamente - o famoso CRUD).

 

 

Para entender:

- A concatenação .'°6' ou .'º1' etc. eu criei para definir o tipo de campo, se é numérico, decimal, etc.

- O caractere º foi o único que encontrei para ser usado no "explode" e que não é nativo do php, qualquer um outro dava erro.

- Os comandos "CREATE", "IF NOT EXISTS", etc. estão no formulário como campos <imput type'hiden', Ex.:

 

<form name="form4" action="<?=$PHP_SELF;?>?CODIGOOS=<?=$CODIGOOS?>" method="post" onSubmit="return validaCampo(); return false;">

<input type="hidden" name='CREATE TABLE IF NOT EXISTS mntFREQDIARIA (°9' value="">

<input type="hidden" name="CODIGO int(11) NOT NULL AUTO_INCREMENT,°9" value="">

<input type="hidden" name="DATACAD datetime DEFAULT NULL,°9" value="">

<input type="hidden" name="ORDEM int(11) NOT NULL,°9" value="">

<input type="hidden" name="ITEM" value="<?=$res['ITEM']?>">

<input type="hidden" name="OS" value="<?=$CODOS?>">

.

.

.

 

Talvez exista uma forma mais fácil de se criar essa tabela, porém foi a única fórmula que consegui desenvolver

 

Obrigado por ter respondido lokaodomau

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.