Ir para conteúdo

POWERED BY:

Arquivado

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

metzjuarez

Telefones multiplos

Recommended Posts

Preciso fazer algo deste tipo em meu formulario: http://bootsnipp.com/snippets/featured/multiple-fields-contact-form

 

Por exemplo tenho um cliente, ele pode ter 1 ou + telefones.

Não estou afim de limitar o numero de telefones a um numero x de colunas. (gambiarra)

Programando em PHP + MySQL.

 

Meu código até então:

<div class="box-content">
                                        <form class="form-horizontal" method="post" action="">
                                            <fieldset>

                                                <div class="control-group">
                                                    <label class="control-label" for="prependedInput">Nome </label>
                                                    <div class="controls">
                                                        <div class="input-prepend">
                                                            <span class="add-on"><i class="icon-user"></i></span>
                                                            <input id="prependedInput" size="16" type="text" name="nome" placeholder="Nome" autofocus="">
                                                        </div>
                                                    </div>
                                                </div>

                                                <div class="control-group">
                                                    <label class="control-label" for="prependedInput">E-mail </label>
                                                    <div class="controls">
                                                        <div class="input-prepend">
                                                            <span class="add-on"><i class="icon-envelope"></i></span>
                                                            <input id="prependedInput" size="16" type="email" name="email" placeholder="E-mail">
                                                        </div>
                                                    </div>
                                                </div>






                                                <div class="form-group multiple-form-group input-group">
                                                    <div class="input-group-btn input-group-select">
                                                        <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
                                                            <span class="concept">Phone</span> <span class="caret"></span>
                                                        </button>
                                                        <ul class="dropdown-menu" role="menu">
                                                            <li><a href="#phone">Phone</a></li>
                                                            <li><a href="#fax">Fax</a></li>
                                                            <li><a href="#skype">Skype</a></li>
                                                            <li><a href="#email">E-mail</a></li>
                                                            <li><a href="#www">Web</a></li>
                                                        </ul>
                                                        <input type="hidden" class="input-group-select-val" name="contacts['type'][]" value="phone">
                                                    </div>
                                                    <input type="text" name="contacts['value'][]" class="form-control">
                                                    <span class="input-group-btn">
                                                        <button type="button" class="btn btn-success btn-add">+</button>
                                                    </span>
                                                </div>




                                                <!--Botões de ação-->
                                                <div class="form-actions">
                                                    <input type="submit" name="cadastrar" class="btn btn-primary" value="Cadastrar dados">
                                                    <button type="reset" class="btn">Cancelar</button>
                                                </div>
                                            </fieldset>
                                        </form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deve armazenar os telefones em uma tabela separada, onde há o número do telefone e o ID do usuário a qual ele pertence. Falei sobre isso neste post http://rberaldo.com.br/usando-campos-multivalorados/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quanto a parte de mais campos de telefone, você pode colocar uma opção de adição de campo (com javascript) para o usuário.

Exatamente igual ao exemplo do bootsnipp.

Compartilhar este post


Link para o post
Compartilhar em outros sites
<!--Treta dos telefones-->
                                <fieldset>
                                        <div class="telefones">
                                            <div class="control-group">
                                                <label class="control-label" for="appendedPrependedInput">Telefones </label>
                                                <div class="controls">
                                                    <div class="input-prepend input-append">
                                                        <p class="campoTelefone">
                                                            <span class="add-on"><i class="icon-phone"></i></span>
                                                            <input type="text" name="telefone[]" placeholder="Telefone"/>
                                                            <a href="#" class="removerCampo"><span class="add-on"><i class="icon-remove"></i></span></a>
                                                        </p>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    
                                         <label class="control-label" for="appendedPrependedInput"></label>
                                        <a href="#" class="adicionarCampo">
                                            <button type="submit" class="btn btn-success">Adicionar mais um telefone</button></a>
                             
                                       </fieldset>
                                
                                 
<!--                         Fim da treta dos telefones           -->

Agora preciso dar um jeito de fazer o insert dos dados, alguém ai para dar uma dica?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vai utilizar o que? HTML/PHP ? Ajax (HTML/JS/PHP)?

 

PHP e o que for preciso, estou aprendendo, estudando materiais que encontro pela net...

 

Criei uma tabela:

telefones

id

telefone

 

Sei que tenho que pegar cada telefone e inserir na tabela telefones

 

Vou usar FK para relacionar a tabela telefone com a dos clientes

Compartilhar este post


Link para o post
Compartilhar em outros sites

É por ai mesmo.

 

Na tabela telefone você coloca a id da tabela user (ou como quer que chame a sua tabela de usuários), conhecida como FK (foreign key - chave estrangeira).

 

telefone

- id_telefone

- id_user

- numero

- ddd

- etc ....

 

Você pode enviar o formulário normalmente e manipular com PHP no server-side ou utilizar requisição assíncrona (vulgo ajax).

Compartilhar este post


Link para o post
Compartilhar em outros sites

SQL:

CREATE TABLE IF NOT EXISTS `telefones` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `dd` text NOT NULL,
  `telefone` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

 

mysql_query("INSERT INTO (id,user_id,dd,telefone) VALUES('','id do usuário ','dd','telefone')");

 

Agora pra várias inputs com o mesmo name, já não sei.

 

Vou ficar ligado no tópico para aprender!

 

Boa sorte! :D

Compartilhar este post


Link para o post
Compartilhar em outros sites


<!-- Estrutura da tabela `clientes` -->

 

CREATE TABLE IF NOT EXISTS `clientes` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`nome` varchar(45) NOT NULL,

`cnpj` char(14) DEFAULT NULL,

`cpf` char(11) DEFAULT NULL,

`cep` char(11) DEFAULT NULL,

`endereco` varchar(45) DEFAULT NULL,

`bairro` varchar(45) DEFAULT NULL,

`municipio` varchar(45) DEFAULT NULL,

`uf` char(2) DEFAULT NULL,

`inscricaoestadual` varchar(45) DEFAULT NULL,

`telefone` varchar(11) DEFAULT NULL,

`email` varchar(45) DEFAULT NULL,

`tipocliente` varchar(13) DEFAULT NULL,

PRIMARY KEY (`id`),

UNIQUE KEY `id_UNIQUE` (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=19 ;

 

 

INSERT INTO `clientes` (`id`, `nome`, `cnpj`, `cpf`, `cep`, `endereco`, `bairro`, `municipio`, `uf`, `inscricaoestadual`, `telefone`, `email`, `tipocliente`) VALUES

(17, 'Joel', '', '9999998003', '9655660', 'Rua', 'Feitoria', 'Leopoldo', 'RS', '', '', 'joel@joel.com', 'Locação'),

 

 

<!-- Estrutura da tabela `telefones` -->

 

CREATE TABLE IF NOT EXISTS `telefones` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`numtelefone` varchar(11) NOT NULL,

`donotelefone` int(10) unsigned NOT NULL,

PRIMARY KEY (`id`),

UNIQUE KEY `id_UNIQUE` (`id`),

KEY `id_clientes_idx` (`donotelefone`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=17 ;

 

INSERT INTO `telefones` (`id`, `numtelefone`, `donotelefone`) VALUES

(9, '5181433227', 17),

(10, '51999999999', 17),

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
$telefone = new Telefones();

$fone = $_POST['fone'];
$telefone->setFone($fone);

foreach($_POST['fone'] as $fone)  
{  
   
   $telefone->insert();
?

Fiz isso, mas na hora de inserir ele insere um string = "Array" e não o valor desejado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou com problemas ao inserir, ele insere todos os campos, porem tudo como array:

<?php
$cliente = new Cliente();
$telefone = new Telefone();

if (isset($_POST['cadastrar'])):

$fone = $_POST['fone'];
//$fone = \explode(', ', $fone, -1);
var_dump($fone);

$donotelefone = $_POST['donotelefone'];
   
$telefone->setFone($fone);
$telefone->setDonotelefone($donotelefone);

# Insert
   foreach($_POST['fone'] as $fone)  
{  
   ($telefone->insert());
}      
endif;
?>

O que faço para corrigir, devo usar o explode para extrair os dados do array?

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.