..:: MX Studio Fóruns ::..: ConceitosXNecessidadesXRecursos <= Como procedo?? - ..:: MX Studio Fóruns ::..

Jump to content

Publicidade




ATENÇÃO

Para evitar posts desnecessários e que não influam para o andamento e desenvolvimento do fórum, clique aqui e leia todas as regras.
Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

ConceitosXNecessidadesXRecursos <= Como procedo?? Dúvidas sobre desenvolvimento de código.

#1 User is offline   viniciusbrasil 

  • Group: Membros
  • Posts: 37
  • Joined: 16-September 05

Posted 12 December 2005 - 10:24 AM

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!
0

#2 User is offline   Thompson 

  • Group: Membros
  • Posts: 616
  • Joined: 17-February 04

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:

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 smile.gif




0

#3 User is offline   hufersil 

  • Group: Moderadores
  • Posts: 1265
  • Joined: 15-January 04

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!
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic



Publicidade




1 User(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)