Ir para conteúdo

POWERED BY:

Arquivado

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

Felipe Quirino

[Resolvido] Criar tabelas automaticamente

Recommended Posts

Boa noite galera do imaster, eo seguinte estou desenvolvendo um site que terá um cadastro de usuário, login para o usuário, um perfil para o usuário, uma pagina de recados e fotos etc.... eu tentei fazer algo mais ow menos assim, quando o usuário criar uma conta no meu site, automaticamente o meu banco mysql ja cria um tabela, para as o perfil deste usuário, crie uma tabela para os recados de usuário, e crie um tabela para as fotos deste usuário, mas não consegui alguém pode me ajudar??? vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

parece complexo hehehe

se você der uma pesquisada pelo fórum(aqui mesmo na área de PHP) vai achar alguns tópicos relacionados a criação de redes socias, acho que você consegue tirar proveito deles ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é exagero amigo repense sua logica! uma tabela para cada usuário kkkk

 

Não é mais fácil fazer assim:

 

>> TB Usuario

 

id_usr

nome_usr

senha_usr

 

>> --------

 

>> TB Fotos

 

id_foto

nome_foto

id_usr

 

>> --------

 

Quando ele quiser ver as fotos simplesmente busque na tabela fotos as fotos com o id do usuario!

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, o colega ja disse tudo1 va deve repensar sua logica.

 

Agora pra fazer da forma que você disse basta usar um dado do usuario (id, nome de usuario etc) transformar em string e criar a tabela.

 

Tipo se o usuario tiver que comfirmar o cadastro no email você pega estes dados via get, ou pode pegar via post direto do formulario.

 

$servidor = "localhost";
$user = "root";
$senha = "";
$db = "seu banco";

$conexao = mysql_connect($servidor,$user,$senha) or die (mysql_error());
$banco = mysql_select_db($db, $conexao) or die(mysql_error());

mysql_select_db("$banco", $conexao);

$user= $_POST["user"];
$sql = "CREATE TABLE `$user_fotos`(
 campos da tabela
) 

mysql_query($sql,$conexao) or die(mysql_error());

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola celio.... entao se eu fizer esse php no cadastro do usuario, as tabelas vao ser criadas automaticamente? pelo oque eu estou vendo vai ser criada sim, mais eu tenho uma duvida. quando criar essas tabelas automaticamente o usuario tera uma id certo? , e essa id deste usuario sera a msm de todas as outras tabelas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola celio.... entao se eu fizer esse php no cadastro do usuario, as tabelas vao ser criadas automaticamente? pelo oque eu estou vendo vai ser criada sim, mais eu tenho uma duvida. quando criar essas tabelas automaticamente o usuario tera uma id certo? , e essa id deste usuario sera a msm de todas as outras tabelas?

 

Olá você não precisa criar uma tabela pra cada usuario não, isso só vai sobrecarregar o banco de dados e tornar as consultas impossiveis de se trabalhar depois de um certo numero de usuarios cadastrados. O certo é fazer uma tabela pra todos os usuarios, uma outra para fotos, uma outra para todas as menssagens dos usuarios e etc.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Tiago Emerick!

Acabei de criar um banco de dados chamado de "dados_usuarios" e nela coloquei todos os dados como id, nome, email, usuario, senha, cidade etc..... e tbm criei uma tabela para as mensagens chamada "msn_users" com os campos id, nome,mensagem etc, e tbm criei a de fotos.... Ok tudo certo ate aqui, ja fiz a pagina de cadastro e ja esta cadastrando os dados no banco, esse usuario tera uma id unica, mais e na hora de buscar as fotos deste usuario na tabela de fotos como eu faço?

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso a variável $user tem o valor do nome do usuário, e certamente você ira usar uma validação para não existir dois usuários com o mesmo nome. Ou você pode usar um campo id auto_increment, daí cada id será único.

 

No caso do ID é gerado no MYSQL, então você terá que fazer uma query para poder resgatar este ID, alem de que terá que gravar estes dados em uma tabela com os dados dos usuários.

 

//insere osa dados em uma tabela cadastro, NULL é o id que será criado no mysql
$inserir= "INSERT INTO suatabela VALUES (NULL , '$nome', '$usuario', '$email', '$etc')";
mysql_query($inserir, $conexao) or die(mysql_error());

//vai fazer uma busca para pegar o id do usuario
$result = mysql_query( 'SELECT * FROM suatabela WHERE nome="'.$nome.'" and usuario="'.$usuario.'" and email="'.$email.'" and etc="'.$etc.'"' );

if (empty($result)) { 
   	echo "ERRO!!! o id do usuario não pode ser recuperado";
}
	$dados = array();
while($row = mysql_fetch_array($result)) {
	$dados[] = $row ['id']; 
 }

//Cria a tabela do usuario
$sql = "CREATE TABLE `id_$dados[0]`(
 campos da tabela
) 

mysql_query($sql,$conexao) or die(mysql_error());

 

você tem que colocar algo na frente da

$dados[0]

, porque tentar crier uma tabela com o nome numerico vai dar erro, colocando

id_$dados[0]

vai ficar algo igual id_122.

 

Este é a maneira pra fazer do jeito que você quer, mas vai uma dica:

Tem um curso grátis de amostra no site da softblue de lógica de programação e de SQL ANSI, faça o curso, é muito bom por sinal!

 

com esta estrutura você vai ter dor de cabeça futuramente.

 

Oque você tem que fazer é uma tabela para cadastro de usuários com um ID autoincremente, daí cria as outras tabelas como os colegas mencionaram e usa um campo para chave estrangeira usando o id do usuário.

 

EX:

 

Tabela usuário

Id | nome | email | data_nasc | etc

 

Tabela recados

id | usuário_id | recado | data

 

Repare que o campo usuário_id é uma FK da tabela usuário, assim estará tudo organizado e NORMALIZADO.

 

Qualquer duvida estamos ai

Compartilhar este post


Link para o post
Compartilhar em outros sites

dados_usuarios

id, nome, email, usuario, senha, cidade

 

msn_users

id, nome,mensagem

 

você tem que definir o id da tabela dados_usuarios como chave primeira, e tem que acrescentar um campo na tabela msn_user que sera a chave estrangeira tipo usuario_id, assim sera criada uma relação entre as duas tabelas.

 

Sugiro trocar o campo nome da tabela msn_users pelo campo com a chave estrangeira, você não ira utilizar este campo nome.

 

Depois é só usar o WHERE para buscar as msg do usuario

 

SELECT * msn_user WHERE usuario_id=21

Compartilhar este post


Link para o post
Compartilhar em outros sites

Célio A.

Cara muito obrigado pela sua explicação, me ajudou bastante.... Parabéns pelo seu post. É muito obrigado a todos os outros amigos logo acima me esclareceram varias duvidas!!!!!

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.