Autor Tópico: [RESOLVIDO] - Passar variável js para variável sc  (Lida 1670 vezes)

Anderson Mamede

  • Iniciante
  • **
  • Mensagens: 84
    • andersonmamede.com.br
Re:Passar variável js para variável sc
« Responder #30 Online: Maio 18, 2016, 05:05:05 pm »

Para o que você quer fazer, você vai precisar usar ajax mesmo.

Utilize este código. Coloca ele todo na sua aplicação blank e teste.


Código: [Selecionar]

if(isSet($_GET["idproselect"]) && is_numeric($_GET["idproselect"])){
$idproselect = (int)$_GET["idproselect"];
$idconvite = null;

$check_sql = "SELECT convites_cotacao_idconvite"
. " FROM produto_cotado"
. " WHERE idproduto_cotado = " . $idproselect;
sc_lookup(rs, $check_sql);

if({rs} && isSet({rs[0][0]})){
$idconvite = {rs[0][0]};
}

die(json_encode(Array(
"idconvite" => $idconvite
)));
}


?>
<!DOCTYPE html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
(COLOCA TODO O CÓDIGO DO HEAD, MAS USA ESSA FUNÇÃO QUE ESTÁ ABAIXO; OBS: NÃO ESQUEÇA DE ADICIONAR O JQUERY!)
<script>
function mudavaluetr(objeto) {
var x = $(objeto).val();
var minhatr = $(objeto).closest("tr")[0];

$.getJSON("?idproselect="+x, function(response){
var idconvite = (response && response.idconvite) || null;

if(idconvite){
minhatr.dataset.idproselect = x;
minhatr.dataset.idconvite = idconvite;
}else{
// No row found
}
});
}
</script>
</head>
<body>(COLOCA TODO O CÓDIGO DO BODY AQUI)</body>
</html>
<?php

Marculino

  • Iniciante
  • **
  • Mensagens: 59
    • Email
Re:Passar variável js para variável sc
« Responder #31 Online: Maio 19, 2016, 11:41:10 am »

Para o que você quer fazer, você vai precisar usar ajax mesmo.

Utilize este código. Coloca ele todo na sua aplicação blank e teste.


Código: [Selecionar]

if(isSet($_GET["idproselect"]) && is_numeric($_GET["idproselect"])){
$idproselect = (int)$_GET["idproselect"];
$idconvite = null;

$check_sql = "SELECT convites_cotacao_idconvite"
. " FROM produto_cotado"
. " WHERE idproduto_cotado = " . $idproselect;
sc_lookup(rs, $check_sql);

if({rs} && isSet({rs[0][0]})){
$idconvite = {rs[0][0]};
}

die(json_encode(Array(
"idconvite" => $idconvite
)));
}


?>
<!DOCTYPE html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
(COLOCA TODO O CÓDIGO DO HEAD, MAS USA ESSA FUNÇÃO QUE ESTÁ ABAIXO; OBS: NÃO ESQUEÇA DE ADICIONAR O JQUERY!)
<script>
function mudavaluetr(objeto) {
var x = $(objeto).val();
var minhatr = $(objeto).closest("tr")[0];

$.getJSON("?idproselect="+x, function(response){
var idconvite = (response && response.idconvite) || null;

if(idconvite){
minhatr.dataset.idproselect = x;
minhatr.dataset.idconvite = idconvite;
}else{
// No row found
}
});
}
</script>
</head>
<body>(COLOCA TODO O CÓDIGO DO BODY AQUI)</body>
</html>
<?php

Muitíssimo Obrigado Anderson, funcionou direitinho para o que eu precisava.
Não querendo abusar muito, você poderia me explicar o que esta acontecendo?

1º você criou um if em sc para ver se existe idproselect e se ele é numérico e se for confirmado com true ele ira executar a consulta sc.
if(isSet($_GET["idproselect"]) && is_numeric($_GET["idproselect"])){
   $idproselect = (int)$_GET["idproselect"];
   $idconvite = null;
   
   $check_sql = "SELECT convites_cotacao_idconvite"
      . " FROM produto_cotado"
      . " WHERE idproduto_cotado = " . $idproselect;
   sc_lookup(rs, $check_sql);
   
   if({rs} && isSet({rs[0][0]})){
      $idconvite = {rs[0][0]};
   }
   //o que este comando faz? ele cria uma arquivo json?
   die(json_encode(Array(
      "idconvite" => $idconvite
   )));
}

Na função
function mudavaluetr(objeto) {
               //aqui tudo bem entendi
      var x = $(objeto).val();
      var minhatr = $(objeto).closest("tr")[0];
      
               //aqui não entendi, o que este conado faz?      
      $.getJSON("?idproselect="+x, function(response){
         var idconvite = (response && response.idconvite) || null;
               
         if(idconvite){
            minhatr.dataset.idproselect = x;
            minhatr.dataset.idconvite = idconvite;
         }else{
            // No row found
         }
      });
   }
para finalizar eu tenho que estudar json é isso?

Marculino

  • Iniciante
  • **
  • Mensagens: 59
    • Email
Re:Passar variável js para variável sc
« Responder #32 Online: Maio 19, 2016, 11:44:52 am »
Segue um código não testado, por isso passível a erros:

Criar aplicação blank appBlank:

Código: [Selecionar]
$_sql = "
SELECT
    convites_cotacao_idconvite
FROM
    produto_cotado
WHERE
    idproduto_cotado = {$_POST['IdProduto']}
";

sc_lookup(ds, $_sql);

if  (!empty($drs[0][0]))
{
    echo $drs[0][0];
}


Funções javascript:

Código: [Selecionar]
function ajaxSelect(IdProduto)
{
    $.post( "../appBlank/appBlank.php", {IdProduto})
    .done(function( data ) {
return data;
   });
}

function mudavaluetr(objeto,i) {
      var x = (objeto.value || objeto.options[objeto.selectedIndex].value);
      minhatr.dataset.idproselect=x;
  minhatr.dataset.idconvite=ajaxSelect(x);
   }


Haroldo obrigado por ter me atendido, a sua ideia me mostrou outro caminho de como usar arquivos externos no scriptcase junto com js, acabei fazendo primeiro do Anderson e logo mais irei estudar o que você mandou,  porem como não coloquei em pratica, estou em duvida em relaçãoao funcionamenteo, mas pode deixar que irei dar um retorno.
Mesmo assim muitíssimo obrigado.

Anderson Mamede

  • Iniciante
  • **
  • Mensagens: 84
    • andersonmamede.com.br
Re:[RESOLVIDO] - Passar variável js para variável sc
« Responder #33 Online: Maio 19, 2016, 04:30:56 pm »
Explico sim, Marculino:


Código: [Selecionar]

// * quando o usuário abrir a página, $_GET["idproselect"] vai estar vazio, logo, todo este bloco será ignorado;
// * mas quando a função mudavaluetr faz a requisição ajax para esse mesmo arquivo, ela envia o valor que o usuário
// selecionou, então $_GET["idproselect"] vai estar preenchido e esse bloco será executado;
// * portanto, esse bloco só será executado quando for uma requisição ajax e que tenha sido passado valor para o $_GET["idproselect"]
if(isSet($_GET["idproselect"]) && is_numeric($_GET["idproselect"])){
$idproselect = (int)$_GET["idproselect"];
$idconvite = null;

$check_sql = "SELECT convites_cotacao_idconvite"
. " FROM produto_cotado"
. " WHERE idproduto_cotado = " . $idproselect;
sc_lookup(rs, $check_sql);

// verifica se a consulta realmente retornou a informação
if({rs} && isSet({rs[0][0]})){
$idconvite = {rs[0][0]};
}

// * a função die interrompe a execução do script, dando um "echo" no parâmetro que foi passado à ela;
// * a função json_encode converte uma variável para o formato JSON (ou seja, uma string); para o parâmetro
// que foi passado neste caso, será retornado uma string assim: '{"idconvite":123}';
// * resumindo: o array será convertido para texto, o die vai dar um "echo" nesse texto e depois interromper o script;
// * e como é uma requisição ajax chamada pelo $.getJSON que está no javascript, essa string será transformada em um objeto javascript,
// e assim é possível utilizar o valor que está em idconvite
// * obs: JSON é um "texto" (string) em um formato específico, e é bastante usado para troca de informações entre aplicações;
// * obs2: o die é necessário para que a requisição não execute os comandos que estiverem depois dele, senão seria retornado também todo o HTML;
die(json_encode(Array(
"idconvite" => $idconvite
)));
}




Código: [Selecionar]

function mudavaluetr(objeto) {
var x = $(objeto).val();
var minhatr = $(objeto).closest("tr")[0];

// * o $.getJSON faz uma requisição ajax para um arquivo e joga o que esse arquivo retornar (o die/echo) na variável response;
// * o primeiro parâmetro é a página que vai receber a requisição, que nesse caso é a mesma que o usuário está (por isso que
// não tem nada antes do ?), mas adicionando o parâmetro "idproselect" via método GET;
// * o segundo parâmetro é uma função que recebe a resposta da requisição (ou seja, aquele die/json_encode), que neste caso é o JSON já
// convertido para objeto javascript novamente
$.getJSON("?idproselect="+x, function(response){
// * aqui, o response já é um objeto javascript contendo a resposta da requisição ajax, então já é possível acessar seus dados;
var idconvite = (response && response.idconvite) || null;

if(idconvite){
minhatr.dataset.idproselect = x;
minhatr.dataset.idconvite = idconvite;
}else{
// No row found
}
});
}


Dá para entender?


E é interessante você estudar sobre AJAX e JSON, entender quando e como utilizá-los, etc. Não é tão complexo quanto parece, e é uma mão na roda.