Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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!
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());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?
>
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.....
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?
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(); $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
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
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!!!!!
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 ;)