Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia galera,
Estou com uma pequena dúvida.
Tenho duas tabelas: usuários e telefones.
Na tabela de usuário, está assim: use_codigo, use_nome etc.
Na tabela telefone, está assim: tel_use_codigo e tel_telefone.
Na hora de inserir o usuário com os telefones, fica tudo ok, e tb na hora de listar. O problema é alterar se eu cadastrar mais de um telefone, pois como ele não tem um id único, ele altera somente um registro.
Como estou fazendo:
Faço um select e listo todos os telefones daquele usuário que está aberto na tela. O id dele fica salvo num sessão.
Tenho um form onde tem um input com o telefone atual e um botão submit ao lado. E também, neste form tem um hidden com o telefone atual do usuário.
Na hora de atualizar estou fazendo isso:
$update_telefone = "UPDATE tb_telefones SET TEL_TELEFONE = '".$_POST['telefone']."' WHERE TEL_TELEFONE = '".$_POST['telefone_atual']."' AND TEL_USE_CODIGO = '".$_SESSION['usuario']."' LIMIT 1";
Se houver somente um telefone, funciona perfeitamente. Com mais de um registro listado, ele altera somente o ÚLTIMO REGISTRO da lista.
Alguém sabe dizer pq?
Valeu
Mas, se a tabela vem com valores multivalorados, não tem pq eu criar uma chave primária para ele. Se fosse para ser assim, como vc falou, já teria resolvido.
Queria entender pq somente ele altera o último registro da lista, pois cada um é identificado por um botão submit com seu "id" correspondente.
Foi mal aí pelo up...
O conceito de campo multivalorado é o seguinte, por exemplo, o usuário poderá ter N telefones, em vez de eu criar uma linha para cada telefone eu os separo de alguma maneira e coloco todos na mesma linha.
Se esse é o seu problema, o que você está fazendo nunca vai funcionar, pois você terá que atualizar tudo de uma vez mesmo.
Entendi, então vc recomenda eu colocar uma chave primária para cada telefone?
Se um usuário pode ter vários telefones então é uma relação 1-N, logo você deveria ter uma tabela apenas com os telefones, onde cada linha é um telefone e obviamente você faria a ligação do telefone com o usuário que deveria estar em outra tabela.
Mas, foi basicamente isso que eu fiz. Na tabela telefone, tem somente o id_user e o telefone.
Isso não é um campo multivalorado... Para facilitar a sua vida então, quando a pessoa disparar o formulário, delete todos os registros do id_user, após isso insira novamente.
Em primeiro lugar, nâo dê up no seu tópico, isso é um fórum, não o suporte técnico de alguma empresa.
Em segundo lugar, sem ver o seu formulário tudo são suposições, pelo que você passou ao que me parece é algum erro na montagem do próprio formulário. Além é claro de um erro crasso de modelagem, já que se houvesse um chave primária tudo isso seria evitado.