Jump to content


Photo

Selecionar Combobox E Imprimir Em Textarea...


  • Faça o login para participar
23 replies to this topic

#1 willwalker

willwalker

    Turista

  • Usuários
  • 26 posts
  • Sexo:Não informado

Posted 02/04/2008, 23:13

Tenho registros em um banco MySQL que ficam muito grandes dentro de um combobox se eu faço um select no banco, preciso fazer com que ao selecionar o id do registro na combobox, ele imprima a celula solucao que contem os textos compridos dentro dessa tal textarea. Alguem pode me dar uma ajuda ? Nunca mexi com ajax, primeira vez que tenho que apelar pro ajax resolver meus problemas, sempre usei php, mas infelismente ele não faz isso que preciso...

Abraços Walker :D

#2 Tohma

Tohma

    12 Horas

  • Usuários
  • 202 posts
  • Sexo:Masculino
  • Localidade:Curitiba

Posted 03/04/2008, 08:43

ô xará ... tua dúvida é como usar o ajax ou como fazer essa funcionalidade no ajax? :rolleyes:
DBPlex dbplex.com.br

#3 willwalker

willwalker

    Turista

  • Usuários
  • 26 posts
  • Sexo:Não informado

Posted 03/04/2008, 11:20

Como fazer essa funcionalidade, porque eu tenho um sistema em php, e preciso que esse textarea seja preenchido com a celula solucao ao selecionar o id do registro nesse combobox, pelo php consigo pegar os registros mas se coloco para ele pegar a solução, o combobox fica enorme, porque é um texto e como ele coloca tudo em uma só linha, o combobox fica com mais de 2000 pixels... Se tu puder me ajudar a fazer isso agaradeceria muito, muito mesmo!

Edição feita por: willwalker, 03/04/2008, 11:35.


#4 Tohma

Tohma

    12 Horas

  • Usuários
  • 202 posts
  • Sexo:Masculino
  • Localidade:Curitiba

Posted 03/04/2008, 13:11

[codebox]<?
//php para gerar as options
?>
<select onchange="Ajuda(this.value)">
<option value="1">op 1</option>
<option value="2">op 2</option>
<option value="3">op 3</option>
</select>
<div id="resultado"></div>

<script type="text/javascript">

function ajaxInit() {

var xmlhttp;
//verifica se o browser tem suporte a ajax
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e) {
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(ex) {
try {
xmlhttp = new XMLHttpRequest();
}
catch(exc) {
alert("Esse browser não tem recursos para uso do Ajax. Por favor atualize seu Navegador!");
xmlhttp = null;
}
}
}
return xmlhttp;

}

function LoadAjax(obj) {
ajax = ajaxInit();
if (ajax) {
ajax.onreadystatechange = function () {
if(ajax.readyState == 1) {
document.getElementById(obj).innerHTML = 'carregando...';

}
if(ajax.readyState == 4 ) {
if(ajax.responseText) {
processTEXT(ajax.responseText,obj);
}
else {
//caso não seja um arquivo XML emite a mensagem abaixo
document.getElementById(obj).innerHTML = "Erro ao carregar!";
}
}
}
ajax.open('GET', "script_php_que_faz_a_consulta_no_bd.php", true);
ajax.send(null);
}
}

function processTEXT(retorno) {
document.getElementById("resultado").innerHTML = retorno;
}

//function q chama o ajax

function Ajuda(obj) {
LoadAjax(obj);

}

</script>[/codebox]


vc só precisa alterar o nome do script q faz a consulta no banco de dados para te trazer as resposta ...


qualquer coisa posta aí

flw
DBPlex dbplex.com.br

#5 willwalker

willwalker

    Turista

  • Usuários
  • 26 posts
  • Sexo:Não informado

Posted 04/04/2008, 02:15

Eu não entendi muito bem viu, tem como me dar uma mãosinha ?

Tentei fazer isso, mas na verdade eu só coloquei o que eu sei... =]

Como posso fazer com que o textarea que ainda não coloquei pegue a celula solucao ao selecionar o id do registro na combobox ?

<p><?php
if( $_SESSION['nivel'] == "adm" ){
$sQuery = "SELECT * FROM chamados ORDER BY codigo DESC";

$oPessoa = mysql_query($sQuery);
}else{
$sQuery = "SELECT * FROM chamados WHERE acessor='".$_SESSION['nom_usuario']."' ORDER BY codigo DESC";

$oPessoa = mysql_query($sQuery);
}
?>Tramita&ccedil;&atilde;o<br>
<select name="tramita" id="tramita">
<option value="na"></option><?php
while( $rs = mysql_fetch_array($oPessoa) )
{
$nome_print = $rs["id"];
echo "<option value='$nome_print'>$nome_print</option>";
}
?>
</select></p>

<div id="resultado"></div>

<script type="text/javascript">

function ajaxInit() {

var xmlhttp;
//verifica se o browser tem suporte a ajax
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e) {
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(ex) {
try {
xmlhttp = new XMLHttpRequest();
}
catch(exc) {
alert("Esse browser não tem recursos para uso do Ajax. Por favor atualize seu Navegador!");
xmlhttp = null;
}
}
}
return xmlhttp;

}

function LoadAjax(obj) {
ajax = ajaxInit();
if (ajax) {
ajax.onreadystatechange = function () {
if(ajax.readyState == 1) {
document.getElementById(obj).innerHTML = 'Carregando...';

}
if(ajax.readyState == 4 ) {
if(ajax.responseText) {
processTEXT(ajax.responseText,obj);
}
else {
//caso não seja um arquivo XML emite a mensagem abaixo
document.getElementById(obj).innerHTML = "Erro ao carregar!";
}
}
}
ajax.open('GET', "config.php", true);
ajax.send(null);
}
}

function processTEXT(retorno) {
document.getElementById("resultado").innerHTML = retorno;
}

//function q chama o ajax

function Ajuda(obj) {
LoadAjax(obj);

}

</script>



#6 Tohma

Tohma

    12 Horas

  • Usuários
  • 202 posts
  • Sexo:Masculino
  • Localidade:Curitiba

Posted 04/04/2008, 08:50

coloca no teu select assim

<select onchange = "Ajuda("id_da_textarea")">
... options...
</select>

e troca isto:

function processTEXT(retorno) {
document.getElementById("resultado").innerHTML = retorno;
}

por isto:

function processTEXT(retorno) {
document.getElementById("id_da_textarea").value = retorno;
}

qdo o ajax acabar de carregar ele chama esta funcao e passa pra ela o resultado obtido, uma vez passado a funcao define o valor da textarea
DBPlex dbplex.com.br

#7 willwalker

willwalker

    Turista

  • Usuários
  • 26 posts
  • Sexo:Não informado

Posted 04/04/2008, 10:44

Nessa parte o que tenho que fazer ? Esse arquivo que tu diz para fazer o GET é para fazer o que ? Consegui fazer com que ao selecionar o combobox, aparecesse a menssagem de erro no textarea...

ajax.open('GET', "config.php", true);

Um amigo me explicou que seria assim:

ajax.open('GET', "config.php?id=<?=.$_GET["id"]; ?>", true);

Mas o que conteria nesse arquivo php ? Tem que usar o xml tambem ? Ou só o arquivo php ? Porque eu li sobre ajax e ele usa arquivos xml que importam dados do banco criando um xml com o valores...

Edição feita por: willwalker, 04/04/2008, 10:59.


#8 Tohma

Tohma

    12 Horas

  • Usuários
  • 202 posts
  • Sexo:Masculino
  • Localidade:Curitiba

Posted 04/04/2008, 10:58

o ajax retorna tanto xml como texto ... depende do response ... e no caso deste codigo a resposta é text ... este arquivo php é o q vai fazer a pesquisa no banco de dados e te voltar o resultdo q vc quer ver na textarea

segue um codigo para melhor entendimento

<p><?php
if( $_SESSION['nivel'] == "adm" ){
$sQuery = "SELECT * FROM chamados ORDER BY codigo DESC";

$oPessoa = mysql_query($sQuery);
}else{
$sQuery = "SELECT * FROM chamados WHERE acessor='".$_SESSION['nom_usuario']."' ORDER BY codigo DESC";

$oPessoa = mysql_query($sQuery);
}
?>Tramita&ccedil;&atilde;o<br>
<select name="tramita" id="tramita" onchange="Ajuda('resultado',this.value)">
<option value="na"></option><?php
while( $rs = mysql_fetch_array($oPessoa) )
{
$nome_print = $rs["id"];
echo "<option value='$nome_print'>$nome_print</option>";
}
?>
</select></p>

<div id="resultado"></div>

<script type="text/javascript">

function ajaxInit() {

var xmlhttp;
//verifica se o browser tem suporte a ajax
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e) {
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(ex) {
try {
xmlhttp = new XMLHttpRequest();
}
catch(exc) {
alert("Esse browser não tem recursos para uso do Ajax. Por favor atualize seu Navegador!");
xmlhttp = null;
}
}
}
return xmlhttp;

}

function LoadAjax(obj, parametro) {
ajax = ajaxInit();
if (ajax) {
ajax.onreadystatechange = function () {
if(ajax.readyState == 1) {
document.getElementById(obj).innerHTML = 'Carregando...';

}
if(ajax.readyState == 4 ) {
if(ajax.responseText) {
processTEXT(ajax.responseText,obj);
}
else {
//caso não seja um arquivo XML emite a mensagem abaixo
document.getElementById(obj).innerHTML = "Erro ao carregar!";
}
}
}
ajax.open('GET', "config.php?q="+parametro, true);
ajax.send(null);
}
}

function processTEXT(retorno) {
document.getElementById("resultado").innerHTML = retorno;
}

//function q chama o ajax

function Ajuda(obj, parametro) {
LoadAjax(obj, parametro);

}

</script>

teu arquivo config.php ficaria assim:

$var = $_GET['q'];

<?
codigo php q faz a consulta

echo $resposta;
?>

qualquer coisa posta aí (y)
DBPlex dbplex.com.br

#9 willwalker

willwalker

    Turista

  • Usuários
  • 26 posts
  • Sexo:Não informado

Posted 04/04/2008, 12:57

Eu fiz assim, tá dando certo +/-, só não está pegando o texto xD...

[codebox]<p><?php
if( $_SESSION['nivel'] == "adm" ){
$sQuery = "SELECT * FROM chamados ORDER BY codigo DESC";

$oPessoa = mysql_query($sQuery);
}else{
$sQuery = "SELECT * FROM chamados
WHERE acessor='".$_SESSION['nom_usuario']."' ORDER BY codigo DESC";

$oPessoa = mysql_query($sQuery);
}
?>Tramita&ccedil;&atilde;o<br>
<select name="tramita" id="tramita" onchange="Ajuda(solucao)">
<option value="na"></option><?php
while( $rs = mysql_fetch_array($oPessoa) )
{
$nome_print = $rs["id"];
echo "<option value='$nome_print'>$nome_print</option>";
}
?>
</select></p>

<div id="solucao" align="center">
<textarea id="solucao" name="solucao" cols="35" rows="4"></textarea>
</div>

<script type="text/javascript">

function ajaxInit() {

var xmlhttp;
//verifica se o browser tem suporte a ajax
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e) {
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(ex) {
try {
xmlhttp = new XMLHttpRequest();
}
catch(exc) {
alert("Esse browser não tem recursos para uso do Ajax. Por favor atualize seu Navegador!");
xmlhttp = null;
}
}
}
return xmlhttp;

}

function LoadAjax(obj) {
ajax = ajaxInit();
if (ajax) {
ajax.onreadystatechange = function () {
if(ajax.readyState == 1) {
document.getElementById("solucao").innerHTML = 'Carregando...';

}
if(ajax.readyState == 4 ) {
if(ajax.responseText) {
processTEXT(ajax.responseText,obj);
}
else {
//caso não seja um arquivo XML emite a mensagem abaixo
document.getElementById("solucao").innerHTML = "Erro ao carregar!";
}
}
}
ajax.open('GET', "teste.php?id="+obj, true);
ajax.send(null);
}
}

function processTEXT(retorno) {
document.getElementById("solucao").innerHTML = retorno;
}

//function q chama o ajax

function Ajuda(obj) {
LoadAjax(obj);

}

</script>[/codebox]

[codebox]<?php
require("config.php");
require("layout.php");

$id = $_GET["id"];

$sql = mysql_query("SELECT * FROM chamados WHERE id='$id'");

while($row = mysql_fetch_array($sql))
{
echo $row ["solucao"];
}

?>[/codebox]

Edição feita por: willwalker, 04/04/2008, 12:58.


#10 Tohma

Tohma

    12 Horas

  • Usuários
  • 202 posts
  • Sexo:Masculino
  • Localidade:Curitiba

Posted 04/04/2008, 13:31

troca as aspas simples pelas duplas no valor das variáveis das opcoes


$nome_print = $rs["id"];
echo "<option value='$nome_print'>$nome_print</option>";
}
DBPlex dbplex.com.br

#11 willwalker

willwalker

    Turista

  • Usuários
  • 26 posts
  • Sexo:Não informado

Posted 04/04/2008, 14:24

Ae! Funcionou!!! Valew colega muito obrigado, me passa seu contato que em breve vou precisar de um programador em Ajax... Valew mesmo xD

Edição feita por: willwalker, 04/04/2008, 14:25.


#12 Tohma

Tohma

    12 Horas

  • Usuários
  • 202 posts
  • Sexo:Masculino
  • Localidade:Curitiba

Posted 04/04/2008, 14:42

q bom q deu certo ... (y) se me acha por aki

qualquer coisa posta aí ...


flw
DBPlex dbplex.com.br

#13 willwalker

willwalker

    Turista

  • Usuários
  • 26 posts
  • Sexo:Não informado

Posted 10/04/2008, 20:09

Aproveitando o mesmo tópico, queria fazer um formulário um pouco dinâmico, que verifica-se se quase todos os campos se estão preenchidos, e se o email escrito no input é um email válido... Dificil de fazer ? Vai uma imagem de exemplo:

Posted Image

#14 Tohma

Tohma

    12 Horas

  • Usuários
  • 202 posts
  • Sexo:Masculino
  • Localidade:Curitiba

Posted 10/04/2008, 20:50

nao é dificil não ... e vc nem precisa de ajax ... somente de javascript .... com o comando onchange


qualquer coisa posta aí


flw
DBPlex dbplex.com.br

#15 willwalker

willwalker

    Turista

  • Usuários
  • 26 posts
  • Sexo:Não informado

Posted 25/05/2008, 07:16

Dúvida de formulário novamente... Poderia criar um exemplo de uma vericação de informações de um banco em tempo real ? Igual aos foruns Invision Power, que verifica se o nickname é válido...




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq