alh 1 Denunciar post Postado Abril 12, 2015 Saudações... Estou com uma dúvida, que preciso compartilhar com vocês. Trata-se de um Cadastro de Cliente e Orçamento. Veja a seguir como é o procedimento que preciso realizar. No Cadastro de Orçamento tem um input chamado "Cliente" que o cliente preenche e recebe a lista dos clientes cadastrados. EXPLICAÇÃO SIMPLES: Digito "Teste1" no campo 'Cliente' da página de cadastro de 'Orçamento', se o cliente existir mostra o resultado: "Teste1" para clicar e preencher o input como sendo o certo. Mas, se buscar por "Teste1" e não encontrar registros no banco de dados aparece o resultado: "Teste1 (Cadastrar)" quando clico em 'Cadastrar', ele faz um pré-cadastro na tabela 'Clientes' com o nome "Teste1", sem sair do input na mesma tela do cadastro, aparecendo apenas um aviso abaixo do input 'Cliente' dizendo: "Cliente cadastrado". Parece simples, mas ainda não encontrei uma maneira.. Se puder me ajudar ficarei muito grato. :) Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Abril 12, 2015 Da forma como descreveu só com ajax! http://codeforgeek.com/2014/09/ajax-search-box-php-mysql/ http://codigofonte.uol.com.br/artigos/30-plugins-de-jquery-e-ajax-para-autocomplete Bons estudos!!! Compartilhar este post Link para o post Compartilhar em outros sites
alh 1 Denunciar post Postado Abril 13, 2015 Olá Williams! Grato pela sua resposta desde já, acho bacana quem se apresenta para ajudar.. Estava ciente que teria que ser em ajax, agora você confirmou. Certo o INPUT em ajax como nos exemplos que me passou já tinha implantado porém após implantar esse ajax no input fico travado para o próximo passo. VEJA: Na página de cadastro de 'Orçamento', ao digitar o nome no input 'cliente' se ele NÃO existir, quero cadastrar ele na tabela 'Clientes' sem refresh na página e só com um aviso "Cliente cadastrado com Sucesso!" após isso preencho os campos normais do Orcamento e finalizo o orcamento. Da forma como descreveu só com ajax! http://codeforgeek.com/2014/09/ajax-search-box-php-mysql/ http://codigofonte.uol.com.br/artigos/30-plugins-de-jquery-e-ajax-para-autocomplete Bons estudos!!! Esse passo tudo certo. Só falta o cadastro sem refresh na tabela Cliente dentro do input cliente na pagina de Orcamento. Consegui resolver, estava testando com ajax e tinha um erro, agora resolvi! Obrigado pela ajuda! :yes: :yes: :yes: :yes: Compartilhar este post Link para o post Compartilhar em outros sites
ernestovm 0 Denunciar post Postado Abril 13, 2015 Amigo, eu uso algo parecido em um sistema meu com Ajax. Tenho um Form que possui um INPUT para receber Membros de uma Equipe a ser montada. Ao digitar nomes no input umabusca é feita na Tabela de membros. Todos que existem na tabela cuja palavra digitada existe em algum lugar do Nome do Membro são listadas abaixo. Ao clicar em um dos membros da Lista ele vai para o INPUT. Tem na linha do INPUT um botão "INSERIR". O INPUT é esse: <input name="pesquisa" type="imput" class="FormDescricaoBreveDescricao" id="pesquisa" autocomplete="off" onkeyup="carregaAjax('resbusca','cotacao/acha_apoio.php?valor=' + this.value)" onkeydown="carregaAjax('resbusca','cotacao/acha_apoio.php?valor=' + this.value)" onfocus="className='FormDescricaoBreveDescricao2';" onblur="className='FormDescricaoBreveDescricao';" /> O Script Ajax que carrega a tabela abaixo do INPUT com as pessoas que possuem a palavra no Nome é: <script language="JavaScript">function openAjax() {var Ajax;try {Ajax = new XMLHttpRequest(); // XMLHttpRequest para browsers mais populares, como: Firefox, Safari, dentre outros.}catch(ee){try {Ajax = new ActiveXObject("Msxml2.XMLHTTP"); // Para o IE da MS}catch(e){try {Ajax = new ActiveXObject("Microsoft.XMLHTTP"); // Para o IE da MS}catch(e){Ajax = false;}}}return Ajax;}function carregaAjax(div, getURL) {if (div=="resbusca") { document.getElementById("resbusca").style.display = "block";}if(document.getElementById) { // Para os browsers complacentes com o DOM W3C.var exibeResultado = document.getElementById(div); // div que exibirá o resultado.var Ajax = openAjax(); // Inicia o Ajax.Ajax.open("GET", getURL, true); // fazendo a requisiçãoAjax.onreadystatechange = function(){if(Ajax.readyState == 1) { // Quando estiver carregando, exibe: carregando...if (div=="resbusca") { exibeResultado.innerHTML = "<div><img src='js/ajax-loader.gif' align='left'>Não Encontrado...</div>";} else { exibeResultado.innerHTML = "Carregando...";}}if(Ajax.readyState == 4) { // Quando estiver tudo pronto.if(Ajax.status == 200) {var resultado = Ajax.responseText; // Coloca o retornado pelo Ajax nessa variávelresultado = resultado.replace(/\+/g,""); // Resolve o problema dos acentos//resultado = resultado.replace(/ã/g,"a");resultado = unescape(resultado); // Resolve o problema dos acentosexibeResultado.innerHTML = resultado;} else {if (div=="resbusca") { exibeResultado.innerHTML = "<div><img src='js/ajax-loader.gif' align='left'>Não Encontrado...</div>";} else { exibeResultado.innerHTML = "Carregando...";}}}}Ajax.send(null); // submete}}</script> ********** Função que Aceita o membro clicado jogando o Código e o Nome dele no INPUT é: <script language="JavaScript" type="text/JavaScript">function aceita_item(registro) { var tab = registro.split("|"); var cod = tab[0]; var nom = tab[1]; document.getElementById("apoio").value = cod; document.getElementById("pesquisa").value = nom; document.getElementById("resbusca").style.display = "none"; document.getElementById("observ").focus(); return false;}</script> O programa PHP que é chamado pelo Ajax (acha_apoio.php) é: <? header("Content-Type: text/html; charset=iso-8859-1",true) ?><?phpmb_internal_encoding("UTF-8");mb_http_output( "iso-8859-1" );ob_start("mb_output_handler"); header("Content-Type: text/html; charset=ISO-8859-1",true);?><?phpsession_start();import_request_variables("gP");require '../includes/conexao.php';$string = addslashes(trim($_GET['valor']));$string = strtolower($string);$nome_apoio = "";if (strlen($string)>0) { $vis = "select codigo,nome from apoio where lower(nome) like '%".$string."%' ORDER BY nome"; $res = pg_exec( $conexao, $vis ); echo "<ul>"; while($lin = pg_fetch_row($res)){ $cod_apoio = $lin[0]; $nome_apoio = $lin[1]; $nome_apoio = utf8_encode($nome_apoio); $retorno= $cod_apoio."|".$nome_apoio; echo $url = "<li><a href=".chr(34)."#".chr(34)." onClick=".chr(34)."aceita_item('".$retorno."');".chr(34)."><img src=".chr(34)."imagens/download_linha.png".chr(34)." width=".chr(34)."18".chr(34)." height=".chr(34)."18".chr(34)." align=".chr(34)."left".chr(34)." border=".chr(34)."0".chr(34)."></a> ".$nome_apoio."</li><br>"; } echo "</ul>";}if ($nome_apoio=="") { echo "Não Encontrado...".$string;}?> Veja que o Link para ser clicado e aceitar o Membro é uma imagem chamada download_linha.png que está no diretório imagens/ Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Abril 13, 2015 Ou você pode utilizar uma função mais simples do jquery $("#id_input").keyup(function (e) { ... }); https://api.jquery.com/keyup/Verificar se retorna um boolean false, e mostrar um button para cadastrar caso não exista este cliente, com a função click você cadastra sem refresh $("#id_input").click(function (e) { ... }); https://api.jquery.com/click/ Compartilhar este post Link para o post Compartilhar em outros sites