Bom dia amigos.
Vou tentar explicar meu problema de uma maneira simples e direta.
Estou usando PHP & MySQL.
A versão do MySQL q eu tenho aqui não aceita a criação de tabelas temporarias.
Tenho um relacionamento 1:N.
Por exemplo: Cada usuário tem N telefones e cada telefone pertence a 1 usuário. Para ficar mais claro, vamos supor a seguinte estrutura:
Tabela usuário:
user_id (PK)
user_name
Tabela telefone:
telefone_id (PK)
user_id (FK)
telefone
Como gostaria de proceder:
No form de cadastro de usuários, o usuário abre um pop up e cadastra os telefones (1 ou 1.000, tantofaz), fecha o popup, e termina o cadastro com as outras informações.
Minha dúvida é:
Qual a maneira mais correta de proceder na hora do cadastro? Vejam, eu ainda não tenho a chave extrangeira (user_id) para poder fazer o cadastro dos telefones ANTES de fazer o cadastro do usuário. Poderia usar tabelas temporárias mas o B.D. não me dá esse recurso.
Minhas tentativas:
Já q o MySQL não tem o recurso das tabelas temporarias, pensei no caso de criar uma tabela usando como nome a sessão do usuário (eu sei, é bem tosco) para ser temporaria. Aí, eu droparia no fim do cadastro. Mas aí, caso o usuário saísse sem terminar o cadastro, eu não teria como saber para dar drop na tabela.
O q eu acho q talvez funcione é ir guardando tudo num array (com separadores) e no ato do cadastro decomponho esse array para cadastrar os telefones. Mais ou menos como uma "Maquina de Turing".
Exemplo:
A cada "cadastro" no popup, ao inves de colocar no banco, guardo num hidden '¢5555-2525¢5555-2626'. Retorno isso para a janela pai. E quando termino o cadastro de usuário, decomponho baseado no separador(¢), cada um dos fones.
Alguém tem alguma sugestão?? Não queria complicar muito para algo muito simples ehehehe.
Obrigado!
Publicidade
|
|
Page 1 of 1
ConceitosXNecessidadesXRecursos <= Como procedo?? Dúvidas sobre desenvolvimento de código.
#2
Posted 17 December 2005 - 10:48 PM
Você pode resolver isso de uma maneira bem simples com variáveis de sessão, cara.
veja só um exemplo... eu to usando isso numa loja virtual, assim os usuários podem adicionar coisas ao carrinho sem precisarem estar logados na loja.
vamos supor q vc tenha um código html bem simples para o seu popu de telefones, desta maneira:
<html>
<head></head>
<table>
<tr>
<td>Insira no campo abaixo o telefone a ser cadastrado: </td>
</tr>
<tr>
<td><input type="text" name="telefone" /></td>
</tr>
<tr>
<td><inpu type="submit" name="enviar" value="Cadastrar Telefone" />
</tr>
</html>
quando o cara clicar no botão "enviar" do popup de telefones, a seguinte função deve ser executada:
<?
function cadastraTel()
{
if( trim($_POST['telefone']) )
{
#a idéia é gravar num array de sessão cada telefone que o cara cadastrar
$_SESSION['telefone'][] = $_POST['telefone'];
$_SESSION['msg'] = "Telefone inserido com sucesso!";
return 1;
}
else
{
#se o campo estiver vazio ou não for um número, então retorna mensagem de erro
$_SESSION['msg'] = "Você deve preencher o campo antes de inserir o telefone.";
return 0;
}
}
?>
feito isso, na sua página que exibirá a mensagem se conseguiu cadastrar ou não, vc faz assim:
if( $_POST['enviar'] )
{
cadastraTel();
print $_SESSION['msg'];
$_SESSION['msg'] = '';
}
se inseriu corretamente o telefone na sessão, basta depois vc fazer um for na $_SESSION['telefone'][] e cadastrar os telefones que estão guardados nela.
primeiro vc insere o usuario na tabela, e depois vc dá um UPDATE nela com os dados do telefone q vc pegou... e o update vai ser em cima do ultimo registro inserido, que você pega com mysql_insert_id();.
desta maneira vc se livra de usar os recursos do banco de dados. entendeu mais ou menos o esquema??
se não for isso ou não ficou mto claro, poste novamente
veja só um exemplo... eu to usando isso numa loja virtual, assim os usuários podem adicionar coisas ao carrinho sem precisarem estar logados na loja.
vamos supor q vc tenha um código html bem simples para o seu popu de telefones, desta maneira:
CODE
<html>
<head></head>
<table>
<tr>
<td>Insira no campo abaixo o telefone a ser cadastrado: </td>
</tr>
<tr>
<td><input type="text" name="telefone" /></td>
</tr>
<tr>
<td><inpu type="submit" name="enviar" value="Cadastrar Telefone" />
</tr>
</html>
quando o cara clicar no botão "enviar" do popup de telefones, a seguinte função deve ser executada:
PHP
<?
function cadastraTel()
{
if( trim($_POST['telefone']) )
{
#a idéia é gravar num array de sessão cada telefone que o cara cadastrar
$_SESSION['telefone'][] = $_POST['telefone'];
$_SESSION['msg'] = "Telefone inserido com sucesso!";
return 1;
}
else
{
#se o campo estiver vazio ou não for um número, então retorna mensagem de erro
$_SESSION['msg'] = "Você deve preencher o campo antes de inserir o telefone.";
return 0;
}
}
?>
feito isso, na sua página que exibirá a mensagem se conseguiu cadastrar ou não, vc faz assim:
PHP
if( $_POST['enviar'] )
{
cadastraTel();
print $_SESSION['msg'];
$_SESSION['msg'] = '';
}
se inseriu corretamente o telefone na sessão, basta depois vc fazer um for na $_SESSION['telefone'][] e cadastrar os telefones que estão guardados nela.
primeiro vc insere o usuario na tabela, e depois vc dá um UPDATE nela com os dados do telefone q vc pegou... e o update vai ser em cima do ultimo registro inserido, que você pega com mysql_insert_id();.
desta maneira vc se livra de usar os recursos do banco de dados. entendeu mais ou menos o esquema??
se não for isso ou não ficou mto claro, poste novamente
#3
Posted 18 December 2005 - 10:06 AM
Dê uma olhada nesse exemplo que fiz aqui, com integração com JavaScript
http://www.hufersil.com.br/lumine/exemplo.phps
e funcionando tá aqui
http://www.hufersil.com.br/lumine/exemplo.php
@braços e fique com Deus!
http://www.hufersil.com.br/lumine/exemplo.phps
e funcionando tá aqui
http://www.hufersil.com.br/lumine/exemplo.php
@braços e fique com Deus!
Share this topic:
Page 1 of 1
Similar Topics
| Topic | Forum | Started By | Stats | Last Post Info | |
|---|---|---|---|---|---|
|
Instrutor de indesign para dúvidas pontuais
Para orientar principalmente importação/exportação XML |
Mercado / Vagas |
Alex neiva
|
|
|
|
Iniciante
como começar??? |
ColdFusion |
anjo_crazy
|
|
|
|
Como
registro |
Outros |
0ml
|
|
|
|
Como mudar a resolução da tela automaticamente?
|
Flash & ActionScript |
rodrigo.exe
|
|
|
|
Blogueiro é levado à Justiça em Seul por previsões sobre economia
|
Notícias |
Notícias
|
|
|
|
MURAL DE RECADO
tem como fazer um mural no flash? |
Flash & ActionScript |
RAIFF MATOS
|
|
|
|
Banner Rotativo Em Swf (+ Xml), como passo de um pro outro ?
|
Flash & ActionScript |
mi7chael
|
|
|
|
Google fala oficialmente sobre Google Health pela primeira vez
|
Notícias |
Notícias
|
|
Publicidade
|
|

Help













