Ir para o conteúdo
daniel_ffp

[Resolvido] Dropdown

Mensagens Recomendadas

daniel_ffp

Boas,

Eu precisava muito da vossa ajuda para tentar resolver este problema que tenho.

Nunca progamei com javascript.

Estou a criar uma especie de tradutor por associação (as palavras já estão guardadas na base de dados).

O utilizador selecciona uma palavra na combobox e depois deverá aparecer a tradução guardada nessa palavra e mostrar. Isto deverá ocorrer sempre que a palvra mudar na combobox.

Agradecia se me podessem ajudar.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
daniel_ffp

jpaulino

Vi o exemplo do link é aquilo que preciso mas falta ser com os dados da base de dados. Eu por php consigo por os dados na combobox mas depois precisava de saber como conseguiria fazer com que o javascript va a bd buscar a tradução.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
lsoares

O Javascript não vai buscar nada à BD. É um linguagem client side. Corre no browser.

PHP, Java e .NET correm no servidor - são server side.

No teu caso terás de recorrer a Ajax... o cliente (browser) faz o pedido com a palavra que quer ver traduzida (on dropdown change") e o sevidor responde (potencialmente em JSON). O cliente pega no resultado e coloca-o no local devido.

Usando jQuery a coisa fica mais fácil (o pedido Ajax, o parsing e a manipulação DOM).

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
daniel_ffp

Eu estava a tentar utilizar este código

<?php

include('init.php');

?>

<!DOCTYPE html>
<html>
<head>
<script>
function palavra()
{
var mylist=document.getElementById("listaPalavra");
document.getElementById("favorite").value=mylist.options[mylist.selectedIndex].text;
}
</script>
</head>

<body>
<form name="form1" method="post" action="">
	  <h1 align="center">Palavras:</h1>
	  <p align="center">
		<label for="listaPalavra"></label>
		<select name="Palavra" id="listaPalavra" onchange="palavra()">
	  <?php
	  $sql = "SELECT * FROM palavra";
	  $execuar = mysql_query($sql) or die(mysql_error());


	  while ($reg = mysql_fetch_array($execuar))
	  {				
	  ?>

  	   <option><?php echo $reg['palavraPort']?></option>

  	  <?php
  	   }
	  ?>

   	 </select>
	  </p>
<p>Your favorite browser is: <input type="text" id="favorite" size="20"></p>
</form>
</body>

</html>

Editado por apocsantos

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
daniel_ffp

mas fora esse pequeno/grande problema ele nao esta a aparecer no inputtextfield a palavra traduzida nem me aparece a palavra igual a que seleccionei

Editado por daniel_ffp

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
lsoares

então faz assim.

  1. coloca numa página nova o código abaixo
  2. faz view source
  3. cola aqui o resultado.


		<?php
			  $sql = "SELECT * FROM palavra";
			  $execuar = mysql_query($sql) or die(mysql_error());


			  while ($reg = mysql_fetch_array($execuar))
			  {							
			  ?>

			 <option><?php echo $reg['palavraPort']?></option>

			  <?php
	   }
	  ?>

já agora... não tens nenhum erro de JS na consola?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

O Javascript não vai buscar nada à BD. É um linguagem client side. Corre no browser.

sim e não

java é uma linguagem client-side, mas bem à pouco tempo passou ser possível fazer este tipo de brincadeiras:

https://cookbooks.adobe.com/post_Store_data_in_the_HTML5_SQLite_database-19115.html

  • Voto 2

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
lsoares

Naquele contexto e de acordo que a afirmação que ele fez (se a leres bem) imperava eu dizer isso. Por vezes, em nome da simplificação e da aprendizagem, há que sacrificar o purismo.

Mas sim, já vi que estás a par ;)

De qualquer forma... o teu exemplo nem foi o melhor porque isso é uma BD sim mas ainda sim client side.

Um exemplo melhor seria o uso do Javascript em biliotecas server side como no CouchDB.

Mas é bem visto anyway ;)

PS. Suponho que queiras ter dito Javascript e não Java

  • Voto 1

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

Mas sim, já vi que estás a par ;)

De qualquer forma... o teu exemplo nem foi o melhor porque isso é uma BD sim mas ainda sim client side.

Um exemplo melhor seria o uso do Javascript em biliotecas server side como no CouchDB.

era um contra exemplo da afirmação, uma BD client-side manipulada com javascript

não era solução ao pedido no post

PS. Suponho que queiras ter dito Javascript e não Java

sim, é o que dá responder em várias secções do fórum ....


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
daniel_ffp

então faz assim.

  1. coloca numa página nova o código abaixo
  2. faz view source
  3. cola aqui o resultado.


		<?php
			  $sql = "SELECT * FROM palavra";
			  $execuar = mysql_query($sql) or die(mysql_error());


			  while ($reg = mysql_fetch_array($execuar))
			  {							
			  ?>

			 <option><?php echo $reg['palavraPort']?></option>

			  <?php
	   }
	  ?>

já agora... não tens nenhum erro de JS na consola?

Depois de colocar o código num ficheiro não me aparece nada na página. Isto com o código que pustas-te.

Com o meu código ele motra a combobox com os valores da bd so nao consigo fazer uma function javascript que quando ele muda-se me mostra-se a palavar traduzida que se encontra na base de dados

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

Com o meu código ele motra a combobox com os valores da bd so nao consigo fazer uma function javascript que quando ele muda-se me mostra-se a palavar traduzida que se encontra na base de dados

porque como te foi dito, javascript não comunica com a tua base de dados do lado do servidor.

tens agora que escolher

- mandar toda a informação para o cliente (mais simples mas pode se tornar pesado)

- pedir ao servidor a palavra traduzida a cada alteração do select (mais complicado, mas mais leve para o sistema)

depois de escolher, diz, que eu ou outro te apresentarão o que terás de fazer ou ler para resolver o teu problema


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
daniel_ffp

eu neste momento vou buscar os dados todos do dicionário e passo para o cliente por isso para já vou continuar dessa forma.

Se me poderem ajudar agradecia

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

Sim nessa parte eu so quero mostrar a palavraPort e dpois quando alterar é que quero que va buscar a palavra traduzida à bd

AJAX


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
lsoares

Como eu e o HappyHippyHippo dissemos, o browser não consegue ir à BD assim à toa...

Se quiseres ir pela solução A que ele propôs (mandar a BD toda para o cliente) tens de colocar os dados em algum lado....

Ou usas uma BD client side (+ complexo), ou usas o método data() do jQuery associando o resultado a cada item (palavra).

Mas para isso tens de aprender um pouco de jQuery primeiro.

Se só quiseres usar Javascript tens de criar um mapa (hashmap) que faz de dicionário.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
daniel_ffp

<?php

include('init.php');

?>

<!DOCTYPE html>
<html>
<head>
<script>
function palavra()
{

var mylist=document.getElementById("listaPalavra");

var idPalav=mylist.options[mylist.selectedIndex].value;

<?php
$alun= "<script>document.write(idPalav)</script>";
$sql = "SELECT * FROM palavra WHERE idPalavra='$alun'";
$execuar = mysql_query($sql) or die(mysql_error());
$reg = mysql_fetch_array($execuar);


?>
document.getElementById("pTrad").value="<?php echo $reg['palavraIng'] ?>";
}
</script>
</head>
<body>
<form name="form1" method="post">
	  <h1 align="center">Palavras:</h1>
	  <p align="center">
		<label for="listaPalavra"></label>
		<select name="Palavras" id="listaPalavra" onchange="palavra()">
	  <option></option>
	  <?php
	  $sql = "SELECT * FROM palavra";
	  $execuar = mysql_query($sql) or die(mysql_error());


	  while ($reg = mysql_fetch_array($execuar))
	  {				
	  ?>

  	   <option value="<?php echo $reg['IdPalavra']?>"><?php echo $reg['palavraPort']?></option>

  	  <?php
  	   }
	  ?>

   	 </select>
	  </p>
<p align="center"><input type="text" id="pTrad" size="50" readonly></p>
</form>
</body>

</html>

Eu tentei da seguinte forma mas ele nao realiza a parte do php dentro do javascript

Não dá para realizar assim

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

o problema de sempre ...

PHP : código executado no servidor de criação de conteúdo a ser enviado para o cliente

Javascript : código executado no browser(cliente) após recepção do conteúdo do servidor

+----------+              +------------------+
| Servidor |              | Browser(Cliente) |
|          |              |                  |
|  +-----+ |              |                  |
|  | PHP |<---- Pedido ---| +----+----------+|
|  |     |---- Resposta --->|HTML|Javascript||
|  +-----+ |              | +----+----------+|
+----------+              +------------------+

  • Voto 1

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.