[RESOLVIDO] - Passar variável js para variável sc

Não conseguirei fazer com grid editavel porque aquela tabela é montada com referencia a duas tabelas diferente do banco, eu faço assim:

SELECT DISTINCT pc.id_produto,
p.nome,
c.idcotacao,
c.titulo,
c.data_incio,
c.data_fim,
cc.situacao,
pc.qtd,
pc.unidade_de_medida

			FROM cotacoes c
			INNER JOIN convites_cotacao cc
			ON cc.cotacoes_idcotacao = c.idcotacao
			INNER JOIN produto_cotado pc
			ON pc.convites_cotacao_idconvite = cc.idconvite
			INNER JOIN produtos p
			ON p.idproduto = pc.id_produto
			WHERE c.idcotacao =[idcotacao] and cc.situacao = 'Preenchida' 

depois disso para cada registro no meu campo que tem o select eu faço um consulta referindo a outra tabela diferente.
O que estou tentando fazer eu consigo em html sem usar o sc porem estava tentando usar os recursos do scriptcase. Pelo dificuldade que estou tendo acho que irei mesmo ter que fazer fora do scriptcase, terei que criar arquivo de conexão, fazer as minas consultas, em fim uma pagina fora do scriptcase.

Mas eu agradeço a colaboração de todos.

Não desista tão fácil das coisas…

Passa uma MP para o Haroldo Passos:
http://www.scriptcase.com.br/forum/index.php?action=profile;u=4087

Ele sabe usar JQuery Avançado com o SC, possivelmente ele pode resolver seu problema, mas use uma MP e veja uma consultoria com ele.

Jailton, muito obrigado pela dica, mandei um mp para o Haroldo, vou aguardar para ver se ele pode ajudar, eu tendo algum resultado positivo eu posto aqui para todos aprendermos

Não serviria gravar um cookie no javascript e depois ler no php ?

Opa flavio, eu nunca mexi com cookie, mas a minha pegunta é o seguinte:
A minha função js é esta, com o cookie eu consigo altera ele em js e usar ele logo em seguida? a minha pagina não esta sofrendo e nem pode fazer um reload.

passo a passo de como a função tem que funcionar:

1º - o cala clica no meu campo select e entra nesta função

function mudavaluetr(objeto,i) { //inicio da função
// 2º - aqui eu pego o valor da select e jogo em x
var x = (objeto.value || objeto.options[objeto.selectedIndex].value);
<?
3º - aqui eu tenho que pegar o valor de x que é uma variavel js e usar na minha select aqui abaixo que é comando do scriprcase
// Check for record
$check_sql = “SELECT convites_cotacao_idconvite”
. " FROM produto_cotado"
. " WHERE idproduto_cotado = ‘" . o x do js tem que chegar aqui. "’";
sc_lookup(rs, $check_sql);

     if (isset({rs[0][0]})){     // Row found
        ?>minhatr.dataset.idproselect=x;<?
          ?>minhatr.dataset.idconvite=<? echo {rs[0][0]};
     }else{     // No row found
     
     }
  ?>

} //fim da função

Você tem que usar ajax para fazer isso.

O que você quer é quando o usuário selecionar um fornecedor, alterar o valor de idconvite do tr daquele produto para um que está salvo no banco de dados? É isso?

isso mesmo, quando o cara escolher o fornecedor ele vai executar minha função e ela tem que fazer este passos:
1º - ele pegar o valor do campo select
2º ele passa este valor para a minha consulta que esta dentro da minha função
3º troca os data-sete da minha tr

a função esta ai
1º O cliente clicou no campo select e le vai chamar a função abaixo
function mudavaluetr(objeto,i) { //inicio da função
// 2º - aqui eu pego o valor da select e jogo em x
var x = (objeto.value || objeto.options[objeto.selectedIndex].value);
<?
3º - aqui eu tenho que pegar o valor de x que é uma variavel js e usar na minha select aqui abaixo que é comando do scriprcase
// Check for record
$check_sql = “SELECT convites_cotacao_idconvite”
. " FROM produto_cotado"
. " WHERE idproduto_cotado = ‘" . o x do js tem que chegar aqui. "’";
sc_lookup(rs, $check_sql);
//3º aqui eu atribuo o data set da mina tr confor o que o script case trouxe da minha consulta.
if (isset({rs[0][0]})){ // Row found
?>minhatr.dataset.idproselect=x;<?
?>minhatr.dataset.idconvite=<? echo {rs[0][0]};
}else{ // No row found

     }
  ?>

} //fim da função

Na verdade não, nem precisaria ser feito em blanck, a regra é eu conseguir olhar produto por produto qual fonecedor foi selecionado e depois colocar isso tudo em uma outra tabela.
Tentei fazer em consulta com botão rum, não consegui, tentei fazer em controle, mas não funciona porque os valores exibidos veem de varias tabelas.
Eu pensei no blank porque eu posso fazer o seguinte:
Quando o cara escolhe o fornecedo eu atribuo um data set da minha TR com o valor que ele selecionou e depois no botão que eu vou colocar para efetuar o pedido eu posso percorre minha tabela toda pegando os valores das minhas tr e fazendo o insert. isso da para fazer naturalmente em php e js.
Estou aberto a sugestões

Segue um código não testado, por isso passível a erros:

Criar aplicação blank appBlank:

$_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:

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);
   }

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.


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?

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.

Explico sim, Marculino:


// * 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
	)));
}


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.