FórumGdH

Página Inicial do Guia do Hardware

Registrar FAQ Calendário Pesquisar Mensagens de Hoje Marcar Fóruns Como Lidos

Voltar   FórumGdH > Profissional > Programação, scripts, web e banco de dados
Bem-vindo ao FórumGdH
Não se esqueça de se registrar, é grátis . Nós temos 759.302 usuários, convidamos você fazer parte de nossa comunidade também! Se ainda não encontrou o que procura use nossa pesquisa. Esperamos que aprecie nosso trabalho.

Resposta
 
Opções do Tópico
Antigo 25-02-2005, 14:25   #1 (permalink)
rwar
GeeK
 
Avatar de rwar
 
Registrado em: Aug 2002
Localização: Porto Alegre (RS)
Mensagens: 2.448
Reputação: 23 rwar está indo no caminho certo
Padrão mutreta em php / javascript

Tenho que validar o conteúdo de um campo, verificando se o mesmo já está em uma base de dados.

O problema é que não posso validar apenas quando for enviar os dados do formulário (neste caso utilizaria javascript). Deve ser feito após o primeiro campo (apenas este precisa ser validado quanto a existência ou não na base de dados).

Por que? Porque a analista colocou na cabeça que deve ser assim... :roll: O usuário não pode saber que já existe tal valor somente após o preenchimento de todos os demais campos... :evil:

Tive a idéia de que quando o campo perdesse o foco, faria uma pesquisa na base de dados. O porém é que a perda de foco é em javascript (lado cliente), e a busca no banco é em php (lado servidor), indo por água abaixo...

Alguma dica?
__________________
No caminho dos scripts. Por enquanto, powershell...
rwar está offline   Responder com Quote
Antigo 25-02-2005, 15:34   #2 (permalink)
lgr
Tô em todas
 
Avatar de lgr
 
Registrado em: Aug 2003
Localização: Rio de Janeiro-RJ
Idade: 38
Mensagens: 1.513
Reputação: 87 lgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputação
Enviar mensagem via ICQ para lgr Enviar mensagem via AIM para lgr Enviar mensagem via MSN para lgr Enviar mensagem via Yahoo para lgr Enviar mensagem via Skype para lgr
Padrão

rwar,

Também tenho interesse nesse tipo de solução. Mas vejo um grande problema: como conectar ao banco-de-dados sem revelar, no código javascript, o login e a senha???

Você não poderia utilizar uma tag <select> para isso? Ou usar tags <input type="hidden"> para guardar os valores a serem verificados depois por javascript?
__________________
Linux User #264184 - Mandriva 2010.2
http://www.lgrinformatica.com.br
Notebook CCE SR-ONE Core2Duo 7250 4GB 500GB Intel
Tablet Herotab C8M Android 2.3.3
http://www.slatedroid.com/forum/139-...b-c8dropad-a8/
lgr está offline   Responder com Quote
Antigo 25-02-2005, 15:47   #3 (permalink)
rwar
GeeK
 
Avatar de rwar
 
Registrado em: Aug 2002
Localização: Porto Alegre (RS)
Mensagens: 2.448
Reputação: 23 rwar está indo no caminho certo
Padrão

Citação:
Postado Originalmente por lgr
rwar,

Também tenho interesse nesse tipo de solução. Mas vejo um grande problema: como conectar ao banco-de-...
Bom, primeiro já estou conectado ao banco, segundo é que, creio eu, não se consegue conectar-se a um banco de dados via javascript, ok? :wink:

E, dessa forma, chegamos ao mesmo impasse... :lol: Vou dizer à analista que não tem como e pronto, sei lá...
__________________
No caminho dos scripts. Por enquanto, powershell...
rwar está offline   Responder com Quote
Antigo 25-02-2005, 17:44   #4 (permalink)
profeta_livre
Super Participante
 
Registrado em: Jan 2005
Mensagens: 958
Reputação: 16 profeta_livre está indo no caminho certo
Padrão

e se tentar com um if do tipo if($campo == "") { echo "decisão"; } ????
profeta_livre está offline   Responder com Quote
Antigo 25-02-2005, 19:18   #5 (permalink)
jqueiroz
Highlander
 
Avatar de jqueiroz
 
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.782
Reputação: 1756 jqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputação
Padrão

Alternativas:

1) Ao abrir a página, envie junto uma tabela JavaScript com todos os valores possíveis para o campo citado. Daí vc pode comparar, e validar. Claro, só funciona se o campo tiver poucos valores possíveis.

2) Criar um formulário invisível. Quando o campo perder o foco, você faz esse formulário invisível consultar o BD.


Para as questão da senha, se o banco de dados for SQL, você pode criar uma senha com acesso ReadOnly. Ou criar uma página PHP que faz a consulta, a partir de uma senha read only predefinida e não divulgada.
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns
jqueiroz está offline   Responder com Quote
Antigo 26-02-2005, 2:18   #6 (permalink)
lgr
Tô em todas
 
Avatar de lgr
 
Registrado em: Aug 2003
Localização: Rio de Janeiro-RJ
Idade: 38
Mensagens: 1.513
Reputação: 87 lgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputação
Enviar mensagem via ICQ para lgr Enviar mensagem via AIM para lgr Enviar mensagem via MSN para lgr Enviar mensagem via Yahoo para lgr Enviar mensagem via Skype para lgr
Padrão

Citação:
Postado Originalmente por rwar
Bom, primeiro já estou conectado ao banco, segundo é que, creio eu, não se consegue conectar-se a um banco de dados via javascript, ok?
Essa é a questão: existe como conectar a um BD utilizando javascript :?:

jqueiroz, quanto a sua primeira sugestão, eu já utilizo dessa forma, mas, como você já disse, fica muito ruim para tabelas grandes. Por isso, interessaria-me uma forma alternativa, mas sem ter que recarregar toda a página. Como funcionaria esse formulário invisível? Pergunto porque esse "formulário invisível" precisaria chamar uma página em php (que faria o acesso ao BD) e assim retornar valores. Seria através de frames?
__________________
Linux User #264184 - Mandriva 2010.2
http://www.lgrinformatica.com.br
Notebook CCE SR-ONE Core2Duo 7250 4GB 500GB Intel
Tablet Herotab C8M Android 2.3.3
http://www.slatedroid.com/forum/139-...b-c8dropad-a8/
lgr está offline   Responder com Quote
Antigo 26-02-2005, 20:43   #7 (permalink)
jqueiroz
Highlander
 
Avatar de jqueiroz
 
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.782
Reputação: 1756 jqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputação
Padrão

Mais ou menos assim: você cria um DIV, posiciona ele fora da tela. Dentro do DIV, coloca um IFRAME. Nesse IFRAME, carrega o outro formulário. Esse outro formulário vai ser todo manipulado por funções JavaScript. Tipo:

Código:
(...) <DIV name="invis" class="invisivel"> <IFRAME name="invisFrame" src="invisiForm.php"></iFRAME> </DIV> (...) invisiForm.campoConsulta = valor; invisiForm.doSubmit(); while( !invisiForm.temResultado ) // Não é pra fazer isto, não vai funcionar direito. ; // É só pra exemplificar. if( invisiForm.resultadoConsulta() ) { (...)
No script "invisiForm.php", você colocaria uma variável JavaScript, chamada "temResultado". Chamando o script "puro", sem parâmetros, essa variável vem == falso. Chamando com um parâmetro da sua busca, o script seta essa variável p/ true. Aí vc sai da espera, e verifica se o resultado bate (ou até mesmo recolhe os dados adicionais, se for o caso).

-------------------------------------------

Acabei de pensar numa outra alternativa. Digamos que vc tenha o script "meuform.php", que monta esse formulário. Ao ser chamado sem parâmetros, ele monta o formulário vazio, sem dados. O detalhe: a ação do formulário é chamar a si mesmo.

Mas, quando o usuário preenche o campo-chave, ele imediatamente submete o formulário, forçando o script a ser carregado de novo, mas agora com o campo-chave preenchido. Agora você tem a chance de fazer as buscas e as validações que quiser, pois o formulário já está aparecendo na tela do cliente, e o console dele está "em extase", perdido entre o foco em um campo e outro.

Retornando a resposta do script, os campos são preenchidos, exatamente por cima de onde estavam antes, e o cliente não irá perceber que na verdade você está em outra página, pq afinal é a mesma página, apenas recarregada. Que tal assim? Quer tentar???
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns
jqueiroz está offline   Responder com Quote
Antigo 28-02-2005, 10:03   #8 (permalink)
lgr
Tô em todas
 
Avatar de lgr
 
Registrado em: Aug 2003
Localização: Rio de Janeiro-RJ
Idade: 38
Mensagens: 1.513
Reputação: 87 lgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputaçãolgr tem uma fabulosa reputação
Enviar mensagem via ICQ para lgr Enviar mensagem via AIM para lgr Enviar mensagem via MSN para lgr Enviar mensagem via Yahoo para lgr Enviar mensagem via Skype para lgr
Padrão

jqueiroz,

Excelente, eu já imaginava que era usando o DIV (já uso ele para menus e etc), só não sabia que tinha que usar o IFRAME. Vou testar. Obrigado :mrgreen:

Quanto a segunda idéia eu já a utilizo. Mas tem um problema: quando a conexão é banda larga fica razoavelmente rápido, mas quando a conexão é discada fica muito lento fazer esse processo. Acho a primeira melhor. 8)
__________________
Linux User #264184 - Mandriva 2010.2
http://www.lgrinformatica.com.br
Notebook CCE SR-ONE Core2Duo 7250 4GB 500GB Intel
Tablet Herotab C8M Android 2.3.3
http://www.slatedroid.com/forum/139-...b-c8dropad-a8/
lgr está offline   Responder com Quote
Antigo 28-02-2005, 15:00   #9 (permalink)
rwar
GeeK
 
Avatar de rwar
 
Registrado em: Aug 2002
Localização: Porto Alegre (RS)
Mensagens: 2.448
Reputação: 23 rwar está indo no caminho certo
Padrão

Como optei pela segunda opção (creio ser mais "acessível" e mais fácil), está ocorrendo um problema: não estou conseguindo enviar o valor para a função que fará a validação. Estou fazendo desta forma:
Código:
<td> <input name="sigla" maxlength="10" value="<?=$sigla?>" onBlur="javascript:location.href='<?=$PHP_SELF?>?sigla=document.forms[0].sigla.value'"> </td>
O value foi colocado pois, após o campo sigla ser preenchido e a página ser recarregada, o mesmo deve aparecer, certo?

O que devo colocar para o valor ser passado para a própria página?
__________________
No caminho dos scripts. Por enquanto, powershell...
rwar está offline   Responder com Quote
Antigo 28-02-2005, 15:20   #10 (permalink)
jqueiroz
Highlander
 
Avatar de jqueiroz
 
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.782
Reputação: 1756 jqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputação
Padrão

rwar, acho que desse jeito não vai funcionar. Tente fazer assim:

Código:
<td> <?php if ($sigla) { echo "<input name='sigla' maxlength='10' value='$sigla'>\n"; } else { echo "<input name='sigla' maxlength='10' onBlur='document.forms[0].doSubmit()'>\n"; } ?> </td>
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns
jqueiroz está offline   Responder com Quote
Antigo 28-02-2005, 15:43   #11 (permalink)
rwar
GeeK
 
Avatar de rwar
 
Registrado em: Aug 2002
Localização: Porto Alegre (RS)
Mensagens: 2.448
Reputação: 23 rwar está indo no caminho certo
Padrão

Não funciona...

Que saco!!! Faço o que com essa @#$%$¨$%&¨ de script??? :evil:

O erro que dá é este:
Citação:
"O objeto não dá suporte para a propriedade ou método"
nesta linha
Código:
<input name='sigla' maxlength='10' onBlur='document.forms[0].doSubmit()'>
__________________
No caminho dos scripts. Por enquanto, powershell...
rwar está offline   Responder com Quote
Antigo 28-02-2005, 16:07   #12 (permalink)
jqueiroz
Highlander
 
Avatar de jqueiroz
 
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.782
Reputação: 1756 jqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputação
Padrão

dê um nome ao form:

Código:
<form name='formPrincipal' ...>
e use ele na chamada:

Código:
... onBlur='formPrincipal.submit()
PS: Desculpe, o método é "submit()", não "doSubmit()".
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns
jqueiroz está offline   Responder com Quote
Antigo 28-02-2005, 17:12   #13 (permalink)
rwar
GeeK
 
Avatar de rwar
 
Registrado em: Aug 2002
Localização: Porto Alegre (RS)
Mensagens: 2.448
Reputação: 23 rwar está indo no caminho certo
Padrão

Citação:
Postado Originalmente por jqueiroz
dê um nome ao form:

Código:
<form name='formPrincipal' ...>
e use ele na chamada:

[code]... onBlu...
Que coisa... Não dá nada certo, jqueiroz!

A lógica está correta com certeza, porém agora não dá erro, mas também não executa o evento on Blur... Vou fazer mais algumas tentativas com o outro método que você mencionou prá ver se funciona...
__________________
No caminho dos scripts. Por enquanto, powershell...
rwar está offline   Responder com Quote
Antigo 28-02-2005, 17:55   #14 (permalink)
jqueiroz
Highlander
 
Avatar de jqueiroz
 
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.782
Reputação: 1756 jqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputação
Padrão

Em vez de usar o evento "onBlur", tente usar o evento "onChange". No livro que eu uso como referência (Goodman, "JavaScript - A Bíblia") o exemplo está usando este método.
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns
jqueiroz está offline   Responder com Quote
Antigo 28-02-2005, 18:07   #15 (permalink)
rwar
GeeK
 
Avatar de rwar
 
Registrado em: Aug 2002
Localização: Porto Alegre (RS)
Mensagens: 2.448
Reputação: 23 rwar está indo no caminho certo
Padrão

Consegui fazer jqueiroz. Devo ter esquecido ou o ponto e vírgula ou os parênteses, não lembrando com qual tinha testado :roll: ... Testa tanto que nem lembra mais o que testou...

Valeu pela ajuda, mas mesmo assim vou fazer um teste com esse outro evento (onChange) prá ver o que muda...
__________________
No caminho dos scripts. Por enquanto, powershell...
rwar está offline   Responder com Quote
Antigo 26-07-2007, 12:35   #16 (permalink)
alppedroso
Newbie
 
Registrado em: Jul 2007
Mensagens: 2
Reputação: 0 alppedroso está indo no caminho certo
Padrão

http://jsval.fantastic-bits.de/

Ai pessoal.. Nesse site em tem um 'fw' para validacao de formulario. Eu nao uso exatamente para a duvida em questao, mas ele tem algumas funcionalidades bem uteis.
E legal utiliza-lo para diminuir o numero de cliques do usuario, evitando aquele transtorno de "Informacao incorreta!!", aí volta e faz tudo novamente.

[]'s

----
Andre
http://apedroso.blogspot.com

Última edição por alppedroso : 27-07-2007 às 10:42. Motivo: Equivoco na ultima msg. Correção!
alppedroso está offline   Responder com Quote
Antigo 26-07-2007, 13:00   #17 (permalink)
peczenyj
GeeK
 
Avatar de peczenyj
 
Registrado em: Oct 2005
Localização: POA/RS -> RJ
Idade: 31
Mensagens: 2.982
Reputação: 29 peczenyj É esplêndido e chama muita atençãopeczenyj É esplêndido e chama muita atençãopeczenyj É esplêndido e chama muita atençãopeczenyj É esplêndido e chama muita atençãopeczenyj É esplêndido e chama muita atençãopeczenyj É esplêndido e chama muita atençãopeczenyj É esplêndido e chama muita atenção
Enviar mensagem via Skype para peczenyj
Padrão

Ah... mais um caso onde AJAX salva o dia
__________________
NOVO BLOG:
http://pacman.blog.br/
peczenyj está offline   Responder com Quote
Antigo 26-07-2007, 14:50   #18 (permalink)
Guitarrista Kurumin
Super Participante
 
Avatar de Guitarrista Kurumin
 
Registrado em: Jul 2006
Localização: Unaí
Idade: 25
Mensagens: 840
Reputação: 15 Guitarrista Kurumin Tem uma excelente energiaGuitarrista Kurumin Tem uma excelente energia
Enviar mensagem via MSN para Guitarrista Kurumin
Padrão

Ia dizer isso agora. Com um pouco de ajax isso ficaria fácil
__________________
Conhecimento é saber que tomate é fruta. Sabedoria é saber que não se coloca tomates em uma salada de frutas.
Guitarrista Kurumin está offline   Responder com Quote
Antigo 26-07-2007, 22:21   #19 (permalink)
philix
Super Participante
 
Registrado em: Dec 2006
Idade: 21
Mensagens: 953
Reputação: 14 philix possui ótimo potencialphilix possui ótimo potencial
Enviar mensagem via MSN para philix
Padrão

Eu li esse quisso todo, coçando os dedos para "falar" em AJAX ou a maneira correta de submeter o formulário e encontro:

Citação:
[tópico antigo]

Sorry!

Andre
http://apedroso.blogspot.com
__________________
"A Matemática é a ginástica mental necessária na tentativa da compreenssão do universo" Linus Torvalds
philix está offline   Responder com Quote
Resposta


Opções do Tópico

Regras de Mensagens
Você não pode criar tópicos
Você não pode postar respostas
Você não pode anexar arquivos
Você não pode editar suas mensagens

Código vB está Ligado
Smiles estão Ligado
Código [IMG] está Ligado
Código HTML está Desligado
Ir para...


Horários baseados na GMT -3. Agora são 19:21.